前言
本篇主要介绍Robocode中如何对敌方进行扫描并且不断调整自身的雷达移动方式以达到长时间瞄准的效果,如果该效果实现了,是不是就会对我们坦克的后续的战斗增加很重要的砝码呢!
直线瞄准策略
官方图
∠AEF= ∠α=敌人与Y轴夹角的绝对角(见前面例子)
子弹的由E到F的运行时间为diff
坦克的运行速度speed=ScannedRobotEvent. getVelocity();
AB=speed*diff
我们可以算出B点的坐标为,A点坐标(x,y)
newX=x+AB*Math.sina(α)
newY=y+EF*Math.cos(α)
炮弹应该转动的角为normalRelativeAngle(α- getGunHeadingRadians())
圆周瞄准策略
其基本原理是:
change in x = cos(initialheading) * radius - cos(initialheading + changeinheading) * radius
change in y = sin(initialheading + changeinheading) * radius - sin(initialheading) * radius
其中initialheading是敌方机器人在初始位置的方向,子弹飞行期间的方向变化为 changeinheading,我们假定它以 radius为圆周半径运动。