基于C++的简单飞机大战游戏 您所在的位置:网站首页 飞机大战java程序代码 基于C++的简单飞机大战游戏

基于C++的简单飞机大战游戏

2023-06-30 21:39| 来源: 网络整理| 查看: 265

【题目要求】

设计一个简单的飞机大战游戏,满足以下需求:

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 实验室设备网 版权所有