飞机大战之python代码实现
飞机大战
一 创建一个aline_invasion.py
(1)创建窗体
(2)创建settings.py
每次需要给游戏添加新的功能我们都在这个模块中添加,避免到处添加代码
(3) 修改aline_invasion.py
二 创建飞船
(1) 创建一个ship类,负责管理飞船的大部分行为
(2) 在aline_invasion.py中创建飞船
(3) 在主程序中不应该有事件的代码,比如点击关闭按钮这些代码,所以这个时候需要我们去重构代码.新建一个模块game_functions.在这个函数中我们主要写关于游戏的所有的函数
把关于鼠标关闭按钮的代码重写
在修改aline_invasion.py中关闭按钮的代码
为了进一步简化我们可以给我们导入的模块做指定别名的操作
在原来的关闭按钮处的代码修改为:
我们继续进一步简化代码:
我们可以将更新屏幕的代码在进行转移到game_function中
在修改aline_invasion.py中while中的代码,注意:这个方法是有参数的
重新在game_function中的check_events方法中增加飞机和鼠标关联的代码
思路是:获取到鼠标的坐标赋值给飞机矩形的中心点坐标
然后在aline_invasion.py中的调用check_events中传入飞机对象
这个时候我们发现飞机可以随着鼠标移动,但是飞机会有一部分出了边界
我们在ship模块中增加一个no_move方法来调整飞机位置,使其不会出屏幕
并且在把鼠标坐标赋值给飞机坐标的那儿调用no_move方法
接下来我们让背景动起来,在setting.py中写background_move方法
然后在主程序的while循环中调用
三 射击
在添加射击这个功能的时候我们需要提前了解一下python中的精灵
(1) 在setting.py中设置子弹的的速度和加载子弹图片
(2) 创建bullet类
继承精灵类
什么是精灵: 精灵可以认为成是一个个小图片,一种可以在屏幕上移动的图形对象,并且可以与其他图形对象交互。精灵图像可以是使用pygame绘制函数绘制的图像,也可以是原来就有的图像文件。
在初始化化方法里初始化子弹属性
继续在子弹模块中添加子弹移动的方法和在屏幕上显示子弹的方法
在alien__invasion.py中添加编组
我们创建一个编组,用来存储子弹对象,group编组类似列表
那在什么时候添加子弹进编组呢?
在按压空格键的时候添加子弹,那么我们在check_enents方法中添加,注意,添加的时候我们要考虑需要传入什么参数
然后来到game_function中
创建check_keydown_events()方法
然后在更新的方法中闯入对应参数
修改更新的方法