飞机大战之python代码实现

飞机大战

一 创建一个aline_invasion.py

(1)创建窗体

飞机大战之python代码实现飞机大战之python代码实现

(2)创建settings.py

每次需要给游戏添加新的功能我们都在这个模块中添加,避免到处添加代码

飞机大战之python代码实现飞机大战之python代码实现

(3) 修改aline_invasion.py

飞机大战之python代码实现

二 创建飞船

(1)  创建一个ship,负责管理飞船的大部分行为

飞机大战之python代码实现

(2)  aline_invasion.py中创建飞船

飞机大战之python代码实现

(3)  在主程序中不应该有事件的代码,比如点击关闭按钮这些代码,所以这个时候需要我们去重构代码.新建一个模块game_functions.在这个函数中我们主要写关于游戏的所有的函数

把关于鼠标关闭按钮的代码重写

飞机大战之python代码实现飞机大战之python代码实现

在修改aline_invasion.py中关闭按钮的代码

为了进一步简化我们可以给我们导入的模块做指定别名的操作

飞机大战之python代码实现

在原来的关闭按钮处的代码修改为:

飞机大战之python代码实现

我们继续进一步简化代码:

我们可以将更新屏幕的代码在进行转移到game_function

飞机大战之python代码实现

在修改aline_invasion.pywhile中的代码,注意:这个方法是有参数的

飞机大战之python代码实现

重新在game_function中的check_events方法中增加飞机和鼠标关联的代码

思路是:获取到鼠标的坐标赋值给飞机矩形的中心点坐标

飞机大战之python代码实现

然后在aline_invasion.py中的调用check_events中传入飞机对象

飞机大战之python代码实现

这个时候我们发现飞机可以随着鼠标移动,但是飞机会有一部分出了边界

我们在ship模块中增加一个no_move方法来调整飞机位置,使其不会出屏幕

飞机大战之python代码实现

并且在把鼠标坐标赋值给飞机坐标的那儿调用no_move方法

飞机大战之python代码实现

接下来我们让背景动起来,setting.py中写background_move方法

飞机大战之python代码实现

然后在主程序的while循环中调用

飞机大战之python代码实现

三 射击

在添加射击这个功能的时候我们需要提前了解一下python中的精灵

(1)  setting.py中设置子弹的的速度和加载子弹图片

飞机大战之python代码实现

(2)  创建bullet

继承精灵类

什么是精灵精灵可以认为成是一个个小图片,一种可以在屏幕上移动的图形对象,并且可以与其他图形对象交互。精灵图像可以是使用pygame绘制函数绘制的图像,也可以是原来就有的图像文件。

在初始化化方法里初始化子弹属性

飞机大战之python代码实现

继续在子弹模块中添加子弹移动的方法和在屏幕上显示子弹的方法

飞机大战之python代码实现

alien__invasion.py中添加编组

飞机大战之python代码实现

我们创建一个编组,用来存储子弹对象,group编组类似列表

飞机大战之python代码实现

那在什么时候添加子弹进编组呢?

在按压空格键的时候添加子弹,那么我们在check_enents方法中添加,注意,添加的时候我们要考虑需要传入什么参数

飞机大战之python代码实现

然后来到game_function

飞机大战之python代码实现

创建check_keydown_events()方法

飞机大战之python代码实现

然后在更新的方法中闯入对应参数

飞机大战之python代码实现

修改更新的方法

飞机大战之python代码实现