# 基于C++实现的坦克大战游戏
# 游戏介绍
![](http://www.writebug.com/myres/static/uploads/2021/10/19/9bb3741c2af879a88c0abb2a34fb3d91.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/40462dd75754de924f746178ab321e4d.writebug)
- 上面分别是下一次要改变的方向,是上、左的时候,原始状态的不同情况;右、下类似
- 已移动后,不擦除原来的障碍物为第一出发点
- 走到这种状态,是有前提的,这点很重要,也是能处理好的根本原因;不会凭空,走到某种状态
- 符合行为规范
注意:关于同类坦克情况,禁止互相跨越的时候,和这个障碍物的判断,还有所不同,这个 判断,要完全按照9格处理,否则,会导致无法移动;
# 1 子弹和坦克数据结构
![](http://www.writebug.com/myres/static/uploads/2021/10/19/2e62ff18781797547623af2a80076046.writebug)
# 2 子弹组织成链表结构
敌方坦克的移动和发射子弹,主要考虑在单线程下,如何判断——时间差。
另外,在控制坦克移动时,可以使用的逻辑,但是,也要注意下,按键去抖。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/45ea42b9f2cf587840a70f9cb9c8df50.writebug)
# 3 游戏设计
子弹遇到边界或这敌方子弹,消失的时候,对应要free掉产生时的空间,同时,维持链表结 构不被破坏。
子弹遇到敌方坦克,敌方坦克消失,这个处理,可以在相遇的位置,设置一个不同的值;坦 克移动的时候,检查,它的值是不是包含这个,包含,证明自己被击中,就要销毁掉它的数 据结构,尤其注意子弹的销毁。
关于,存档,如果杀死了一个坦克,这时候保存,要注意消失的是哪个,因此,需要记录下 标;不过,后来,设计的时候,每死掉一个坦克,就会自动产生一个,因此,这个也算是一 个预留的接口吧。
单线程处理起来,有时候,会感觉到控制坦克时,有时候会很快,有时候,会比较慢,这也 体现出了一定的局限性。
另外,最为重要的一点,思想要灵活,各种语言的规范,规矩,互相之间,可以在遵循某些 情况的前提下,进行变通和引进。
记录至此;至于画图,等其他功能,和贪食蛇基本类似,可以拿来主义。
# 4 游戏演示
![](http://www.writebug.com/myres/static/uploads/2021/10/19/8a87c9ce98017109d9ee0eef52412611.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/c49346b5b242b453ff7501c3f9885143.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/80d0f07d2aa8cdcd25e013a4e1a9681a.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/61b684484e339f40ec850b1f8157b2ec.writebug)