2017-05-22 63 views
0

我正在嘗試爲Robocode製作一個機器人,該機器人在看到機器人時始終保持垂直。Robocode Responsive車削

如果你不知道什麼是的robocode試想一下,一個自上而下的遊戲,方向被記錄在度

我已經做了一個方程我想要做什麼,但它是非常低效的

(e.getHeading是目標所面對的方向, getHeading是我面對 音符的方向也有示出相對於敵人的角度的方法getBearing)

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

但問題是,它有時會走很長的路,而不是最短的路線。我可以用什麼更好的方程來總是轉向正確的方式?

回答

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) 
0

您可以使用

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

e.getHeading()是敵人的標題。