MFC游戏编程——有远见的坦克(坦克大战中坦克的寻路系统)未完结

思路

坦克大战中坦克是不能够遵循一套固定的向着己方坦克或者老家的寻路系统的,因为这样的话就会使坦克的行动路线过于固定,己方坦克不动的时候新生成的敌人会沿着固定的路线过来,可玩性大大降低。所以还是随机的寻路比较可行,原生的坦克大战也是这么做的。MFC是利用定时器进行刷新的,所以没有办法让坦克在每一帧的行进过程中完成寻路,所以我想到了提前算好线路,也就是有远见的坦克。

  1. 从生成坦克开始,坦克随机选择一条障碍物与自己距离大于一个最小距离临界值的路直线,设长为L。
  2. 一直沿着这条直线走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;
		}
	}
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值