python基础使用pygame模块实现打飞机小游戏,有最高分记录,每次游戏的分数都会和最高分进行比较然后记录下来。
基础代码实现:
class Bullet:
def __init__(self):
# 初始化成员变量,x,y,image
self.x = 0
self.y = -1
self.image = pygame.image.load("image/子弹.png").convert_alpha()
self.active = False # 根据active的状态处理子弹发射,默认不激活。
def move(self):
# 处理子弹的运动
if self.active:
self.y -= 1 # 激活状态下,子弹向上移动。
if self.y < 0:
self.active = False # 当飞出屏幕,就设为不激活。
def restart(self):
# 重置子弹位置
mouseX, mouseY = pygame.mouse.get_pos()
self.x = mouseX - self.image.get_width() / 2
self.y = mouseY - self.image.get_height() / 2
self.active = True # 激活子弹
class Enemy:
def restart(self):
# 重置敌机位置和速度
self.x = random.randint(50, 400)
self.y = random.randint(-200, -50)
# self.speed = random.random() + 0.5
self.speed = random.uniform(0.1, 0.4)
def __init__(self):
# 初始化
self.restart()
self.image = pygame.image.load("image/宿敌.png").convert_alpha()
def move(self):
if self.y < 800:
# 向下移动
self.y += self.speed
else:
# 重置
self.restart()
class Plane:
def restart(self):
self.x = 200
self.y = 600
def __init__(self):
self.restart()
self.image = pygame.image.load("image/飞机.png").convert_alpha()
def move(self):
x, y = pygame.mouse.get_pos()
x -= self.image.get_width() / 2
y -= self.image.get_height() / 2
self.x = x
self.y = y
def checkHit(enemy, bullet): # 如果子弹在敌机图片范围之内,则认为hit命中目标。
if (bullet.x > enemy.x and bullet.x < enemy.x + enemy.image.get_width()) and (
bullet.y > enemy.y and bullet.y < enemy.y + enemy.image.get_height()):
enemy.restart() # 重置敌机
bullet.active = False
return True
return False
少年易老学难成,一寸光阴不可轻