日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python简单超级马里奥游戏下载_python 实现超级玛丽游戏

發布時間:2024/10/14 python 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python简单超级马里奥游戏下载_python 实现超级玛丽游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發需求

python 3.7+

pygame 1.9+

演示

項目地址

https://github.com/Mr-han11/PythonSuperMario-master

主要功能的代碼實現

玩家

__author__ = 'marble_xu'

import os

import json

import pygame as pg

from .. import setup, tools

from .. import constants as c

from ..components import powerup

class Player(pg.sprite.Sprite):

def __init__(self, player_name):

pg.sprite.Sprite.__init__(self)

self.player_name = player_name

self.load_data()

self.setup_timer()

self.setup_state()

self.setup_speed()

self.load_images()

if c.DEBUG:

self.right_frames = self.big_fire_frames[0]

self.left_frames = self.big_fire_frames[1]

self.big = True

self.fire = True

self.frame_index = 0

self.state = c.WALK

self.image = self.right_frames[self.frame_index]

self.rect = self.image.get_rect()

def restart(self):

'''restart after player is dead or go to next level'''

if self.dead:

self.dead = False

self.big = False

self.fire = False

self.set_player_image(self.small_normal_frames, 0)

self.right_frames = self.small_normal_frames[0]

self.left_frames = self.small_normal_frames[1]

self.state = c.STAND

def load_data(self):

player_file = str(self.player_name) + '.json'

file_path = os.path.join('source', 'data', 'player', player_file)

f = open(file_path)

self.player_data = json.load(f)

def setup_timer(self):

self.walking_timer = 0

self.death_timer = 0

self.flagpole_timer = 0

self.transition_timer = 0

self.hurt_invincible_timer = 0

self.invincible_timer = 0

self.last_fireball_time = 0

def setup_state(self):

self.facing_right = True

self.allow_jump = True

self.allow_fireball = True

self.dead = False

self.big = False

self.fire = False

self.hurt_invincible = False

self.invincible = False

self.crouching = False

def setup_speed(self):

speed = self.player_data[c.PLAYER_SPEED]

self.x_vel = 0

self.y_vel = 0

self.max_walk_vel = speed[c.MAX_WALK_SPEED]

self.max_run_vel = speed[c.MAX_RUN_SPEED]

self.max_y_vel = speed[c.MAX_Y_VEL]

self.walk_accel = speed[c.WALK_ACCEL]

self.run_accel = speed[c.RUN_ACCEL]

self.jump_vel = speed[c.JUMP_VEL]

self.gravity = c.GRAVITY

self.max_x_vel = self.max_walk_vel

self.x_accel = self.walk_accel

def load_images(self):

sheet = setup.GFX['mario_bros']

frames_list = self.player_data[c.PLAYER_FRAMES]

self.right_frames = []

self.left_frames = []

self.right_small_normal_frames = []

self.left_small_normal_frames = []

self.right_big_normal_frames = []

self.left_big_normal_frames = []

self.right_big_fire_frames = []

self.left_big_fire_frames = []

for name, frames in frames_list.items():

for frame in frames:

image = tools.get_image(sheet, frame['x'], frame['y'],

frame['width'], frame['height'],

c.BLACK, c.SIZE_MULTIPLIER)

left_image = pg.transform.flip(image, True, False)

if name == c.RIGHT_SMALL_NORMAL:

self.right_small_normal_frames.append(image)

self.left_small_normal_frames.append(left_image)

elif name == c.RIGHT_BIG_NORMAL:

self.right_big_normal_frames.append(image)

self.left_big_normal_frames.append(left_image)

elif name == c.RIGHT_BIG_FIRE:

self.right_big_fire_frames.append(image)

self.left_big_fire_frames.append(left_image)

self.small_normal_frames = [self.right_small_normal_frames,

self.left_small_normal_frames]

self.big_normal_frames = [self.right_big_normal_frames,

self.left_big_normal_frames]

self.big_fire_frames = [self.right_big_fire_frames,

self.left_big_fire_frames]

self.all_images = [self.right_small_normal_frames,

self.left_small_normal_frames,

self.right_big_normal_frames,

self.left_big_normal_frames,

self.right_big_fire_frames,

self.left_big_fire_frames]

self.right_frames = self.small_normal_frames[0]

self.left_frames = self.small_normal_frames[1]

def update(self, keys, game_info, fire_group):

self.current_time = game_info[c.CURRENT_TIME]

self.handle_state(keys, fire_group)

self.check_if_hurt_invincible()

self.check_if_invincible()

self.animation()

def handle_state(self, keys, fire_group):

if self.state == c.STAND:

self.standing(keys, fire_group)

elif self.state == c.WALK:

self.walking(keys, fire_group)

elif self.state == c.JUMP:

self.jumping(keys, fire_group)

elif self.state == c.FALL:

self.falling(keys, fire_group)

elif self.state == c.DEATH_JUMP:

self.jumping_to_death()

elif self.state == c.FLAGPOLE:

self.flag_pole_sliding()

elif self.state == c.WALK_AUTO:

self.walking_auto()

elif self.state == c.END_OF_LEVEL_FALL:

self.y_vel += self.gravity

elif self.state == c.IN_CASTLE:

self.frame_index = 0

elif self.state == c.SMALL_TO_BIG:

self.changing_to_big()

elif self.state == c.BIG_TO_SMALL:

self.changing_to_small()

elif self.state == c.BIG_TO_FIRE:

self.changing_to_fire()

elif self.state == c.DOWN_TO_PIPE:

self.y_vel = 1

self.rect.y += self.y_vel

elif self.state == c.UP_OUT_PIPE:

self.y_vel = -1

self.rect.y += self.y_vel

if self.rect.bottom < self.up_pipe_y:

self.state = c.STAND

def check_to_allow_jump(self, keys):

if not keys[tools.keybinding['jump']]:

self.allow_jump = True

def check_to_allow_fireball(self, keys):

if not keys[tools.keybinding['action']]:

self.allow_fireball = True

def standing(self, keys, fire_group):

self.check_to_allow_jump(keys)

self.check_to_allow_fireball(keys)

self.frame_index = 0

self.x_vel = 0

self.y_vel = 0

if keys[tools.keybinding['action']]:

if self.fire and self.allow_fireball:

self.shoot_fireball(fire_group)

if keys[tools.keybinding['down']]:

self.update_crouch_or_not(True)

if keys[tools.keybinding['left']]:

self.facing_right = False

self.update_crouch_or_not()

self.state = c.WALK

elif keys[tools.keybinding['right']]:

self.facing_right = True

self.update_crouch_or_not()

self.state = c.WALK

elif keys[tools.keybinding['jump']]:

if self.allow_jump:

self.state = c.JUMP

self.y_vel = self.jump_vel

if not keys[tools.keybinding['down']]:

self.update_crouch_or_not()

def update_crouch_or_not(self, isDown=False):

if not self.big:

self.crouching = True if isDown else False

return

if not isDown and not self.crouching:

return

self.crouching = True if isDown else False

frame_index = 7 if isDown else 0

bottom = self.rect.bottom

left = self.rect.x

if self.facing_right:

self.image = self.right_frames[frame_index]

else:

self.image = self.left_frames[frame_index]

self.rect = self.image.get_rect()

self.rect.bottom = bottom

self.rect.x = left

self.frame_index = frame_index

def walking(self, keys, fire_group):

self.check_to_allow_jump(keys)

self.check_to_allow_fireball(keys)

if self.frame_index == 0:

self.frame_index += 1

self.walking_timer = self.current_time

elif (self.current_time - self.walking_timer >

self.calculate_animation_speed()):

if self.frame_index < 3:

self.frame_index += 1

else:

self.frame_index = 1

self.walking_timer = self.current_time

if keys[tools.keybinding['action']]:

self.max_x_vel = self.max_run_vel

self.x_accel = self.run_accel

if self.fire and self.allow_fireball:

self.shoot_fireball(fire_group)

else:

self.max_x_vel = self.max_walk_vel

self.x_accel = self.walk_accel

if keys[tools.keybinding['jump']]:

if self.allow_jump:

self.state = c.JUMP

if abs(self.x_vel) > 4:

self.y_vel = self.jump_vel - .5

else:

self.y_vel = self.jump_vel

if keys[tools.keybinding['left']]:

self.facing_right = False

if self.x_vel > 0:

self.frame_index = 5

self.x_accel = c.SMALL_TURNAROUND

self.x_vel = self.cal_vel(self.x_vel, self.max_x_vel, self.x_accel, True)

elif keys[tools.keybinding['right']]:

self.facing_right = True

if self.x_vel < 0:

self.frame_index = 5

self.x_accel = c.SMALL_TURNAROUND

self.x_vel = self.cal_vel(self.x_vel, self.max_x_vel, self.x_accel)

else:

if self.facing_right:

if self.x_vel > 0:

self.x_vel -= self.x_accel

else:

self.x_vel = 0

self.state = c.STAND

else:

if self.x_vel < 0:

self.x_vel += self.x_accel

else:

self.x_vel = 0

self.state = c.STAND

def jumping(self, keys, fire_group):

""" y_vel value: positive is down, negative is up """

self.check_to_allow_fireball(keys)

self.allow_jump = False

self.frame_index = 4

self.gravity = c.JUMP_GRAVITY

self.y_vel += self.gravity

if self.y_vel >= 0 and self.y_vel < self.max_y_vel:

self.gravity = c.GRAVITY

self.state = c.FALL

if keys[tools.keybinding['right']]:

self.x_vel = self.cal_vel(self.x_vel, self.max_x_vel, self.x_accel)

elif keys[tools.keybinding['left']]:

self.x_vel = self.cal_vel(self.x_vel, self.max_x_vel, self.x_accel, True)

if not keys[tools.keybinding['jump']]:

self.gravity = c.GRAVITY

self.state = c.FALL

if keys[tools.keybinding['action']]:

if self.fire and self.allow_fireball:

self.shoot_fireball(fire_group)

def falling(self, keys, fire_group):

self.check_to_allow_fireball(keys)

self.y_vel = self.cal_vel(self.y_vel, self.max_y_vel, self.gravity)

if keys[tools.keybinding['right']]:

self.x_vel = self.cal_vel(self.x_vel, self.max_x_vel, self.x_accel)

elif keys[tools.keybinding['left']]:

self.x_vel = self.cal_vel(self.x_vel, self.max_x_vel, self.x_accel, True)

if keys[tools.keybinding['action']]:

if self.fire and self.allow_fireball:

self.shoot_fireball(fire_group)

def jumping_to_death(self):

if self.death_timer == 0:

self.death_timer = self.current_time

elif (self.current_time - self.death_timer) > 500:

self.rect.y += self.y_vel

self.y_vel += self.gravity

def cal_vel(self, vel, max_vel, accel, isNegative=False):

""" max_vel and accel must > 0 """

if isNegative:

new_vel = vel * -1

else:

new_vel = vel

if (new_vel + accel) < max_vel:

new_vel += accel

else:

new_vel = max_vel

if isNegative:

return new_vel * -1

else:

return new_vel

def calculate_animation_speed(self):

if self.x_vel == 0:

animation_speed = 130

elif self.x_vel > 0:

animation_speed = 130 - (self.x_vel * 13)

else:

animation_speed = 130 - (self.x_vel * 13 * -1)

return animation_speed

def shoot_fireball(self, powerup_group):

if (self.current_time - self.last_fireball_time) > 500:

self.allow_fireball = False

powerup_group.add(powerup.FireBall(self.rect.right,

self.rect.y, self.facing_right))

self.last_fireball_time = self.current_time

self.frame_index = 6

def flag_pole_sliding(self):

self.state = c.FLAGPOLE

self.x_vel = 0

self.y_vel = 5

if self.flagpole_timer == 0:

self.flagpole_timer = self.current_time

elif self.rect.bottom < 493:

if (self.current_time - self.flagpole_timer) < 65:

self.frame_index = 9

elif (self.current_time - self.flagpole_timer) < 130:

self.frame_index = 10

else:

self.flagpole_timer = self.current_time

elif self.rect.bottom >= 493:

self.frame_index = 10

def walking_auto(self):

self.max_x_vel = 5

self.x_accel = self.walk_accel

self.x_vel = self.cal_vel(self.x_vel, self.max_x_vel, self.x_accel)

if (self.walking_timer == 0 or (self.current_time - self.walking_timer) > 200):

self.walking_timer = self.current_time

elif (self.current_time - self.walking_timer >

self.calculate_animation_speed()):

if self.frame_index < 3:

self.frame_index += 1

else:

self.frame_index = 1

self.walking_timer = self.current_time

def changing_to_big(self):

timer_list = [135, 200, 365, 430, 495, 560, 625, 690, 755, 820, 885]

# size value 0:small, 1:middle, 2:big

size_list = [1, 0, 1, 0, 1, 2, 0, 1, 2, 0, 2]

frames = [(self.small_normal_frames, 0), (self.small_normal_frames, 7),

(self.big_normal_frames, 0)]

if self.transition_timer == 0:

self.big = True

self.change_index = 0

self.transition_timer = self.current_time

elif (self.current_time - self.transition_timer) > timer_list[self.change_index]:

if (self.change_index + 1) >= len(timer_list):

# player becomes big

self.transition_timer = 0

self.set_player_image(self.big_normal_frames, 0)

self.state = c.WALK

self.right_frames = self.right_big_normal_frames

self.left_frames = self.left_big_normal_frames

else:

frame, frame_index = frames[size_list[self.change_index]]

self.set_player_image(frame, frame_index)

self.change_index += 1

def changing_to_small(self):

timer_list = [265, 330, 395, 460, 525, 590, 655, 720, 785, 850, 915]

# size value 0:big, 1:middle, 2:small

size_list = [0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]

frames = [(self.big_normal_frames, 4), (self.big_normal_frames, 8),

(self.small_normal_frames, 8)]

if self.transition_timer == 0:

self.change_index = 0

self.transition_timer = self.current_time

elif (self.current_time - self.transition_timer) > timer_list[self.change_index]:

if (self.change_index + 1) >= len(timer_list):

# player becomes small

self.transition_timer = 0

self.set_player_image(self.small_normal_frames, 0)

self.state = c.WALK

self.big = False

self.fire = False

self.hurt_invincible = True

self.right_frames = self.right_small_normal_frames

self.left_frames = self.left_small_normal_frames

else:

frame, frame_index = frames[size_list[self.change_index]]

self.set_player_image(frame, frame_index)

self.change_index += 1

def changing_to_fire(self):

timer_list = [65, 195, 260, 325, 390, 455, 520, 585, 650, 715, 780, 845, 910, 975]

# size value 0:fire, 1:big green, 2:big red, 3:big black

size_list = [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1]

frames = [(self.big_fire_frames, 3), (self.big_normal_frames, 3),

(self.big_fire_frames, 3), (self.big_normal_frames, 3)]

if self.transition_timer == 0:

self.change_index = 0

self.transition_timer = self.current_time

elif (self.current_time - self.transition_timer) > timer_list[self.change_index]:

if (self.change_index + 1) >= len(timer_list):

# player becomes fire

self.transition_timer = 0

self.set_player_image(self.big_fire_frames, 3)

self.fire = True

self.state = c.WALK

self.right_frames = self.right_big_fire_frames

self.left_frames = self.left_big_fire_frames

else:

frame, frame_index = frames[size_list[self.change_index]]

self.set_player_image(frame, frame_index)

self.change_index += 1

def set_player_image(self, frames, frame_index):

self.frame_index = frame_index

if self.facing_right:

self.right_frames = frames[0]

self.image = frames[0][frame_index]

else:

self.left_frames = frames[1]

self.image = frames[1][frame_index]

bottom = self.rect.bottom

centerx = self.rect.centerx

self.rect = self.image.get_rect()

self.rect.bottom = bottom

self.rect.centerx = centerx

def check_if_hurt_invincible(self):

if self.hurt_invincible:

if self.hurt_invincible_timer == 0:

self.hurt_invincible_timer = self.current_time

self.hurt_invincible_timer2 = self.current_time

elif (self.current_time - self.hurt_invincible_timer) < 2000:

if (self.current_time - self.hurt_invincible_timer2) < 35:

self.image.set_alpha(0)

elif (self.current_time - self.hurt_invincible_timer2) < 70:

self.image.set_alpha(255)

self.hurt_invincible_timer2 = self.current_time

else:

self.hurt_invincible = False

self.hurt_invincible_timer = 0

for frames in self.all_images:

for image in frames:

image.set_alpha(255)

def check_if_invincible(self):

if self.invincible:

if self.invincible_timer == 0:

self.invincible_timer = self.current_time

self.invincible_timer2 = self.current_time

elif (self.current_time - self.invincible_timer) < 10000:

if (self.current_time - self.invincible_timer2) < 35:

self.image.set_alpha(0)

elif (self.current_time - self.invincible_timer2) < 70:

self.image.set_alpha(255)

self.invincible_timer2 = self.current_time

elif (self.current_time - self.invincible_timer) < 12000:

if (self.current_time - self.invincible_timer2) < 100:

self.image.set_alpha(0)

elif (self.current_time - self.invincible_timer2) < 200:

self.image.set_alpha(255)

self.invincible_timer2 = self.current_time

else:

self.invincible = False

self.invincible_timer = 0

for frames in self.all_images:

for image in frames:

image.set_alpha(255)

def animation(self):

if self.facing_right:

self.image = self.right_frames[self.frame_index]

else:

self.image = self.left_frames[self.frame_index]

def start_death_jump(self, game_info):

self.dead = True

self.y_vel = -11

self.gravity = .5

self.frame_index = 6

self.state = c.DEATH_JUMP

敵人

__author__ = 'marble_xu'

import math

import pygame as pg

from .. import setup, tools

from .. import constants as c

ENEMY_SPEED = 1

def create_enemy(item, level):

dir = c.LEFT if item['direction'] == 0 else c.RIGHT

color = item[c.COLOR]

if c.ENEMY_RANGE in item:

in_range = item[c.ENEMY_RANGE]

range_start = item['range_start']

range_end = item['range_end']

else:

in_range = False

range_start = range_end = 0

if item['type'] == c.ENEMY_TYPE_GOOMBA:

sprite = Goomba(item['x'], item['y'], dir, color,

in_range, range_start, range_end)

elif item['type'] == c.ENEMY_TYPE_KOOPA:

sprite = Koopa(item['x'], item['y'], dir, color,

in_range, range_start, range_end)

elif item['type'] == c.ENEMY_TYPE_FLY_KOOPA:

isVertical = False if item['is_vertical'] == 0 else True

sprite = FlyKoopa(item['x'], item['y'], dir, color,

in_range, range_start, range_end, isVertical)

elif item['type'] == c.ENEMY_TYPE_PIRANHA:

sprite = Piranha(item['x'], item['y'], dir, color,

in_range, range_start, range_end)

elif item['type'] == c.ENEMY_TYPE_FIRE_KOOPA:

sprite = FireKoopa(item['x'], item['y'], dir, color,

in_range, range_start, range_end, level)

elif item['type'] == c.ENEMY_TYPE_FIRESTICK:

'''use a number of fireballs to stimulate a firestick'''

sprite = []

num = item['num']

center_x, center_y = item['x'], item['y']

for i in range(num):

radius = i * 21 # 8 * 2.69 = 21

sprite.append(FireStick(center_x, center_y, dir, color,

radius))

return sprite

class Enemy(pg.sprite.Sprite):

def __init__(self):

pg.sprite.Sprite.__init__(self)

def setup_enemy(self, x, y, direction, name, sheet, frame_rect_list,

in_range, range_start, range_end, isVertical=False):

self.frames = []

self.frame_index = 0

self.animate_timer = 0

self.gravity = 1.5

self.state = c.WALK

self.name = name

self.direction = direction

self.load_frames(sheet, frame_rect_list)

self.image = self.frames[self.frame_index]

self.rect = self.image.get_rect()

self.rect.x = x

self.rect.bottom = y

self.in_range = in_range

self.range_start = range_start

self.range_end = range_end

self.isVertical = isVertical

self.set_velocity()

self.death_timer = 0

def load_frames(self, sheet, frame_rect_list):

for frame_rect in frame_rect_list:

self.frames.append(tools.get_image(sheet, *frame_rect,

c.BLACK, c.SIZE_MULTIPLIER))

def set_velocity(self):

if self.isVertical:

self.x_vel = 0

self.y_vel = ENEMY_SPEED

else:

self.x_vel = ENEMY_SPEED *-1 if self.direction == c.LEFT else ENEMY_SPEED

self.y_vel = 0

def update(self, game_info, level):

self.current_time = game_info[c.CURRENT_TIME]

self.handle_state()

self.animation()

self.update_position(level)

def handle_state(self):

if (self.state == c.WALK or

self.state == c.FLY):

self.walking()

elif self.state == c.FALL:

self.falling()

elif self.state == c.JUMPED_ON:

self.jumped_on()

elif self.state == c.DEATH_JUMP:

self.death_jumping()

elif self.state == c.SHELL_SLIDE:

self.shell_sliding()

elif self.state == c.REVEAL:

self.revealing()

def walking(self):

if (self.current_time - self.animate_timer) > 125:

if self.direction == c.RIGHT:

if self.frame_index == 4:

self.frame_index += 1

elif self.frame_index == 5:

self.frame_index = 4

else:

if self.frame_index == 0:

self.frame_index += 1

elif self.frame_index == 1:

self.frame_index = 0

self.animate_timer = self.current_time

def falling(self):

if self.y_vel < 10:

self.y_vel += self.gravity

def jumped_on(self):

pass

def death_jumping(self):

self.rect.y += self.y_vel

self.rect.x += self.x_vel

self.y_vel += self.gravity

if self.rect.y > c.SCREEN_HEIGHT:

self.kill()

def shell_sliding(self):

if self.direction == c.RIGHT:

self.x_vel = 10

else:

self.x_vel = -10

def revealing(self):

pass

def start_death_jump(self, direction):

self.y_vel = -8

self.x_vel = 2 if direction == c.RIGHT else -2

self.gravity = .5

self.frame_index = 3

self.state = c.DEATH_JUMP

def animation(self):

self.image = self.frames[self.frame_index]

def update_position(self, level):

self.rect.x += self.x_vel

self.check_x_collisions(level)

if self.in_range and self.isVertical:

if self.rect.y < self.range_start:

self.rect.y = self.range_start

self.y_vel = ENEMY_SPEED

elif self.rect.bottom > self.range_end:

self.rect.bottom = self.range_end

self.y_vel = -1 * ENEMY_SPEED

self.rect.y += self.y_vel

if (self.state != c.DEATH_JUMP and

self.state != c.FLY):

self.check_y_collisions(level)

if self.rect.x <= 0:

self.kill()

elif self.rect.y > (level.viewport.bottom):

self.kill()

def check_x_collisions(self, level):

if self.in_range and not self.isVertical:

if self.rect.x < self.range_start:

self.rect.x = self.range_start

self.change_direction(c.RIGHT)

elif self.rect.right > self.range_end:

self.rect.right = self.range_end

self.change_direction(c.LEFT)

else:

collider = pg.sprite.spritecollideany(self, level.ground_step_pipe_group)

if collider:

if self.direction == c.RIGHT:

self.rect.right = collider.rect.left

self.change_direction(c.LEFT)

elif self.direction == c.LEFT:

self.rect.left = collider.rect.right

self.change_direction(c.RIGHT)

if self.state == c.SHELL_SLIDE:

enemy = pg.sprite.spritecollideany(self, level.enemy_group)

if enemy:

level.update_score(100, enemy, 0)

level.move_to_dying_group(level.enemy_group, enemy)

enemy.start_death_jump(self.direction)

def change_direction(self, direction):

self.direction = direction

if self.direction == c.RIGHT:

self.x_vel = ENEMY_SPEED

if self.state == c.WALK or self.state == c.FLY:

self.frame_index = 4

else:

self.x_vel = ENEMY_SPEED * -1

if self.state == c.WALK or self.state == c.FLY:

self.frame_index = 0

def check_y_collisions(self, level):

# decrease runtime delay: when enemey is on the ground, don't check brick and box

if self.rect.bottom >= c.GROUND_HEIGHT:

sprite_group = level.ground_step_pipe_group

else:

sprite_group = pg.sprite.Group(level.ground_step_pipe_group,

level.brick_group, level.box_group)

sprite = pg.sprite.spritecollideany(self, sprite_group)

if sprite and sprite.name != c.MAP_SLIDER:

if self.rect.top <= sprite.rect.top:

self.rect.bottom = sprite.rect.y

self.y_vel = 0

self.state = c.WALK

level.check_is_falling(self)

class Goomba(Enemy):

def __init__(self, x, y, direction, color, in_range,

range_start, range_end, name=c.GOOMBA):

Enemy.__init__(self)

frame_rect_list = self.get_frame_rect(color)

self.setup_enemy(x, y, direction, name, setup.GFX[c.ENEMY_SHEET],

frame_rect_list, in_range, range_start, range_end)

# dead jump image

self.frames.append(pg.transform.flip(self.frames[2], False, True))

# right walk images

self.frames.append(pg.transform.flip(self.frames[0], True, False))

self.frames.append(pg.transform.flip(self.frames[1], True, False))

def get_frame_rect(self, color):

if color == c.COLOR_TYPE_GREEN:

frame_rect_list = [(0, 34, 16, 16), (30, 34, 16, 16),

(61, 30, 16, 16)]

else:

frame_rect_list = [(0, 4, 16, 16), (30, 4, 16, 16),

(61, 0, 16, 16)]

return frame_rect_list

def jumped_on(self):

self.x_vel = 0

self.frame_index = 2

if self.death_timer == 0:

self.death_timer = self.current_time

elif (self.current_time - self.death_timer) > 500:

self.kill()

class Koopa(Enemy):

def __init__(self, x, y, direction, color, in_range,

range_start, range_end, name=c.KOOPA):

Enemy.__init__(self)

frame_rect_list = self.get_frame_rect(color)

self.setup_enemy(x, y, direction, name, setup.GFX[c.ENEMY_SHEET],

frame_rect_list, in_range, range_start, range_end)

# dead jump image

self.frames.append(pg.transform.flip(self.frames[2], False, True))

# right walk images

self.frames.append(pg.transform.flip(self.frames[0], True, False))

self.frames.append(pg.transform.flip(self.frames[1], True, False))

def get_frame_rect(self, color):

if color == c.COLOR_TYPE_GREEN:

frame_rect_list = [(150, 0, 16, 24), (180, 0, 16, 24),

(360, 5, 16, 15)]

elif color == c.COLOR_TYPE_RED:

frame_rect_list = [(150, 30, 16, 24), (180, 30, 16, 24),

(360, 35, 16, 15)]

else:

frame_rect_list = [(150, 60, 16, 24), (180, 60, 16, 24),

(360, 65, 16, 15)]

return frame_rect_list

def jumped_on(self):

self.x_vel = 0

self.frame_index = 2

x = self.rect.x

bottom = self.rect.bottom

self.rect = self.frames[self.frame_index].get_rect()

self.rect.x = x

self.rect.bottom = bottom

self.in_range = False

class FlyKoopa(Enemy):

def __init__(self, x, y, direction, color, in_range,

range_start, range_end, isVertical, name=c.FLY_KOOPA):

Enemy.__init__(self)

frame_rect_list = self.get_frame_rect(color)

self.setup_enemy(x, y, direction, name, setup.GFX[c.ENEMY_SHEET],

frame_rect_list, in_range, range_start, range_end, isVertical)

# dead jump image

self.frames.append(pg.transform.flip(self.frames[2], False, True))

# right walk images

self.frames.append(pg.transform.flip(self.frames[0], True, False))

self.frames.append(pg.transform.flip(self.frames[1], True, False))

self.state = c.FLY

def get_frame_rect(self, color):

if color == c.COLOR_TYPE_GREEN:

frame_rect_list = [(90, 0, 16, 24), (120, 0, 16, 24),

(330, 5, 16, 15)]

else:

frame_rect_list = [(90, 30, 16, 24), (120, 30, 16, 24),

(330, 35, 16, 15)]

return frame_rect_list

def jumped_on(self):

self.x_vel = 0

self.frame_index = 2

x = self.rect.x

bottom = self.rect.bottom

self.rect = self.frames[self.frame_index].get_rect()

self.rect.x = x

self.rect.bottom = bottom

self.in_range = False

self.isVertical = False

class FireKoopa(Enemy):

def __init__(self, x, y, direction, color, in_range,

range_start, range_end, level, name=c.FIRE_KOOPA):

Enemy.__init__(self)

frame_rect_list = [(2, 210, 32, 32), (42, 210, 32, 32),

(82, 210, 32, 32), (122, 210, 32, 32)]

self.setup_enemy(x, y, direction, name, setup.GFX[c.ENEMY_SHEET],

frame_rect_list, in_range, range_start, range_end)

# right walk images

self.frames.append(pg.transform.flip(self.frames[0], True, False))

self.frames.append(pg.transform.flip(self.frames[1], True, False))

self.frames.append(pg.transform.flip(self.frames[2], True, False))

self.frames.append(pg.transform.flip(self.frames[3], True, False))

self.x_vel = 0

self.gravity = 0.3

self.level = level

self.fire_timer = 0

self.jump_timer = 0

def load_frames(self, sheet, frame_rect_list):

for frame_rect in frame_rect_list:

self.frames.append(tools.get_image(sheet, *frame_rect,

c.BLACK, c.BRICK_SIZE_MULTIPLIER))

def walking(self):

if (self.current_time - self.animate_timer) > 250:

if self.direction == c.RIGHT:

self.frame_index += 1

if self.frame_index > 7:

self.frame_index = 4

else:

self.frame_index += 1

if self.frame_index > 3:

self.frame_index = 0

self.animate_timer = self.current_time

self.shoot_fire()

if self.should_jump():

self.y_vel = -7

def falling(self):

if self.y_vel < 7:

self.y_vel += self.gravity

self.shoot_fire()

def should_jump(self):

if (self.rect.x - self.level.player.rect.x) < 400:

if (self.current_time - self.jump_timer) > 2500:

self.jump_timer = self.current_time

return True

return False

def shoot_fire(self):

if (self.current_time - self.fire_timer) > 3000:

self.fire_timer = self.current_time

self.level.enemy_group.add(Fire(self.rect.x, self.rect.bottom-20, self.direction))

class Fire(Enemy):

def __init__(self, x, y, direction, name=c.FIRE):

Enemy.__init__(self)

frame_rect_list = [(101, 253, 23, 8), (131, 253, 23, 8)]

in_range, range_start, range_end = False, 0, 0

self.setup_enemy(x, y, direction, name, setup.GFX[c.ENEMY_SHEET],

frame_rect_list, in_range, range_start, range_end)

# right images

self.frames.append(pg.transform.flip(self.frames[0], True, False))

self.frames.append(pg.transform.flip(self.frames[1], True, False))

self.state = c.FLY

self.x_vel = 5 if self.direction == c.RIGHT else -5

def check_x_collisions(self, level):

sprite_group = pg.sprite.Group(level.ground_step_pipe_group,

level.brick_group, level.box_group)

sprite = pg.sprite.spritecollideany(self, sprite_group)

if sprite:

self.kill()

def start_death_jump(self, direction):

self.kill()

class Piranha(Enemy):

def __init__(self, x, y, direction, color, in_range,

range_start, range_end, name=c.PIRANHA):

Enemy.__init__(self)

frame_rect_list = self.get_frame_rect(color)

self.setup_enemy(x, y, direction, name, setup.GFX[c.ENEMY_SHEET],

frame_rect_list, in_range, range_start, range_end)

self.state = c.REVEAL

self.y_vel = 1

self.wait_timer = 0

self.group = pg.sprite.Group()

self.group.add(self)

def get_frame_rect(self, color):

if color == c.COLOR_TYPE_GREEN:

frame_rect_list = [(390, 30, 16, 24), (420, 30, 16, 24)]

else:

frame_rect_list = [(390, 60, 16, 24), (420, 60, 16, 24)]

return frame_rect_list

def revealing(self):

if (self.current_time - self.animate_timer) > 250:

if self.frame_index == 0:

self.frame_index += 1

elif self.frame_index == 1:

self.frame_index = 0

self.animate_timer = self.current_time

def update_position(self, level):

if self.check_player_is_on(level):

pass

else:

if self.rect.y < self.range_start:

self.rect.y = self.range_start

self.y_vel = 1

elif self.rect.bottom > self.range_end:

if self.wait_timer == 0:

self.wait_timer = self.current_time

elif (self.current_time - self.wait_timer) < 3000:

return

else:

self.wait_timer = 0

self.rect.bottom = self.range_end

self.y_vel = -1

self.rect.y += self.y_vel

def check_player_is_on(self, level):

result = False

self.rect.y -= 5

sprite = pg.sprite.spritecollideany(level.player, self.group)

if sprite:

result = True

self.rect.y += 5

return result

def start_death_jump(self, direction):

self.kill()

class FireStick(pg.sprite.Sprite):

def __init__(self, center_x, center_y, direction, color, radius, name=c.FIRESTICK):

'''the firestick will rotate around the center of a circle'''

pg.sprite.Sprite.__init__(self)

self.frames = []

self.frame_index = 0

self.animate_timer = 0

self.name = name

rect_list = [(96, 144, 8, 8), (104, 144, 8, 8),

(96, 152, 8, 8), (104, 152, 8, 8)]

self.load_frames(setup.GFX[c.ITEM_SHEET], rect_list)

self.animate_timer = 0

self.image = self.frames[self.frame_index]

self.rect = self.image.get_rect()

self.rect.x = center_x - radius

self.rect.y = center_y

self.center_x = center_x

self.center_y = center_y

self.radius = radius

self.angle = 0

def load_frames(self, sheet, frame_rect_list):

for frame_rect in frame_rect_list:

self.frames.append(tools.get_image(sheet, *frame_rect,

c.BLACK, c.BRICK_SIZE_MULTIPLIER))

def update(self, game_info, level):

self.current_time = game_info[c.CURRENT_TIME]

if (self.current_time - self.animate_timer) > 100:

if self.frame_index < 3:

self.frame_index += 1

else:

self.frame_index = 0

self.animate_timer = self.current_time

self.image = self.frames[self.frame_index]

self.angle += 1

if self.angle == 360:

self.angle = 0

radian = math.radians(self.angle)

self.rect.x = self.center_x + math.sin(radian) * self.radius

self.rect.y = self.center_y + math.cos(radian) * self.radius

以上就是python 實現超級瑪麗游戲的詳細內容,更多關于python 超級瑪麗的資料請關注隨便開發網其它相關文章!

總結

以上是生活随笔為你收集整理的python简单超级马里奥游戏下载_python 实现超级玛丽游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

日本久久久久久 | 特黄特色特刺激视频免费播放 | 久久精品国产一区二区电影 | 波多野结衣在线视频免费观看 | 国产午夜精品一区二区三区在线观看 | 一区二区三区高清在线观看 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 亚洲狠狠婷婷综合久久久 | 中文在线天堂资源 | 97色在线观看免费视频 | 精品久久久久久久久久久久久久久久久久 | 2022久久国产露脸精品国产 | 一级黄色在线免费观看 | 女人18片毛片90分钟 | 亚洲波多野结衣 | 激情综合久久 | 最新中文字幕 | 久久视频国产精品免费视频在线 | 日韩久久激情 | 久久国产精品精品国产色婷婷 | 欧美成人黄色片 | 色丁香色婷婷 | 日本在线观看视频一区 | 日韩视频图片 | 天天色天天综合网 | 日韩美女一级片 | 中文字幕av在线免费 | 一区二区三区中文字幕在线观看 | 亚洲国产成人精品电影在线观看 | 91网在线看| 黄色免费网站下载 | 精品免费久久久久久 | 日韩精品免费一线在线观看 | 日韩欧美视频免费在线观看 | 美女视频免费一区二区 | 国产一区观看 | 成人午夜免费剧场 | 精品久久久久久国产91 | 天天做天天爱天天综合网 | 91精品视频网站 | 美女视频黄频 | 久青草视频 | 中文字幕一区二区三区乱码在线 | 亚洲精品国产精品国自产 | 欧美a级在线免费观看 | 国产色综合 | 在线观看免费黄色 | 国产精品色 | 在线观看中文字幕dvd播放 | 中文字幕高清免费日韩视频在线 | 欧美另类xxxxx | 99r国产精品 | 国内精品久久久久影院一蜜桃 | 91女子私密保健养生少妇 | 麻豆av一区二区三区在线观看 | 成人精品福利 | 久久久久国产精品厨房 | 天天天干夜夜夜操 | 久久99精品国产麻豆婷婷 | 国产成人久久精品77777 | 天天射天天射天天射 | 美女在线免费视频 | 91人人射| 午夜视频在线观看网站 | 国产在线 一区二区三区 | 国产 视频 久久 | 8090yy亚洲精品久久 | www.久久久久| 人人爽人人爽人人爽学生一级 | 91视频下载 | 一区二区三区在线视频111 | 黄色www在线观看 | 99久久精品免费看国产麻豆 | 精品美女视频 | 久久久这里有精品 | 在线观看av中文字幕 | 992tv在线观看网站 | 中文字幕久久精品一区 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 久久看片网| 国产精品久久久久久久久久久不卡 | 日韩专区在线 | 三级黄色片子 | 天天做天天爱天天综合网 | 人人添人人澡人人澡人人人爽 | 国产亚洲精品久久久久久 | 天天干天天干天天干天天干天天干天天干 | 四虎永久免费在线观看 | 亚洲精品国产自产拍在线观看 | 午夜视频亚洲 | 日日天天干 | 九九视频一区 | www.五月天婷婷 | 中文字幕在线国产精品 | 视频 天天草| 亚洲涩涩色 | 国产精品三级视频 | 黄色不卡av | 人人射| 精品国产电影一区二区 | 伊人狠狠干 | 天天干天天天 | 国产一二三四在线观看视频 | 午夜免费在线观看 | 免费影视大全推荐 | 一 级 黄 色 片免费看的 | 国产日韩精品在线观看 | 国产精品97 | 日本三级不卡 | 在线视频 国产 日韩 | 国产精品免费小视频 | 在线中文字幕观看 | 亚洲另类久久 | 久久久免费观看 | 国产精品免费麻豆入口 | 高清不卡毛片 | 日韩精品高清视频 | 久久婷婷久久 | 一区精品久久 | 999一区二区三区 | 亚洲黄色app | 日本h视频在线观看 | 91成人免费在线 | 国产成本人视频在线观看 | 亚洲国产操 | 免费在线成人 | 色香天天 | 天天爱天天色 | 天天亚洲综合 | 国产精品久久久久久69 | 久久午夜精品影院一区 | 美女网站视频久久 | 亚洲福利精品 | 日日爽夜夜操 | 午夜av网站 | 亚洲综合网站在线观看 | 国产涩涩网站 | 国产精品成人久久久 | 久久国产精品偷 | 欧美日韩在线视频一区 | 一区二区三区在线看 | 男女啪啪免费网站 | 亚洲国产精品激情在线观看 | 伊人亚洲精品 | 国产黄免费看 | 成人黄色电影在线 | 免费黄在线观看 | 2023亚洲精品国偷拍自产在线 | 国产少妇在线观看 | 日韩欧美电影在线观看 | 四虎成人精品在永久免费 | 午夜丁香视频在线观看 | 久久综合狠狠 | 最近乱久中文字幕 | 婷婷午夜天 | 亚洲激情在线观看 | 三级黄色理论片 | 亚洲黄色在线观看 | 亚洲黄色av网址 | 精品国产一区二区三区在线观看 | 国产精品久久在线观看 | 免费观看一区二区三区视频 | 97av在线视频 | 欧美精品网站 | 国产精品久久久久久久久久久久午夜 | 黄色免费大全 | 最新国产精品视频 | 久久综合久久综合久久综合 | 精品国产乱码久久 | 国产精品99久久久久久人免费 | 最新免费av在线 | 天天做天天射 | 欧美男同视频网站 | 国产精品福利视频 | 欧美日本高清视频 | 国产精品一区二区三区观看 | 99免费精品 | 中文字幕国产一区 | 国产午夜影院 | 三级黄色a | 国产亚洲精品久久19p | 久久综合9988久久爱 | www.天天干| 中文字幕一区二区三区在线视频 | 亚洲四虎 | 国产亚洲午夜高清国产拍精品 | www.久久婷婷| 免费h精品视频在线播放 | 国产在线资源 | 成人精品国产免费网站 | 久久国产精品一二三区 | 国产精品成人一区二区三区吃奶 | 在线观看免费成人 | 国产精品高潮在线观看 | 亚洲精品免费在线播放 | 日本久久影视 | 免费色视频在线 | 伊人导航| 一二区av | 国产色中涩 | 欧美日韩精品在线观看 | 麻豆视频91 | 色综合久久精品 | 欧美va在线观看 | 99re6热在线精品视频 | 黄色a视频 | 免费日韩高清 | 99精品视频在线播放观看 | 欧美精品国产综合久久 | 97视频在线免费观看 | 青青久草在线 | 最新av网址在线观看 | 精品99免费视频 | 午夜精品电影一区二区在线 | 91精品无人成人www | 国产不卡一区二区视频 | 狠狠的操狠狠的干 | 久久九九视频 | 亚洲精品美女在线观看 | 99久久精品国产一区 | 久久男人影院 | 久久99精品久久久久久秒播蜜臀 | 91在线免费公开视频 | 亚洲 欧美 综合 在线 精品 | 91中文字幕网 | 国产精品综合av一区二区国产馆 | 色婷婷精品 | 国产精品久久久久999 | 久久久久久福利 | 国模精品在线 | 日韩精品免费一线在线观看 | 91精品办公室少妇高潮对白 | 国产成人三级在线播放 | 色综合久 | 国产视频资源在线观看 | 亚洲国内精品 | 国模一区二区三区四区 | 亚洲成人免费 | 99自拍视频在线观看 | 日日干日日 | 欧美日韩中文字幕在线视频 | 中文字幕免 | 婷婷免费在线视频 | 亚洲精品乱码久久久久久按摩 | 成人av电影免费观看 | 国产美女在线观看 | 奇米网444| 国产免费黄视频在线观看 | 超碰在线91 | 亚洲aaa级 | 精品国产中文字幕 | 久久国产一区二区三区 | 日韩av中文在线观看 | 中文理论片 | 精品国产一区二区三区免费 | 国产精品av免费在线观看 | 在线观看的a站 | 973理论片235影院9 | 一区二区网 | 久久无码av一区二区三区电影网 | 国产91全国探花系列在线播放 | 激情久久久 | 插婷婷 | 成人在线观看免费视频 | 麻豆免费看片 | 日本高清免费中文字幕 | 国产资源精品在线观看 | 国精产品满18岁在线 | 色婷婷激情 | 成人av中文字幕在线观看 | 五月天视频网站 | 精品久久久久久一区二区里番 | 国产h片在线观看 | 日韩欧美大片免费观看 | 一区 二区 精品 | 黄色av电影免费观看 | 亚洲精品一区二区三区在线观看 | 欧美视频在线二区 | 久久久久久久久久久久久久av | 日韩av伦理片 | 四虎国产精品永久在线国在线 | 天天干天天看 | 麻豆影视在线观看 | 最近日本mv字幕免费观看 | 免费成人在线视频网站 | 日日干天夜夜 | 精品国产1区 | 亚洲aⅴ久久精品 | 日韩在线观看高清 | 91精品啪在线观看国产 | 亚洲欧洲成人精品av97 | 日本中出在线观看 | 午夜精品久久久久久久久久 | 欧美在线视频不卡 | av手机在线播放 | 国产精品嫩草影视久久久 | 91丨九色丨国产在线 | 欧美精品在线观看 | 黄色一级免费电影 | 国产美女视频免费观看的网站 | 国产成人在线免费观看 | 97色视频在线| 激情视频一区二区三区 | 欧美日韩国产在线一区 | 日韩av一区在线观看 | 日韩一级片观看 | 久久免费成人网 | 色综合久久久久久久久五月 | 99色| 久草免费电影 | 久久在线观看视频 | 99精品久久99久久久久 | 欧美日韩一区二区三区在线观看视频 | 97精品伊人 | 国产在线精品福利 | 久久99国产精品自在自在app | 亚洲成人欧美 | 亚洲 欧美日韩 国产 中文 | 亚洲精品免费播放 | 808电影| 亚洲激情p | 99人久久精品视频最新地址 | 色网站在线 | 欧美不卡视频在线 | 国产高清免费视频 | 天天婷婷 | 日本公妇在线观看 | 久久综合综合久久综合 | 日韩综合第一页 | 在线观看av小说 | 韩国av免费观看 | 日韩欧美久久 | 久久草草影视免费网 | 91视频91蝌蚪 | 欧美大码xxxx| 精品国产一区二区三区男人吃奶 | 精品人妖videos欧美人妖 | 最新av免费 | 伊人成人久久 | 国产精品免费在线播放 | 亚洲最大的av网站 | 亚洲成a人片在线www | 久久久久久久av | 青青色影院 | 日日天天 | 精品嫩模福利一区二区蜜臀 | 丝袜精品视频 | 久久久久久久久久久久久国产精品 | 在线观看一区二区精品 | 日韩免费观看av | 国产精品综合av一区二区国产馆 | 欧美成人h版 | 亚洲精品午夜久久久 | 亚洲日韩精品欧美一区二区 | 日韩电影在线观看一区二区 | 97超碰在线久草超碰在线观看 | 国产一区黄色 | 久久理论电影网 | 在线观av| 国产一区二区三区免费在线观看 | 在线观看av网 | 国产乱对白刺激视频不卡 | 视频在线观看国产 | 亚洲免费小视频 | 亚洲一区日韩精品 | 久久久精品国产一区二区三区 | 天天干夜夜夜 | 天天草天天干天天射 | 亚洲成人精品影院 | 国产黄色看片 | 久久久久久久久久久久久国产精品 | 久久最新视频 | 久草新在线 | 永久免费视频国产 | 永久免费看av | 国产精品国产三级国产aⅴ无密码 | 国产精品精品久久久久久 | 高清在线一区 | 人人干人人干人人干 | 人人干网 | 国产黄色美女 | 天天综合成人网 | 久久久久久久久久影院 | 久久久久久蜜桃一区二区 | 九九在线高清精品视频 | 人人插人人玩 | 四虎在线视频免费观看 | 开心激情综合网 | 深夜国产福利 | 欧美午夜精品久久久久久孕妇 | 欧美日韩高清不卡 | 中文在线亚洲 | 成人看片| 中文字幕韩在线第一页 | 成年人在线观看 | 日日草av | 五月婷婷视频在线 | 日韩免费看片 | 国产小视频免费在线观看 | 国产精品欧美久久久久无广告 | 欧美色插| 国产伦精品一区二区三区四区视频 | 激情久久伊人 | 亚洲一区av| 三上悠亚在线免费 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 五月天亚洲综合 | 国产精品99久久免费黑人 | 久久久久国产视频 | 最近久乱中文字幕 | 91视频在线免费下载 | 日韩和的一区二在线 | 欧美久久久久久久久久久 | 亚洲精品国产精品国自产在线 | 91最新在线 | 国产一区麻豆 | 中文字幕一二 | 久操视频在线免费看 | 亚洲欧美日韩在线一区二区 | 天天综合区 | www.色午夜.com | 免费手机黄色网址 | av播放在线 | 在线观看视频国产 | 91免费看黄| 精品中文字幕在线播放 | 五月天亚洲婷婷 | 91视频成人免费 | 日韩精品最新在线观看 | 精品99免费视频 | 黄色毛片观看 | 人人爽影院 | 国产精品久久久久久久午夜片 | 日本精品久久久久中文字幕 | 亚洲精品在线一区二区 | 亚洲乱码国产乱码精品天美传媒 | 免费色黄 | 久久精品影片 | 国产亚洲精品成人av久久影院 | 黄色av电影网 | 人人爱在线视频 | 久久久精品国产免费观看一区二区 | 亚洲欧美乱综合图片区小说区 | 狠狠的操你 | 亚洲精品视频在线观看免费视频 | 在线视频观看亚洲 | 久久久久久久久久久久亚洲 | 精品久久精品久久 | 欧美在线观看视频免费 | 亚洲成人免费观看 | 99久久久国产免费 | 久久精品影视 | 99久精品视频 | 成人免费观看网站 | 色综合久久久久久中文网 | 国产亚洲在线视频 | 国产成人一区二区三区在线观看 | 网站在线观看日韩 | 欧美91精品久久久久国产性生爱 | 在线影院 国内精品 | 蜜臀久久99精品久久久无需会员 | 亚洲精品午夜久久久久久久久久久 | 久久久男人的天堂 | 免费看黄色91 | 美女免费视频一区 | 综合色爱| 欧美在线视频一区二区三区 | 五月色综合 | 五月婷婷丁香网 | 超碰在线最新网址 | 免费黄色a级毛片 | 色www.| 2019精品手机国产品在线 | 97超碰免费| 婷婷五情天综123 | 91av短视频 | 婷婷色资源 | 亚洲手机av| 999在线观看视频 | 天天曰夜夜操 | 一区二区三区www | 久久兔费看a级 | 色婷婷97 | 91桃色国产在线播放 | 国产剧情在线一区 | 2019中文 | 精品久久久久久亚洲 | 好看的国产精品视频 | 国语精品免费视频 | 一区二区三区在线观看免费 | 久草在线观看资源 | 亚洲特级片| 国产亚洲精品无 | 精品一区二区久久久久久久网站 | 久久国产美女视频 | 色综合天天爱 | 国产精品99久久久久久久久 | 久在线 | av青草 | 亚洲综合精品在线 | 激情电影在线观看 | 亚洲精品欧美成人 | 欧美成人a在线 | 懂色av一区二区三区蜜臀 | 最近免费中文字幕大全高清10 | 免费看久久久 | 国产美腿白丝袜足在线av | 国产涩图 | 一二三区视频在线 | 国产精品免费观看视频 | 国内久久久久久 | 国产中文字幕av | 亚洲综合丁香 | 国产在线精品一区 | 91精品在线免费视频 | 特及黄色片 | 久久精品中文视频 | 国产黄a三级三级三级三级三级 | 国产精品久久久久久久久久久久冷 | 久久手机视频 | 中文字幕精品视频 | 亚洲精品小区久久久久久 | 日韩欧美在线中文字幕 | 88av网站| 久久久精品欧美 | 亚洲成a人片77777kkkk1在线观看 | 国产手机在线精品 | 日本动漫做毛片一区二区 | 精品999| 深爱激情久久 | 精品国产一区二区三区久久久久久 | 成人一级电影在线观看 | 精品一区二区在线免费观看 | 97色在线视频 | 五月婷婷影视 | 狠狠色噜噜狠狠 | 欧美 激情 国产 91 在线 | 中文字幕婷婷 | 久久8精品| 探花系列在线 | 四虎国产精品成人免费影视 | 国产一级不卡视频 | 婷婷5月激情5月 | 九九色综合 | 日本一区二区高清不卡 | 国产99久久久精品视频 | 中文字幕免 | 国产精品一区二区免费在线观看 | 99国产情侣在线播放 | 蜜臀av在线一区二区三区 | 欧美激情操 | 黄色在线观看免费 | 99久久婷婷国产精品综合 | 欧美日韩高清不卡 | 国内99视频| 色偷偷88欧美精品久久久 | 欧美激情精品久久久久 | 中文字幕在线视频精品 | 在线国产专区 | 欧美激情精品久久久久久 | 69av视频在线| 美女av在线免费 | 久久歪歪| 精品a在线 | 国产视频综合在线 | 中文在线亚洲 | 国产免费xvideos视频入口 | 午夜精品一区二区三区免费 | 欧美成人xxx | 夜夜爱av | 91av在线免费看 | 国产精品网址在线观看 | 99视频在线播放 | 中文字幕一区二区三区久久蜜桃 | 91成人免费电影 | 国产黄网站在线观看 | 在线观看国产一区二区 | 波多野结衣在线播放视频 | 久久综合桃花 | 波多野结衣在线观看一区 | 久久久影院官网 | 六月丁香在线观看 | 91手机电视 | 欧美日韩高清一区二区三区 | 在线观看免费 | 欧美日本三级 | 国产99久久久国产精品免费看 | 九九激情视频 | 日韩欧美成人网 | 国产精品久久久一区二区 | 手机成人免费视频 | 中文字幕在线观看免费 | 中文字幕电影高清在线观看 | 一级a性色生活片久久毛片波多野 | 日韩二区三区在线观看 | 在线观看日韩精品 | 国产一区二区三区四区在线 | 欧洲视频一区 | 免费中文字幕视频 | 91热在线| 色激情在线 | 久久久久99999 | 成人午夜影院在线观看 | 国产一级三级 | 中文字幕在线观看国产 | 91丨九色丨蝌蚪丨老版 | 中文字幕欧美三区 | 国产日韩亚洲 | 欧美精品久久久久久久久久丰满 | 亚洲aⅴ免费在线观看 | www91在线| 日韩特黄一级欧美毛片特黄 | 国产专区在线播放 | 精品久久精品久久 | 91自拍视频在线观看 | 成人a级网站 | 丁香久久久 | 狠狠干我 | 国产小视频国产精品 | 婷婷网站天天婷婷网站 | 久久婷婷丁香 | 国产成人精品一区二区三区福利 | 国产一区二区在线免费 | 国产不卡av在线 | 国产一级电影免费观看 | a级片在线播放 | 成人a级黄色片 | 狠狠色狠狠色综合日日92 | 免费在线观看国产黄 | 国产欧美精品一区二区三区四区 | 91麻豆精品国产91久久久无需广告 | 国产精品一区二区在线看 | 伊人久久国产 | 久色网 | 黄色福利视频网站 | 中文字幕日韩伦理 | aaa亚洲精品一二三区 | 人人插人人舔 | 日韩免费高清在线观看 | 狠狠做深爱婷婷综合一区 | av电影一区二区三区 | 国产黄色免费看 | 国产在线视频一区二区三区 | 久久久国产电影 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 欧美一二三区在线播放 | 国产日产精品一区二区三区四区的观看方式 | 久久国产精品免费一区二区三区 | 日韩精品视频免费看 | 狠狠撸电影 | 毛片网站在线看 | 亚洲一级电影 | 久草网在线观看 | 在线免费观看黄色 | 日韩精品一区二区三区免费观看 | 国内精品视频久久 | 亚洲一区二区三区精品在线观看 | 五月婷婷在线观看 | 91福利区一区二区三区 | 一二三区视频在线 | 国产成人在线综合 | 最新av电影网址 | 久久极品 | 色婷婷国产精品 | 欧美成人手机版 | 久草在线免费新视频 | 国产一级91 | 日韩av一区二区三区四区 | 欧美色就是色 | 成年人在线电影 | 亚欧日韩av | 国产综合婷婷 | 国产色在线视频 | 亚洲成人资源在线观看 | 国产精品免费一区二区三区 | 中文字幕视频网站 | 欧美视频99 | 一区二区中文字幕在线 | 超碰在线官网 | 色婷婷亚洲精品 | 婷婷综合av | 在线精品一区二区 | 中文字幕亚洲不卡 | 玖玖在线观看视频 | 99免费在线 | 精品国产视频一区 | 精品免费久久 | av五月婷婷 | 国产不卡av在线播放 | 国产专区精品 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产精品久久久久久久av大片 | 成人在线播放网站 | 亚洲精品在线观看视频 | 999久久国产 | 国内三级在线观看 | 久久综合桃花 | 狠狠色噜噜狠狠狠狠2022 | 中文字幕在线视频国产 | 婷婷 中文字幕 | 色视频网站免费观看 | 日韩在线免费小视频 | 色资源中文字幕 | 狠狠干我| 狠狠操操| 久久视频在线观看 | 天天操天天操天天 | 丁香色婷 | 久久久久久久久久久久久国产精品 | 国产免费资源 | 91精品久久久久久综合乱菊 | 久久久久久97三级 | 欧美成人h版 | 91精品国产成人观看 | 日韩专区在线播放 | 91九色在线 | 中文字幕日韩av | 欧美乱淫视频 | 干av在线 | 久久久久中文 | 久久精品超碰 | 国产韩国精品一区二区三区 | 18久久久 | 精品一区二区在线观看 | 久久精品视频在线免费观看 | 日韩欧美精品一区二区 | 色精品视频 | 久久久久国产精品一区二区 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 91人人爽人人爽人人精88v | 欧美日韩有码 | 男女拍拍免费视频 | 日韩最新在线视频 | 久热色超碰 | 91中文视频 | 亚洲视频第一页 | 色多多视频在线 | 欧美另类z0zx | 久久不射电影院 | 久草免费资源 | 午夜10000| 国产一级免费在线 | 中文字幕五区 | 啪啪免费试看 | 九九免费在线观看视频 | 国产亚洲片 | 国产精品精品久久久久久 | 丁香婷婷综合色啪 | 成年人电影免费在线观看 | 精品国产色 | 精品国产一区二区三区久久久蜜月 | 午夜久久久久久久久久久 | 久久精品永久免费 | 国产资源免费在线观看 | 亚洲男男gaygay无套 | 狠狠狠狠狠狠操 | 亚洲干视频在线观看 | 日韩超碰在线 | 黄色成人免费电影 | 欧美一区中文字幕 | 国产麻豆精品传媒av国产下载 | 日本久久综合视频 | 精品久久久免费视频 | 天天综合网在线观看 | 99国产情侣在线播放 | 激情五月婷婷综合 | 又黄又爽又湿又无遮挡的在线视频 | 国产传媒一区在线 | 免费男女羞羞的视频网站中文字幕 | 国产精品美女久久久网av | 亚洲,国产成人av | 一区电影| 成年人在线观看视频免费 | 亚洲免费精品视频 | 欧美日bb| 国产尤物一区二区三区 | 99久久婷婷国产一区二区三区 | 国产精品美女在线 | 九九视频热 | 久久亚洲专区 | 国产一级在线观看视频 | www.91国产| 99精品欧美一区二区三区 | 色在线高清 | 久精品视频免费观看2 | 国内丰满少妇猛烈精品播放 | 伊人五月婷 | 久久亚洲综合国产精品99麻豆的功能介绍 | 亚洲国产人午在线一二区 | 免费观看成年人视频 | 久久激情片 | 欧美日韩高清免费 | 久久久精品日本 | 欧美一二在线 | 最近2019年日本中文免费字幕 | 午夜国产成人 | 色综合天天色综合 | 欧美一级片免费播放 | 亚洲综合狠狠干 | 国产成人av一区二区三区在线观看 | 丁香婷婷激情五月 | 91精彩视频 | 精品久久久久久亚洲综合网 | 91av电影| 91九色最新 | 一级大片在线观看 | 在线观看免费中文字幕 | 视频在线观看国产 | 国产精品欧美久久久久无广告 | 91麻豆精品一区二区三区 | 免费视频黄 | 免费黄色网址大全 | 特级西西444www大胆高清无视频 | 国产精品观看在线亚洲人成网 | 免费观看成人av | 青草草在线视频 | 日韩精品无码一区二区三区 | 日韩系列在线观看 | 亚洲在线精品视频 | 96在线| 中文字幕在线看人 | 欧美a级成人淫片免费看 | 欧美日韩精品影院 | 免费av网站在线 | 精品国产一区二区三区久久久久久 | 瑞典xxxx性hd极品 | 1024手机基地在线观看 | 摸bbb搡bbb搡bbbb | 免费看污污视频的网站 | 久久男女视频 | 欧美精品久久久久久久久久 | 日日夜夜人人精品 | 天天做日日做天天爽视频免费 | 日韩av电影中文字幕在线观看 | 精品国产一二区 | 亚洲在线视频网站 | 爱色av.com | 久久精品视频日本 | 伊人日日干 | 99精品在线播放 | 日本精品一二区 | 国产亚洲精品久久 | a特级毛片 | 91亚州 | 亚洲综合视频在线 | 久久久久久视频 | av大全免费在线观看 | 天天草天天操 | 久久久久免费精品视频 | 一级片视频在线 | 麻花豆传媒一二三产区 | 日韩高清 一区 | 日韩高清观看 | 国产精品久久久久四虎 | 久青草视频| 日韩区欠美精品av视频 | 激情综合网在线观看 | 日韩精品中文字幕在线播放 | 人人爽人人香蕉 | 成人在线免费av | 国内免费久久久久久久久久久 | 日日精品| 成人97人人超碰人人99 | 亚洲成人资源网 | 久久不见久久见免费影院 | 成人久久毛片 | ww亚洲ww亚在线观看 | 久艹在线观看视频 | 婷婷视频在线观看 | 黄色三级免费片 | 色av色av色av | 丁香激情综合久久伊人久久 | 亚洲精品在线一区二区 | 国产亚洲综合性久久久影院 | 欧美日韩视频精品 | 美女在线国产 | 欧美日韩亚洲在线观看 | 涩涩网站在线观看 | 国产精品久久久久久av | 国产精品综合在线观看 | 成年人免费在线 | 国产一二区精品 | 涩涩网站免费 | 中文字幕乱码日本亚洲一区二区 | 中文字幕免费不卡视频 | 天天爱天天插 | 国产va饥渴难耐女保洁员在线观看 | 欧美精品在线观看免费 | 中文一二区 | 777xxx欧美 | 欧美日韩高清一区二区 | 337p欧美 | 国产成人精品999在线观看 | 亚洲激精日韩激精欧美精品 | 色婷婷啪啪免费在线电影观看 | 999成人网 | 国产精品igao视频网入口 | 在线观看视频h | 在线免费观看视频 | 中文字幕专区高清在线观看 | 亚洲在线精品 | 天天在线视频色 | 亚洲久草视频 | 国产成人久久精品 | 国模精品在线 | 99人成在线观看视频 | www日韩欧美 | 丝袜美腿在线播放 | 久久久免费高清视频 | 免费福利在线视频 | av夜夜操 | 国产精品毛片一区二区在线 | 国产免费观看久久 | 久久久男人的天堂 | 在线免费观看视频 | 人人盈棋牌 | 亚洲一区二区三区毛片 | 日韩视频一区二区在线观看 | 麻豆 free xxxx movies hd | 久久久久久久久影视 | 国产又粗又猛又色 | 超碰免费在线公开 | 精品国产一区二区三区av性色 | 黄色成人av网址 | 玖玖999 | 91精品国产福利在线观看 | 在线观看精品一区 | 国产美女视频 | 天天色天天操综合 | 久久女同性恋中文字幕 | 亚洲综合在线发布 | 超碰在线人人草 | 久草在线一免费新视频 | 亚洲高清在线 | 国产一级免费av | 99精品久久久久久久 | 国产日产欧美在线观看 | 婷婷在线看 | av千婊在线免费观看 | 91网站在线视频 | 成人在线黄色电影 | 婷婷视频在线播放 | av福利在线看| 亚洲91中文字幕无线码三区 | 操碰av| 一级免费黄视频 | 丝袜av网站 | 日本精品久久久久中文字幕5 | 亚洲婷婷综合色高清在线 | 免费av免费观看 | 久久久久久久久久久久影院 | 日韩av免费一区二区 | 成人蜜桃 | 欧美久久久影院 | 午夜视频在线观看一区二区三区 | 九九免费在线观看视频 | 婷婷久久国产 | 国产美女在线免费观看 | 国产视频999 | 日韩精品中文字幕在线观看 | 亚洲精品资源在线 | 一 级 黄 色 片免费看的 | 玖玖玖国产精品 | 在线a人片免费观看视频 | 天堂在线成人 | 国产成人精品av久久 | 久久免费国产视频 | 精品国产伦一区二区三区观看方式 | 国产一区欧美二区 | 国产在线97 | 欧美成人影音 | 国产 日韩 在线 亚洲 字幕 中文 | 丰满少妇对白在线偷拍 | 日本精品视频一区 | 久久精品5| 亚洲综合激情网 | 97成人在线免费视频 | 国产一级免费视频 | 精品久久久久久亚洲综合网站 | 国产高清在线一区 | 日韩在线视频免费观看 | 99精品视频精品精品视频 | 欧美成人精品欧美一级乱黄 | 国产精品久久久久久久7电影 | 在线播放你懂 | 亚洲一区二区三区91 | 色综久久 | 99热最新在线 | 免费在线观看一级片 | 天天摸日日摸人人看 | 色资源中文字幕 | 色婷婷电影网 | 日韩.com | 久久99精品久久久久久久久久久久 | 亚洲精选在线 | 夜夜爱av| 国产亚洲免费的视频看 | 在线精品在线 |