开头附上传送门
自学python实例_飞机大战_1_开始准备篇
自学python实例_飞机大战_2_纯代码篇
代码以及素材
- 创建工程目录:
- 准备基础工作:
import pygame
from plane_spriter import *
class PlaneGame(object):
"""飞机大战游戏"""
def start_game():
print("游戏开始")
if __name__ = "__main__":
# 创建游戏对象
game = PlaneGame()
# 启动游戏
game.start_game()
这里我们就准备好了基础工作,接下来我们开始构思该如果完成一个飞机大战简单的项目.
(1)创建好游戏窗口
(2)加入第一个精灵背景图
(3)设置加入我们第二个精灵,飞机
(4)使用两张背景图移动,实现飞机飞行
(5)通过键盘实现飞机的移动
(6)设置加入我们第三个精灵,敌机
(7)采用定时器事件,使飞机每格一秒出现
(8)设置加入第四个精灵,导弹
3.重点代码介绍::
def __creat_spriter(self):
# 创建背景精灵和精灵组
bg1 = Background()
bg2 = Background(True)
self.back_group = pygame.sprite.Group(bg1, bg2)
# 创建敌机的精灵组
self.enemy_group = pygame.sprite.Group()
# 创建英雄的精灵和精灵组
self.hero = Hero()
self.hero_group = pygame.sprite.Group(self.hero)
bg1 和 bg2 分别是两张相同的背景图,背景图大小就是将来游戏窗口的大小480x700,所以bg1位置在(0, 0) bg2位置在(0, -700)并且同时同速向下,当bg1到达(0, 700)时会立刻到(0, -700)的位置,这样就实现了背景的移动.
def start_game(self):
print("游戏开始...")
while True:
# 1.设置刷新频率
self.clock.tick(FRAME_PER_SEC)
# 2.事件监听
self.__event_handler()
# 3.碰撞检测
self.__check_collide()
# 4.更新、检测精灵组
self.__update_spriter()
# 5.更新显示
pygame.display.update()
通过这样的方式,来调用函数,不要直接在这里写.
# 1.子弹摧毁敌机
pygame.sprite.groupcollide(self.hero.bullets, self.enemy_group,True,True)
# 2.敌机摧毁英雄
enemies = pygame.sprite.spritecollide(self.hero, self.enemy_group,True)
# 判断列表是否有内容
if len(enemies) > 0:
#让英雄牺牲
self.hero.kill()
#结束英雄
PlaneGame.__game_over()
这两个方法是pygame里面咱们提供的
这是用来存放精灵的地方,可以通过名字知道每一个类的功能,首先要创建一个GameSprite的父类,下面的其他精灵通过继承父类的方式来进行编写,如果父类中的方法或者属性不够或者不同的话,还可以直接重新修改.