开发目标
编写一个游戏能够实现“直升机打坦克”的游戏。
功能分析
- 游戏中有一个直升机在空中飞行,同时有多辆坦克在地面运动
- 每个不同的坦克具有不同的分数。
- 直升机通过释放炸弹完成对坦克的打击,每击中一辆坦克,则总分加上对应分数,每浪费一枚炮弹,总分减一分。
- 每辆坦克上有个数字,坦克从左往右移动,移到右端后会再从左侧出来;
- 飞机到了边界后掉头回来,用键盘的左右键可以改变飞机的飞行方向,按空格键飞机投放炸弹;
- 鼠标点击飞机,则飞机暂停飞行(悬停),再点击飞机,飞机继续飞行。
- 界面上能够显示直升机打击坦克动画效果,同时有控制按键,并实时显示用户名和当前比分。
开发环境及技术栈
- Visual Studio 2019 + C语言 + EasyX_2021;
- 链表;
- 本地数据存储
总体效果
功能需求
基本功能
-
输入用户名
程序运行时先输入用户名,并把用户名显示在信息显示区中
-
输入坦克数量
完成用户名输入后,程序需要输入游戏中的坦克数量,后续游戏加载对应数量的坦克 -
游戏过程控制
在游戏过程中,分别有开始、结束、增加、退出按钮,用于对当前游戏过程进行控制。
单击“开始”按钮,游戏开始,坦克开始间隔运动,同时从左向右匀速运动。
单击“增加”按钮,能自动增加一辆坦克。
单击“结束”按钮,本局游戏结束,得分清零,所有坦克消失,但不结束游戏。当再次点击“开始”按钮,则下一盘游戏从头开始,重新计分。 -
直升机状态控制
能够响应键盘方向键(←和→)分别对应直升机的左右移动;能够响应空格键(SpaceKey)对应直升机释放炸弹;能够响应鼠标点击对应直升机悬停或者继续原有飞行状态。 -
炸弹状态控制
当炸弹被直升机释放时,炸弹能够从直升机对应的位置呈现近似平抛运动,最终落到地面炸毁或者击中坦克炸毁,击中后炸弹和对应的坦克消失。 -
坦克状态控制
坦克上包括对应的分数数字,随机产生,范围在1-9之间。同时坦克能够自动从左向右运动,当坦克到达有边界后,继续从左边界重新驶出。 -
显示得分
游戏能够动态显示当前游戏得分。 -
保存用户名和分数
当单击“退出”按钮后,能够将当前的用户名和得分存入文件。
界面设计
初始化窗口
用户名输入窗口如图所示。在游戏开始加载后,弹出用户名输入框。用户在框内输入玩家用户名,用于后续在游戏中显示用户名称。坦克数量初始化窗口如图所示。在完成用户名输入后,将弹出坦克数量初始化窗口。用户在窗口内输入对应的坦克数量,点击确定后即开始游戏。
游戏界面
界面分为三个区域:游戏区、控制区、信息显示区,如图1-3所示。
游戏区主要包括背景画面,以及玩家直升机、移动中的坦克等。控制区包含5个按钮,分别是“开始”,“结束”,“保存状态”,“增加”“退出”等功能。信息显示区分别显示当前玩家的用户名和当前游戏分数。
总体设计
划分为8个模块,分别是数据结构、初始化、键盘控制、鼠标控制、坦克控制、炸弹控制、文件处理和工具函数。
主要数据结构
- 坦克结构体
- 坦克链表
- 直升机结构体
- 炸弹结构体
- 炸弹链表
- 游戏数据结构体
详细设计
本周更新