NJU南京大学高程课设:坦克大战(BattleCity)

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

高程课设:坦克大战

代码已上传至Github, 请关注Github账号:SH_Hattrick
代码传送门

.
.
.


2020年4月,大一时编写,现在看来代码还有很高的改进空间(高情商说法)

.
.
.

本次课设完成了对4399小游戏:坦克大战的低配模拟。

接下来我将从以下几个方面介绍本次课设的内容。

  1. 设计内容和程序功能
  2. 模块划分和数据结构安排
  3. 设计收获

设计内容与程序功能

本次坦克大战项目的大体功能如下:

  1. 实现三种类型的坦克:重型(HeavyTank),装甲(ArmoredTank),轻型(LightTank).
  2. 实现三种地形(基地本身算一种特殊地形,因此应是四种),砖墙,铁墙,草地
  3. 实现三种buff:黄色:回复全部生命值。绿色:提升攻击力。紫色:暂时无敌
  4. 右侧状态栏打印总用时;已摧毁敌军数,以及剩余生命值(上图中没有体现剩余生命值,因截图在实现该功能之前)。
  5. 三种地形的效果基本与经典游戏相同:砖墙(BrickWall)可被一枚炮弹摧毁,铁墙(IronWall)不可摧毁,但可以被吃到绿色道具的玩家摧毁,草地(Grass)可穿过,炮弹可穿过,不可摧毁。
  6. 三种坦克生命值分别为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();
	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值