/** * */ package rampancy.nano; import robocode.*; import robocode.util.Utils; /** * @author Matthew Chun-Lum * */ public class Atropos extends AdvancedRobot { static double lastEnergy; static double moveDistance; public void run() { setAdjustGunForRobotTurn(true); setAdjustRadarForGunTurn(true); setAdjustRadarForRobotTurn(true); while(getRadarTurnRemaining() == 0) setTurnRadarRightRadians(Math.PI * 5); } public void onScannedRobot(ScannedRobotEvent e) { double radarBearingOffset = Utils.normalRelativeAngle(getRadarHeadingRadians() - (e.getBearingRadians() + getHeadingRadians())); double sign = (radarBearingOffset < 0 ? -Math.PI / 6 : Math.PI / 6); setTurnRadarLeftRadians(radarBearingOffset + sign); if(e.getEnergy() < lastEnergy) { moveDistance = Math.random() * 100 + 100; if(Math.random() > 0.5) moveDistance = -moveDistance; setAhead(moveDistance); } lastEnergy = e.getEnergy(); setTurnRightRadians(Utils.normalRelativeAngle(e.getBearingRadians() + Math.PI / 2)); setTurnGunRightRadians(Utils.normalRelativeAngle(e.getBearingRadians() + getHeadingRadians() - getGunHeadingRadians())); setFire(0.2); } public void onHitWall(HitWallEvent e) { setAhead(-moveDistance); } }