Robocode响应转向

时间:2017-05-22 05:07:31

标签: java math equation degrees robocode

我正在尝试为机器人制造一个机器人,当它看到一个机器人时,它总是垂直转动。

如果你不知道什么是robocode只是想象一个自上而下的游戏,其中方向以度数记录

我已经制定了一个方程式,可以满足我的要求,但效率非常低

(e.getHeading是目标面向的方向,  getHeading是我面临的方向  请注意,还有一个方法getBearing显示相对于敌人的角度)

turnRight( (e.getHeading() + 90) - getHeading());

但问题是它有时会走很远的路而不是最短的路线。我可以用什么更好的方程式来改变方向?

2 个答案:

答案 0 :(得分:0)

您必须将

的结果标准化
degdiff = (e.getHeading() + 90) - getHeading()

因此它在-180..180范围内。这是

if(degdiff >  180) degdiff -=360;
if(degdiff < -180) degdiff +=360;

degdiff = (degdiff%360 + 540)%360 -180

然后

turnRight(degdiff)

答案 1 :(得分:0)

您可以使用

setTurnRightRadians(normalRelativeAngle(e.getBearingRadians() + Math.PI / 2))

e.getHeading()是敌人的标题。