package session1;
import robocode.*;
public class NinjaBot extends JuniorRobot {
private int turnAmt=20;
private int robotDistance;
private int rotation=1;
private int hitCounter=0;
private boolean init=true;
public void run(){
setColors(black, black, black, black, black);
while(true){
findRobot();
}
}
private void findRobot(){
while(init) turnGunRight(10);
turnGunRight(turnAmt);
turnAmt*=2;
turnGunLeft(turnAmt);
turnAmt*=2;
}
public void onScannedRobot(){
robotDistance=scannedDistance;
init=false;
turnAmt=10;
turnTo(scannedAngle-90);
bearGunTo(90);
fireShot();
if(!gunReady) bearGunTo(90);
circle();
}
private void fireShot(){
fire((1000-robotDistance)/300);
}
private void circle(){
int turnDistance=(int)((31.4*robotDistance)/180)*rotation;
if(rotation==1) turnAheadRight(turnDistance, 10);
else turnAheadLeft(turnDistance, 10);
}
public void onHitWall(){
fireShot();
reverse();
}
public void onHitRobot(){
turnGunTo(hitRobotAngle);
fire(3);
doNothing();
}
public void onHitByBullet(){
hitCounter++;
if(hitCounter>=3) reverse();
}
private void reverse(){
if(rotation==1) rotation=-1;
else rotation=1;
hitCounter=0;
}
}