import java.util.HashMap; import java.util.LinkedList; import java.util.Map; import robocode.*; public class FirstRobot extends AdvancedRobot { public void init(){ System.out.println("Good bye cruel world:"); new HashMap(); System.out.println("im dead"); //addCustomEvent(c); //setAdjustRadarForGunTurn(false); //setAdjustGunForRobotTurn(false); } public void run(){ System.out.println(this.getName()); init(); //turnRight(getHeading()); //turnGunRight(90); while(true){ this.turnRadarRight(360); //ahead(36); } } public void onScannedRobot(ScannedRobotEvent e){ String name = e.getName(); if(!enemies.containsKey(name)){ enemies.put(name, new EnemyRecord()); } enemies.get(name).update(e); } public double relToAbsHdgDeg(double deg){ return deg + getHeading(); } public double relToAbsHdgRad(double rad){ return rad + getHeadingRadians(); } public void aimGun(double hdg){ double change = (hdg - this.getGunHeading()+360)%360; if(change > 0 && change < 180){ this.turnGunRight(change); } else if(change > 180 && change < 360) { this.turnGunLeft(360-change); } } public void aimRobot(double hdg){ double change = (hdg - this.getHeading() + 360)%360; if(change > 0 && change < 180){ this.turnRight(change); } else if(change > 180 && change < 360) { this.turnLeft(360-change); } } Map enemies = new HashMap(); class EnemyRecord { EnemyRecord(){ } String name; public void update(ScannedRobotEvent e){ double absHdg = relToAbsHdgRad(e.getBearingRadians()); double x = getX() + Math.cos(absHdg); double y = getY() + Math.sin(absHdg); System.out.println("Seen " + name + " at " + x + ", " + y); log.add(new PosLog(getTime(),x,y,e.getHeading())); } LinkedList log = new LinkedList(); class PosLog{ long time; double x; double y; double hdg; public PosLog(long time, double x, double y, double hdg) { this.time = time;this.x = x;this.y = y;this.hdg = hdg; } } } }