Skip to content

YowFung/CodeWarGame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

项目介绍

一个基于 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

定义炮弹的属性和方法,该炮弹类适用于我方战机和敌方战机。

声明

​ 该项目是我在广州粤嵌公司专业实训期间完成的一个小作品,其中参考了陈工的 “飞机大战” 代码,并且从中得到很多借鉴。