本次坦克大战项目已实现的功能
背景音效,动画界面,各级菜单选项,暂停游戏,重新开始,储存与读取游戏进度。
单人,双人(闯关模式) (自定义游戏),双人联机模式
每辆坦克独立的HP,MP,移动速度,攻击CD,自动回HP,MP,3种不同的炮弹攻击
针对BOSS的自动寻找玩家并攻击。使用A星算法。
各种类型食物:无敌,攻击翻倍,全屏秒杀,无限子弹,全场冰冻。
各种类型敌人:4种按等级区分的普通敌人,1种终极BOSS敌人
各种类型障碍物:钢墙,土墙,草丛,河流
自定义编辑地图,保存地图,打开地图继续编辑,使用自定义地图开始游戏。
源码分享:https://github.com/Mr-Hock/MyTank
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 坐标点类:POINTDATA
除了坦克。
各种障碍物,加成道具(食物),炮弹。
都是由每个独立的坐标点组成的
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 动态数组:vector
游戏的每个图案都是由坐标点构成
所以需要用动态数组储存每个类的坐标点数组
本次设计所使用的动态数组均为全局范围
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 游戏主要类
坦克类
食物类
子弹类
障碍物类
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 游戏扩展类
PC坦克控制类
自定义地图类
TCP通信类
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 接收按键消息
使用GetAsyncKeyState函数
取异步按键状态
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 菜单操作使用鼠标消息
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 闯关模式
循环读取关卡地图
调用StartGame函数开始游戏
过关后跳出函数读取下一个地图
继续下一关。。。
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 自定义游戏
弹出Windows文件框
GetSaveFileNameA
GetOpenFileNameA
自动识别地图为单人还是双人
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 联机游戏模式
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 联机模式构架
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 玩家A实现
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 玩家B实现
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 坦克类
该类定义了坦克的所有属性
编写了坦克的所有操作
定义一个坦克类对象就有一部坦克
定义N个就有N部
每部坦克都是一个独立的对象
电脑的坦克只需要用vector储存
然后通过遍历数组,调用不同的操作
即可让每部坦克拥有不同的行为
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 自动控制PC坦克类
通过对Vector的遍历
分别对每部坦克进行操作
生成坦克:
New Tank(x,y,dir,hp,mp…)
Vector.push_back(New Tank)
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 自动控制PC坦克类
判断坦克数量是否上限,不满足则生成新坦克
指定一段时间后自动生成指定类型的坦克
遍历所有在活动的坦克,指定随机行为
(改变方向,移动,发不同的炮弹)
判断坦克是否碰到玩家子弹
(减坦克HP,删除死亡坦克,
炮弹反击,触发自动寻路等)
刷新所有PC坦克
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 各种食物类型
加攻击,坦克类函数内有自身的攻击力变量
无限子弹,在发炮时判断状态,减MP
无敌,碰到电脑子弹判断状态是否减HP
冰冻敌人,控制PC坦克类不调用移动行为即可
全屏秒杀,将PC坦克清除并加分
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 炮弹类型
判断炮弹前面是什么障碍物
如果是土墙,则擦除这块土墙。
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 炮弹移动规则
判断炮弹当前位置是什么障碍物
执行对应的操作
炮弹对着发射会抵消
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 无敌实现方法:
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 储存存档。
首先储存数据的数量,再储存具体的数据
最后写出文件。使用GetSaveFileNameA函数
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 读取存档
初始化所有动态数组
将存档按指定的顺序读入
加入到动态数组内
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 首先读出数组的数量,再接着往后读取数组的数据
读取后存入申请的临时空间,并将m_data重新赋值
因为读出来的是上一次字符串地址,并不是图案
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 新建自定义地图
主要使用检测鼠标函数完成绘画
检测鼠标点击的位置,将设计画面分为3个框架
绘图区,工具界面区,保存与退出区
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 再次编辑自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图 储存自定义地图
首先将Map类所有画出的坐标与图案进行判断归类
分别压入不同类型的动态数组内
然后再按动态数组类型进行保存
先储存数组元素的数量,再储存数组内的数据
最后以二进制的形式写到文件
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图
C/C++坦克大战项目坦克类自动控制PC坦克类自动控制PC坦克类各种食物类型炮弹类型炮弹移动规则储存存档。读取存档新建自定义地图再次编辑自定义地图储存自定义地图