基于C++的简单飞机大战游戏 | 您所在的位置:网站首页 › 飞机大战java程序代码 › 基于C++的简单飞机大战游戏 |
【题目要求】
设计一个简单的飞机大战游戏,满足以下需求: 1.战场的环境:高度=35, 宽度=55,我方飞机为一架,初始位置在战场环境中的最下方中间位置。 2.按照游戏任务显示指定样式的飞机。 3.敌方飞机出现的位置是随机的,敌方飞机的总数是可以预定的。敌机可以向下移动。 4.能够利用asdw按键分别控制飞机的上下左右移动。 5.按下空格键使我方飞机发射子弹,敌机每隔一段时间自动发射子弹。 6.击中敌机,敌机消失,并且我方分数+1,我方飞机被击中,分数-1,敌机从整个战场飞过而未被击落,分数-1。分数为0时结束游戏。 1. 游戏通常会要求在控制台上显示画面(包括敌机,和我方飞机),显示跟之前的最大区别是要求有指定位置,而且更新的频率比较快,所以要求学习和总结:用在游戏程序中的输入和输出有什么特殊的处理方案? 键盘的输入,不在用cin,cin需要处理输入结束的判断,必须在操作中不断输入回车,不符合游戏的操作习惯; 采用C语言中的kbhit()和getch()来 键盘有键按下和按键识别; 上述两个函数需要引入头文件:#include // _kbhit(), _getch() 2. 屏幕的输出: 之前我们学习和使用的输出就是cout,如果要在指定位置上输出字符,会出现两 个问题,之前输出的内容一直还在,屏幕上始终有光标会闪烁,因此需要在输出的时候,要配 合其他的输出操作。 使用gotoxy函数,将光标移动到(x,y)位置。这样,就不需要一直清屏,但是光标的闪烁的问题,可以利用隐藏光标函数HideCursor()。完成上述两个函数需要#include,用到了一些windows提供的API函数。 【设计思路】为了完成简单的飞机大战游戏的功能,需要经过以下步骤: (一)实现一个具有基础功能的游戏框架 创建战场,设定代表飞机、子弹对象的底层数字。实现与用户输入无关的更新,包括子弹移动、击中飞机的判断等。实现与用户输入有关的更新,当按下特定键时执行特定操作。实现屏幕显示的更新。读取底层数字时在控制台输出对应的字符。(二)完善代码逻辑,实现游戏功能 敌机和敌方子弹移动的速度不应过快。使用两组数字来控制。为解决闪屏问题,使用提供的函数绘图,并且隐藏光标。控制同屏敌机的数量,如果不够要做补充。完善飞机相互碰撞、子弹碰撞飞机后的逻辑处理。加入计分板,当满足一定条件时应该结束游戏。在控制台实现简单的UI界面。 【代码思路与文件结构】飞机大战游戏由控制台快速刷新实现。在每一次刷新时都需要执行许多操作,将这些操作分割为不同的函数,可以提高代码的可维护性。 游戏运行时刷新的函数:初始化、与用户输入无关更新、与用户输入有关的更新、在控制台显示。对敌我飞机进行操作的函数:创建、清除、检查我方飞机;创建我方子弹;创建、移动、摧毁、重置、检查敌方飞机;创建敌方子弹。实现UI界面显示的函数:重置光标位置、隐藏光标;显示游戏开始、暂停、结束UI界面的函数。源代码文件结构: define.h:全局变量和函数的声明 func.cpp:游戏每次刷新需要直接调用的函数 utils.cpp:对敌我飞机进行操作的函数 ui.cpp:用于构建界面的函数 源代码目录的ui文件夹下存储的txt文件用于快速构建UI界面。 【运行效果】 开始界面:有两种选择,进入游戏和退出 游戏界面,初始同屏有两架敌机,子弹射速较慢 敌机到达战场低端而未被击落,扣分 敌机与我方飞机碰撞,或敌机子弹击中我方飞机,扣分;分数在10~20,敌机数为4架,敌机移速、发射子弹速度、敌方子弹移速相应加快。 分数高于30时,我方子弹变成三发,敌机数为6架,敌机移速、发射子弹速度、敌方子弹移速相应加快。 按下esc键,可使游戏暂停。再次按下esc可返回游戏,按下enter退出。 分数较高时,游戏难度也相应变高。如果分数再次降低,游戏难度也会随之变低。 分数达到0分,游戏结束。可以回到主界面重新开始游戏。 可以使用Visual Studio直接打开工程文件进行调试。 |
CopyRight 2018-2019 实验室设备网 版权所有 |