思路
坦克大战中坦克是不能够遵循一套固定的向着己方坦克或者老家的寻路系统的,因为这样的话就会使坦克的行动路线过于固定,己方坦克不动的时候新生成的敌人会沿着固定的路线过来,可玩性大大降低。所以还是随机的寻路比较可行,原生的坦克大战也是这么做的。MFC是利用定时器进行刷新的,所以没有办法让坦克在每一帧的行进过程中完成寻路,所以我想到了提前算好线路,也就是有远见的坦克。
- 从生成坦克开始,坦克随机选择一条障碍物与自己距离大于一个最小距离临界值的路直线,设长为L。
- 一直沿着这条直线走L的距离再重复第一步下,随机选择路线
代码实现
首先是如何判断出四个方向的路线上距离障碍物(不可穿过的地图块、游戏周围的墙壁)多远的问题
可以使用步进的方法,每个方向步进一遍直到碰撞为止返回步进的距离(步进的方式可以使地图块)
//离障碍路的距离计算,传入值为当前位置,返回值为距离
int CTankView::LenthToCollision(CPoint PositionNow, int direction) {
int i, j;
if (direction == 1) {
for (i = PositionNow.y; i <= 446; i++) {
if (CollisionDetectionForTank(PositionNow.x, i, 26, 30, 1))//26和30为敌方坦克的宽和高,这里用参数不好传也没必要传
return i - PositionNow.y;
}
}
}