/*******************************************************************************
* Copyright (c) 2001, 2010 Mathew A. Nelson and Robocode contributors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://robocode.sourceforge.net/license/epl-v10.html
*
* Contributors:
* Flemming N. Larsen
* - Initial implementation
*******************************************************************************/
package tested.robots;
/**
* @author Flemming N. Larsen (original)
*/
public class BodyTurnRate extends robocode.AdvancedRobot {
public void run() {
// Test turn rate at all speed moving ahead and turning left
setAhead(1000);
setTurnLeft(360);
executeAndDumpTurnRate9turns();
stopMoving();
// Test turn rate at all speed moving ahead and turning right
setAhead(1000);
setTurnRight(360);
executeAndDumpTurnRate9turns();
stopMoving();
// Test turn rate at all speed moving back and turning right
setBack(1000);
setTurnRight(360);
executeAndDumpTurnRate9turns();
stopMoving();
// Test turn rate at all speed moving back and turning left
setBack(1000);
setTurnLeft(360);
executeAndDumpTurnRate9turns();
stopMoving();
}
private void executeAndDumpTurnRate9turns() {
for (int i = 0; i < 9; i++) {
executeAndDumpTurnRate();
}
}
private void executeAndDumpTurnRate() {
double lastHeading = getHeading();
double lastVelocity = getVelocity();
execute();
double turnRate = robocode.util.Utils.normalRelativeAngleDegrees(getHeading() - lastHeading);
out.println(getTime() + ": " + lastVelocity + ", " + turnRate);
}
private void stopMoving() {
setAhead(0);
setTurnLeft(0);
for (int i = 0; i < 6; i++) {
executeAndDumpTurnRate();
}
}
}