一个基于 pygame 的代码大战小游戏,类似于飞机大战游戏。
戳这里观看该游戏运行的演示视频:https://www.bilibili.com/video/av56112017/
自从 PHP 大张旗鼓宣称其为世界上最好的编程语言后,世界各路编程语言群起讨伐,战火一直蔓延到21世纪中叶。战争有时候并不总是带来毁灭性的灾难,甚至会促进世界大发展、促进社会大进步,俗话说“乱世出英雄”,在这样一个战火不休的乱世之中,有个叫 Python 的家伙在人工智能、大数据、深度学习等各路具有先进思想之人的拥护下一夜崛起,成为了当下的世界霸主。然而那些也曾是世界列强的PHP、Java、C++、C#等岂能善罢甘休?于是,一场平定各路编程语言群起暴乱、巩固 Python 霸权地位、维护世界和平的大战即将拉开序幕……
启动游戏,在主界面上显示操作帮助和功能菜单,你可以使用 [w]/↑ 和 [S]/↓ 按键选择菜单,然后按下 [SPACE] 键以进入菜单。
开始游戏后,你会来到一个叫做 “代码废墟” 的战场。你可以通过 [A]/← 和 [D]/→ 按键控制 Python 战机移动,通过 [SPACE] 按键控制 Python 战机发射蟒蛇炮弹。你要尽可能多的消灭敌方战机,这样你会有更多的得分。
你应该时刻注意其他战机对你发射的枪林弹雨,被击中后你会丧失一颗能量心,你总共会有五颗能量心,当你能量心全部消耗殆尽会,你的战机会毁灭,然后就 Game Over 了。另外,你的战机如果被敌机撞到,它将会立即毁灭。
战争无情,战火不断,祝你好运!
你一定很好奇这个游戏是怎么开发的吧?这其实不会很难,我在写这个游戏时,总共也才用了一千多行代码而已。下面让我来告诉你这个游戏的整个开发过程吧!
开发环境:
- Windows 10
- python 3.7
工具软件:
- PhotoShop CC
- Sublime Text 3
- GitBash
- pip19.1.3
安装 Python 包:
pip install pygame
准备素材:
- 音效素材:包括背景音乐、菜单选择音效、子弹发射音效、爆炸音效等。
- 图像素材:包括游戏背景图、战机图像、子弹图像、爆炸效果图、菜单按钮图等。
- 字体素材:用于让界面上的文字显示得更好看点。
游戏规则设定:
- 我方战机(Python战机)通过发射子弹来消灭众多的敌方战机(C++战机、Java战机、C#战机、JavaScript战机、PHP战机、GO战机等);
- 敌方战机也可以发射子弹攻击我方战机;
- 我方被攻击后会损失血量,血量为零时则爆炸阵亡;
- 被敌方撞击后,我方也会爆炸阵亡;
- 敌方战机可以被一次性击毁;
- 敌方战机从远处飞往我方战机,只能直线飞行,我方战机可以移动位置;
- 每消灭一个敌方战机,则得50分;
- 我方战机阵亡则游戏结束。
游戏界面设定:
- 暗色主题;
- 矩形窗口,竖屏显示;
- 重要信息突出;
- 不同战机区分明显。
游戏流程设定:
- 启动游戏后播放背景音乐,显示功能菜单;
- 通过功能菜单选择开始游戏或退出游戏;
- 选中开始游戏后,出现 Ready, Go 提示界面,然后正式开始游戏;
- 正式开始游戏,播放游戏背景音乐,加载游戏地图,显示我方战机,随机出现敌方战机;
- 游戏中显示我方战机血量和得分情况,如若血量为零,则游戏结束;
- 游戏结束,显示得分情况,显示 Game Over 界面,出现功能菜单,可选择继续游戏或退出游戏。
对于音效素材,可以在音效素材网站下载,例如 爱给网,也可以自行录制剪辑。对于背景音乐,可支持ogg、mp3等格式;对于音效,可以是ogg、wav等格式。
对于字体素材,可以在字体素材网站下载。
对于图像图标素材,可以在图库网站下载,例如 iconfont,也可以使用 PhotoShop 自己绘制。图像尽量使用具有透明通道的 png 格式文件。
为了使游戏开发更加简单和高效,这里采用高度面向对象思想,将游戏中的每一个用例均对象化;同时,为了使游戏更具有可维护性和可升级性,游戏中的一切配置信息均独立写在配置文件中,只需通过修改配置文件,即可完成对游戏的配置和改造。
项目文件结构:
该项目将每一个类独立写成一个 py 文件,其中包含我方战机的 Hero 类、敌方战机的 Enemy 类、炮弹的 Bullet 类、游戏(战场)的 Game 类。
游戏配置文件:
config.py
定义游戏中的一些相关配置、素材文件路径等。
游戏(战场)类:
game.py
定义游戏属性、设定游戏状态、事件监听、战场布置、战机创建等。
我方战机类:
hero.py
定义我方战机的所有属性和方法。
敌方战机类:
enemy.py
定义敌方战机的所有属性和方法。
炮弹类:
bullet.py
定义炮弹的属性和方法,该炮弹类适用于我方战机和敌方战机。
该项目是我在广州粤嵌公司专业实训期间完成的一个小作品,其中参考了陈工的 “飞机大战” 代码,并且从中得到很多借鉴。