Python 飞机大战
用python做飞机大战游戏,主要引用pygame库,全程使用面向对象的思想,把
具有相同属性的东西归为一个类,我总共创建了七个类,分别是:
- 玩家飞机精灵类(继承了pygame的精灵类)
- 敌机精灵类(继承了pygame的精灵类)
- 玩家子弹类(继承了pygame的精灵类)
- 敌机子弹类(继承了pygame的精灵类)
- 游戏音乐
- 背景图类
- 管理类
源码可以去githup上下载,地址 : GitHup 点击下载飞机大战
部分代码显示:比如玩家飞机精灵类
# 玩家飞机精灵类
class HeroPlane(pygame.sprite.Sprite):
def __init__(self, screen):
# 调用父类初始化方法
# pygame.sprite.Sprite.__init__(self)
super().__init__()
# 窗口
self.screen = screen
# 一个玩家飞机图片
self.image = pygame.image.load('./feiji/hero2.png')
# 飞机矩形区域对象
self.rect = self.image.get_rect()
# 左上角坐标
self.rect.topleft = [512 / 2 - 116 / 2, 600]
# 飞机的速度
self.speed = 15
# 一个精灵组 存放所有的子弹精灵
self.bullets = pygame.sprite.Group()
# 血量 初始100
self.blood_value = 100
# 标记玩家飞机是否over
self.is_remove = False
# 显示爆炸图片的 索引 从0开始
self.mIndex = 0
# 存放爆炸图片 的列表
self.bomb_mImages = []
敌机子弹类 :
# 敌机子弹类
class EnemyBullet(pygame.sprite.Sprite):
# path_num表示散弹中 子弹是哪一个
def __init__(self, screen, x, y):
# 调用父类初始化方法
# pygame.sprite.Sprite.__init__(self)
super().__init__()
# 窗口
self.screen = screen
# 来一个随机数
self.num = random.randint(1, 7)
# 一个子弹图片
self.image = pygame.image.load('./feiji/bullet_' + str(self.num) + '.png')
# 子弹矩形区域对象
self.rect = self.image.get_rect()
# 子弹左上角坐标
self.rect.topleft = [x + 40, y + 60]
# 子弹的速度
self.speed = 10
def update(self):
"""修改子弹坐标"""
self.rect.bottom += self.speed
# 如果子弹向下移出边界 删除它
if self.rect.top > Manager.height:
self.kill()
我就不全都放上来了,这款游戏我觉的就考验大家对面向对象的理解了, 代码下载下来就能用,每一行都写了注释,所以这里就不多废话 , 希望看完源码能对你有所帮助.
这里说一下:除了Constants模块是自己定义的,其他的都是导入的
飞机大战演示效果图