A Game. There is a rocket on the center of the screen. Player control the rocket to move up/down/left/right. And make sure the rocket can't move to the outside of the screen.
- 一个Screen(有背景)
- 一个Rocket
- Rocket可以上下左右移动
- Rocket不能移动出Screen
导入模块:
- pygame
- sys
- 初始化:
pygame.init()
- 游戏窗口大小设置
- 游戏标题设置
- 游戏主循环(while循环, 捕获事件)
- 捕获事件列表, 使用for循环遍历该列表
- 查找是否有
pygame.QUIT
事件, 如果有, 执行sys.exit()
- 如果没有退出, 执行以下逻辑
- 使用选定背景色填充Screen
- 重绘屏幕
火箭的类
screen
形参(后续根据它确定位置, screen来自pygame.display.set_mode()
)- 初始化以下内容:
image
来自pygame.image.load()
screen
- 火箭外接矩形:
rect
screen
外接矩形:screen_rect
- 位置:
self.rect.center=self.screen_rect.center
blitme()
- 2个参数: image
和rect
(对象和位置)
- 初始化rocket对象
- 在循环中重绘rocket
rocket.py
增加move_rocket()
函数.
- 设置移动标志, 默认为False, 为True时移动
- 检测KEYUP/KEYDOWN事件
- 如果KEYDOWN, 移动标志改为True
- 如果KEYUP, 移动标志改为False
- 火箭移动: 移动标志为True且火箭不在边界上, 则以火箭速度进行移动
配置放到单独文件中settings.py
- screen参数:
- width
- height
- bg_color
- 火箭速度
游戏运行主函数单独拆分为文件game_functions.py
, 包含:
keyup_event()
keydown_event()
check_event()
blitme()
如果KEYDOWN, 移动标志改为True
如果KEYUP, 移动标志改为False
检查以下事件并响应:
- 退出事件 -> 退出进程
KEYDOWN
事件 -> 移动标志为TrueKEYUP
事件 -> 移动标志为False
重绘以下内容:
- screen背景色填充
- 火箭重绘
- 最后绘制的元素总是显示在上