高程课设:坦克大战
代码已上传至Github, 请关注Github账号:SH_Hattrick
代码传送门
.
.
.
2020年4月,大一时编写,现在看来代码还有很高的改进空间(高情商说法)
.
.
.
本次课设完成了对4399小游戏:坦克大战的低配模拟。
接下来我将从以下几个方面介绍本次课设的内容。
- 设计内容和程序功能
- 模块划分和数据结构安排
- 设计收获
设计内容与程序功能
本次坦克大战项目的大体功能如下:
- 实现三种类型的坦克:重型(HeavyTank),装甲(ArmoredTank),轻型(LightTank).
- 实现三种地形(基地本身算一种特殊地形,因此应是四种),砖墙,铁墙,草地
- 实现三种buff:黄色:回复全部生命值。绿色:提升攻击力。紫色:暂时无敌
- 右侧状态栏打印总用时;已摧毁敌军数,以及剩余生命值(上图中没有体现剩余生命值,因截图在实现该功能之前)。
- 三种地形的效果基本与经典游戏相同:砖墙(BrickWall)可被一枚炮弹摧毁,铁墙(IronWall)不可摧毁,但可以被吃到绿色道具的玩家摧毁,草地(Grass)可穿过,炮弹可穿过,不可摧毁。
- 三种坦克生命值分别为5,4,3
这就是本次课设的具体设计内容,接下来时具体模块划分。
模块划分与数据结构安排
本次课程设计有以下头文件:
Tank.h Tool.h AITank.h Game.h Control.h。
Class Widget:
所有类的基类。坦克(Tank),炮弹(Shell),地形(Block),加成(Buff)全部由它继承而来。
该类设计如下
protected:
int _x = 0;//横坐标
int _y = 0;//纵坐标
int x_size = 0;//横轴大小
int y_size = 0;//纵轴大小
int health = 0;//血量
int maxhealth = 0;//最大血量
IMAGE rim;//图像
Public:
bool existence = false;
bool penetrable = false;
Widget(int x, int y, int h) :_x(x), _y(y), health(h) {
existence = true;
loadimage(&rim, _T("../images/black.jpg"), XSIZE, YSIZE);
}
void undrawWidget();
virtual void drawWidget() = 0;
int giveHealth();

本文介绍了一个简化版坦克大战游戏的设计与实现过程。游戏包括三种坦克类型、四种地形、三种BUFF及游戏状态显示等功能。文章详细阐述了模块划分、数据结构安排、设计收获等内容。
最低0.47元/天 解锁文章
244

被折叠的 条评论
为什么被折叠?



