while true loop
The highlighted comment was created in this revision.
How is the while (true) loop actually broken down? Does robocode executes the code there 1 iteration per turn? Or..?
Generally, yes - when you call execute(), the Robocode engine processes one tick, including firing all the events on your bot, and then your run() method continues executing. So most of us have an infinite loop that calls execute() at the end, and each iteration is one tick.
But there's no magic to it - you could have a run method that goes:
public void run() {
turnRight(20);
ahead(100);
fire(3);
}
And that would be perfectly valid. Or you could call execute() every third iteration of your loop. In Dookious, my run method used to have a loop that was while (notWonYet) ...
, then a victory dance.
The timing thing for me is very confusing...
For example, if i want to fire at a certain angle, i have to rotate to it.. by the time i do.. i have another angle... which requires more rotation.. etc..
Same thing for turning the robot and going ahead.. I never know how to correctly time them. (Effectively stuck)
For gun aiming, see Game_Physics#Firing_Pitfall. This can cause your aim to be a tick behind. I think most robots don't worry about it. But if you do worry about it, what I do is predict robot positions 1 tick into the future and use that for aiming. It's not exact, but works well enough for me.