【Python】pygame-项目实战(14)-明确飞机游戏类的设计
游戏框架搭建
目标:使用面向对象设计飞机大战游戏类
具体目标:
- 明确主程序职责
- 实现主程序类
- 准备游戏精灵组
明确主程序职责
-
简单回顾一下,一个游戏的主程序的职责可以分为两个部分:
- 游戏初始化:做一些准备工作
- 游戏循环:启动游戏
-
根据明确的职责,设计PlaneGame类如下所示:
PlaneGame | |||||||
---|---|---|---|---|---|---|---|
属性 | screen | clock | 精灵组或精灵 | ||||
方法 | __init__(self): | __create_sprites(self): | start_game(self): | __event_handler(self): | __check_collide(self): | __update_sprites(self): | __game_over(): |
-
screen屏幕属性:游戏绘制
-
clock时钟属性:设置刷新帧率
-
既然是定义属性,我们可以借助初始化方法一次性把游戏初始化中需要定义的属性全部完成。
-
上表中以
__
开头的方法是私有方法,初始化方法一旦完成,后续想再去添加精灵组或者精灵,只需要调用私有方法即可完成。不需要对初始化方法内部的代码做任何改动。 -
由
start_game(self)
方法开始游戏循环。完成游戏循环所作所有工作 -
__event_handler(self):
私有方法专门负责事件监听 -
__check_collide(self):
专门负责碰撞检测 -
__check_collide(self):
专门负责更新和绘制精灵组 -
__game_over():
,当英雄牺牲或者用户点击关闭按钮,游戏结束
游戏初始化 | ||
---|---|---|
设置游戏窗口 | 创建游戏时钟 | 创建精灵、精灵组 |
游戏循环 | ||||
---|---|---|---|---|
设置刷新帧率 | 事件监听 | 碰撞检测 | 更新/绘制精灵组 | 更新屏幕显示 |
- 通过事件监听,我们就能捕获到用户对游戏进行了哪些操作,我们才能够做出相应的反应
- 碰撞检测:英雄发射的子弹一旦碰撞到敌机,我们要把敌机销毁,计算英雄得分。同时敌人的飞机碰撞到英雄,英雄会牺牲,游戏结束。
- 调用update方法通知所有精灵更新位置
提示根据职责封装私有方法,可以避免某一个方法的代码写的太过冗长
如果某一个方法编写的太长,既不好阅读,也不好维护!
转载自:https://juejin.cn/post/7133229533340041253