package exe; import robocode.*; import java.util.*; import java.awt.Color; /** * @author Fumi Iseki * * 演習用 Level-03 ロボット 速射砲台 * */ public class Level_03 extends Robot { private boolean searchFirst = true; private boolean findEnemy; private double enemyAngle; public void run() { setColors(Color.yellow, Color.yellow, Color.red); setAdjustRadarForGunTurn(true); setAdjustGunForRobotTurn(true); while(true) { turnRadarRight(360); do { findEnemy = false; double la = getRelAngle(enemyAngle+20, getRadarHeading()); turnRadarRight(la); double ra = getRelAngle(enemyAngle-20, getRadarHeading()); turnRadarRight(ra); } while(findEnemy); } } public void onScannedRobot(ScannedRobotEvent e) { findEnemy = true; turnRadarRight(0); enemyAngle = e.getBearing() + getHeading(); double kd = getRelAngle(enemyAngle, getGunHeading()); turnGunRight(kd); if (getGunHeat()==0) { fire(3); } scan(); } /** * 絶対角度 hdから gdへの(右回りの)相対角度を返す.返す角度は -180〜180 */ public double getRelAngle(double gd, double hd) { double kd = gd - hd; if (kd<-180) return kd + 360; else if (kd>180) return kd - 360; return kd; } }