C/C++坦克大战项目

本次坦克大战项目已实现的功能

背景音效,动画界面,各级菜单选项,暂停游戏,重新开始,储存与读取游戏进度。

单人,双人(闯关模式) (自定义游戏),双人联机模式

每辆坦克独立的HP,MP,移动速度,攻击CD,自动回HP,MP,3种不同的炮弹攻击
针对BOSS的自动寻找玩家并攻击。使用A星算法。

各种类型食物:无敌,攻击翻倍,全屏秒杀,无限子弹,全场冰冻。
各种类型敌人:4种按等级区分的普通敌人,1种终极BOSS敌人
各种类型障碍物:钢墙,土墙,草丛,河流

自定义编辑地图,保存地图,打开地图继续编辑,使用自定义地图开始游戏。

源码分享:https://github.com/Mr-Hock/MyTank

在这里插入图片描述

坐标点类:POINTDATA

除了坦克。
各种障碍物,加成道具(食物),炮弹。
都是由每个独立的坐标点组成的
在这里插入图片描述

动态数组:vector

游戏的每个图案都是由坐标点构成
所以需要用动态数组储存每个类的坐标点数组
本次设计所使用的动态数组均为全局范围
在这里插入图片描述

游戏主要类

坦克类
食物类
子弹类
障碍物类
在这里插入图片描述

游戏扩展类

PC坦克控制类
自定义地图类
TCP通信类
在这里插入图片描述

接收按键消息

使用GetAsyncKeyState函数
取异步按键状态
在这里插入图片描述
在这里插入图片描述

菜单操作使用鼠标消息

在这里插入图片描述
在这里插入图片描述

闯关模式

循环读取关卡地图
调用StartGame函数开始游戏
过关后跳出函数读取下一个地图
继续下一关。。。
在这里插入图片描述
在这里插入图片描述

自定义游戏

弹出Windows文件框
GetSaveFileNameA
GetOpenFileNameA
自动识别地图为单人还是双人
在这里插入图片描述
在这里插入图片描述

联机游戏模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

联机模式构架

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

玩家A实现

在这里插入图片描述

玩家B实现

在这里插入图片描述
在这里插入图片描述

坦克类

该类定义了坦克的所有属性
编写了坦克的所有操作

定义一个坦克类对象就有一部坦克
定义N个就有N部

每部坦克都是一个独立的对象

电脑的坦克只需要用vector储存
然后通过遍历数组,调用不同的操作
即可让每部坦克拥有不同的行为
在这里插入图片描述

自动控制PC坦克类

通过对Vector的遍历
分别对每部坦克进行操作
生成坦克:
New Tank(x,y,dir,hp,mp…)
Vector.push_back(New Tank)
在这里插入图片描述

自动控制PC坦克类

判断坦克数量是否上限,不满足则生成新坦克
指定一段时间后自动生成指定类型的坦克

遍历所有在活动的坦克,指定随机行为
(改变方向,移动,发不同的炮弹)

判断坦克是否碰到玩家子弹
(减坦克HP,删除死亡坦克,
炮弹反击,触发自动寻路等)

刷新所有PC坦克
在这里插入图片描述
在这里插入图片描述

各种食物类型

加攻击,坦克类函数内有自身的攻击力变量
无限子弹,在发炮时判断状态,减MP
无敌,碰到电脑子弹判断状态是否减HP
冰冻敌人,控制PC坦克类不调用移动行为即可
全屏秒杀,将PC坦克清除并加分
在这里插入图片描述

炮弹类型

判断炮弹前面是什么障碍物
如果是土墙,则擦除这块土墙。
在这里插入图片描述

炮弹移动规则

判断炮弹当前位置是什么障碍物
执行对应的操作
炮弹对着发射会抵消
在这里插入图片描述

无敌实现方法:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

储存存档。

首先储存数据的数量,再储存具体的数据
最后写出文件。使用GetSaveFileNameA函数
在这里插入图片描述
在这里插入图片描述

读取存档

初始化所有动态数组
将存档按指定的顺序读入
加入到动态数组内
在这里插入图片描述

首先读出数组的数量,再接着往后读取数组的数据
读取后存入申请的临时空间,并将m_data重新赋值
因为读出来的是上一次字符串地址,并不是图案
在这里插入图片描述

新建自定义地图

主要使用检测鼠标函数完成绘画
检测鼠标点击的位置,将设计画面分为3个框架
绘图区,工具界面区,保存与退出区

在这里插入图片描述
在这里插入图片描述

再次编辑自定义地图

在这里插入图片描述
在这里插入图片描述

储存自定义地图

首先将Map类所有画出的坐标与图案进行判断归类
分别压入不同类型的动态数组内
然后再按动态数组类型进行保存
先储存数组元素的数量,再储存数组内的数据
最后以二进制的形式写到文件
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43572067/article/details/84182714