飞机大战

一 创建一个aline_invasion.py

(1)创建窗体

飞机大战简单代码python 飞机大战游戏代码python_python

飞机大战简单代码python 飞机大战游戏代码python_关闭按钮_02

(2)创建settings.py

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

飞机大战简单代码python 飞机大战游戏代码python_飞机大战简单代码python_03

飞机大战简单代码python 飞机大战游戏代码python_飞机大战简单代码python_04

(3) 修改aline_invasion.py

飞机大战简单代码python 飞机大战游戏代码python_飞机大战简单代码python_05

二 创建飞船

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

飞机大战简单代码python 飞机大战游戏代码python_关闭按钮_06

(2)  在aline_invasion.py中创建飞船

飞机大战简单代码python 飞机大战游戏代码python_关闭按钮_07

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

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

飞机大战简单代码python 飞机大战游戏代码python_飞机大战简单代码python_08

飞机大战简单代码python 飞机大战游戏代码python_code_09

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

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

飞机大战简单代码python 飞机大战游戏代码python_python_10

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

飞机大战简单代码python 飞机大战游戏代码python_code_11

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

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

飞机大战简单代码python 飞机大战游戏代码python_code_12

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

飞机大战简单代码python 飞机大战游戏代码python_code_13

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

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

飞机大战简单代码python 飞机大战游戏代码python_python_14

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

飞机大战简单代码python 飞机大战游戏代码python_关闭按钮_15

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

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

飞机大战简单代码python 飞机大战游戏代码python_飞机大战简单代码python_16

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

飞机大战简单代码python 飞机大战游戏代码python_aircraft-war_17

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

飞机大战简单代码python 飞机大战游戏代码python_飞机大战简单代码python_18

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

飞机大战简单代码python 飞机大战游戏代码python_飞机大战简单代码python_19

三 射击

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

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

飞机大战简单代码python 飞机大战游戏代码python_code_20

(2)  创建bullet类

继承精灵类

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

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

飞机大战简单代码python 飞机大战游戏代码python_aircraft-war_21

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

飞机大战简单代码python 飞机大战游戏代码python_aircraft-war_22

在alien__invasion.py中添加编组

飞机大战简单代码python 飞机大战游戏代码python_python_23

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

飞机大战简单代码python 飞机大战游戏代码python_python_24

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

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

飞机大战简单代码python 飞机大战游戏代码python_python_25

然后来到game_function中

飞机大战简单代码python 飞机大战游戏代码python_aircraft-war_26

创建check_keydown_events()方法

飞机大战简单代码python 飞机大战游戏代码python_aircraft-war_27

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

飞机大战简单代码python 飞机大战游戏代码python_aircraft-war_28

修改更新的方法

飞机大战简单代码python 飞机大战游戏代码python_code_29