前言
本系列博客适合对py的基本语法已经有了简单的了解,希望通过一个实例来进行加深的朋友。
或者是已经跟着书本一步步实现了这个项目,希望能够复习一遍。
这里我使用的是vscode进行编程,参考书为《Python编程:从入门到实践》。
2021.3.31:添加了一个下载源代码、课后题和相关数据(主要是16章)的网站,图灵社区,链接:
传送门
虽然基本上是延用了书上的内容,但我后续的博客中会进行添加内容(在做了在做了,新建文件夹)。
首先上传一下我的代码部分和游戏中的贴图,以及参考书,还有整个项目的思维导图(.xmind)
百度网盘链接
提取码是"xybb",也就是博主名字的缩写。
或者微信打开下图:
另外多说一下,书上的逻辑是从简单到复杂,一点点地实现整个项目,这里我给出一个不一样的视角,将整个文件拿出来分析,方便对整个项目有一个更深入的了解,最好是把书上的过程也走一遍。
话不多说,先看一下游戏长什么样吧。
游戏内容
我们会使用py来构建这样一个界面,点击play开始游戏。
左上角是生命数,算上当前的一次一共为三条命。
中间为历史最高分,右上角为当前的分数,下面是等级。
每一波都会生成4*9个外星人,外星人会向右移动,碰到边界就反向,同时下落一段距离。
我们需要发射子弹来消灭他们,但是在屏幕中出现的子弹个数只有三颗,也就是在子弹飞出屏幕前子弹是越用越少的,珍惜他们。
如果飞船碰到外星人或者外星人到了屏幕底部还没有被消灭,你会失去一条命。
如果成功消灭一波敌人,那么就可以得到升级,同时外星人的移动速度、子弹的移动速度和消灭外星人的分数都会得到提高。(表示手残党还没过第五波)
操作:
按左右键实现移动飞船,空格键发射子弹,按"q"或者关闭窗口退出游戏。
提前准备
首先我们需要一个pygame。简单查了一下,这就是一个方便游戏开发的py包,里面有很多奇奇怪怪的东西,不过确实很方便。下载地址
这时你会发现下载的是whl文件,需要我们使用pip运行。
首先我们先整一个pip:
- 检查pip:(毕竟可能之前已经安装过了或者是自带的)
python -m pip --version - 更新pip:python -m pip install --upgrade pip
- 安装pip:传送门
或者是自己上网上搜一下,这种都很多的。
上述指令都是需要用cmd打开的,可以用windows+r快捷键打开,输入cmd敲回车进入
准备好pip之后,我们先将下好的文件放在项目文件夹里面,然后需要输入:
python -m pip install --user 文件名,这里因为版本可能不一样,所以我只给出了标准格式。
如果是我,就需要这样:
(其实是不需要修改文件夹路径的,直接输入指令就行)
做好了上述工作,我们就可以开始我们的游戏之旅了。
文件解读
非py文件有三个,一个是vscode自带的,估计是导入的库和其他的一些,一个是image,也就是我们要贴的图片,还有一个是我们的pygame。这些都不用管。
接下来是涉及到的类。
在游戏中,我们有飞船(ship)、外星人(alien)和子弹(bullet)这些元素,分别为其建造了单独的类;
另外因为游戏要有一些统计信息(gamestats)以及显示这些信息的框(scoreboard),并且py不像html可以随便生成按钮,我们还有一个按钮(button)。
最后,我们将设置(setting)也单独拿出来作为一个类,方便后续的修改。
总结一下:
- 飞船
- 外星人
- 子弹
- 统计信息
- 显示框
- 按钮
- 设置
好家伙,剩下的只有两个文件了,其中一个alien_invasion是游戏的总起。
game_functions是主要的内置函数,比如感应按键、鼠标,检测发生的事件(飞船撞到外星人、外星人和子弹相遇、外星人被消灭干净)
接下来
接下来我将分成几部分来阐述这个项目,类、事件函数和主函数部分。
项目的整体难度不大,但是足够显示出一个项目开发中的重点,我希望通过这个项目能对自己和他人进行启发。