飞机大战之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.pywhile中的代码,注意:这个方法是有参数的


重新在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()方法


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


修改更新的方法



猜你喜欢

转载自blog.csdn.net/zx870121209/article/details/80632388
今日推荐