---
# System prepended metadata

title: Untitled

---

木浦
package sample;
import robocode.*;
import java.awt.*;
//import java.awt.Color;

// API help : https://robocode.sourceforge.io/docs/robocode/robocode/Robot.html

/**
 * Kiura01 - a robot by (your name here)
 */
public class Kiura01 extends AdvancedRobot
{
	int moveDirection=1;//which way to move
	int myHealth=100;//HP of my robot
	/**
	 * run: Kiura01's default behavior
	 */
	public void run() {
	    setAdjustRadarForRobotTurn(true);//keep the radar still while we turn
		
		// setColors(Color.red,Color.blue,Color.green); // body,gun,radar
        setBodyColor(new Color(128, 128, 50));
        setGunColor(new Color(50, 50, 20));
        setRadarColor(new Color(200, 200, 70));
        setScanColor(Color.white);
        setBulletColor(Color.blue);
		
        setAdjustGunForRobotTurn(true); // Keep the gun still when we turn
        turnRadarRightRadians(Double.POSITIVE_INFINITY);//keep turning radar right
		// Robot main loop
		//while(true) {
			// Replace the next 4 lines with any behavior you would like
			//ahead(100);
			//turnGunRight(360);
			//back(100);
			//turnGunRight(360);
		//}
	}

	
	/**
	 * onScannedRobot: What to do when you see another robot
	 */
	public void onScannedRobot(ScannedRobotEvent e) {
        double absBearing=e.getBearingRadians()+getHeadingRadians();//enemies absolute bearing
        double latVel=e.getVelocity() * Math.sin(e.getHeadingRadians() -absBearing);//enemies later velocity
        double gunTurnAmt;//amount to turn our gun
        setTurnRadarLeftRadians(getRadarTurnRemainingRadians());//lock on the radar
        if(Math.random()>.9){
            setMaxVelocity((12*Math.random())+12);//randomly change speed
        }
		

        if (e.getDistance() > 150) {//if distance is greater than 150
            	gunTurnAmt = robocode.util.Utils.normalRelativeAngle(absBearing- getGunHeadingRadians()+latVel/22);//amount to turn our gun, lead just a little bit
            	setTurnGunRightRadians(gunTurnAmt); //turn our gun
            	setTurnRightRadians(robocode.util.Utils.normalRelativeAngle(absBearing-getHeadingRadians()+latVel/getVelocity()));//drive towards the enemies predicted future location
				
				if (getEnergy() > 80) {
            		setAhead((e.getDistance() - 140)*moveDirection);//move forward
            		setFire(3);//fire
				}
				else if (getEnergy() > 40) {
					if( (getEnergy()- e.getEnergy() ) >20){
						setAhead((e.getDistance() - 140)*moveDirection);//move forward
            			setFire(3);//fire
                	}
   					else{
					setTurnLeft(45);
					setBack(140);
					setTurnRight(45);
						setFire(1);
    				}
				}
	 	}
        else{//if we are close enough...
            gunTurnAmt = robocode.util.Utils.normalRelativeAngle(absBearing- getGunHeadingRadians()+latVel/15);//amount to turn our gun, lead just a little bit
            setTurnGunRightRadians(gunTurnAmt);//turn our gun
            setTurnLeft(-90-e.getBearing()); //turn perpendicular to the enemy
			if (getEnergy() > 80) {
            	setAhead((e.getDistance() - 140)*moveDirection);//move forward
            	setFire(3);//fire
				}
			else if (getEnergy() > 40) {
				if((getEnergy()-e.getEnergy())>20){
					setAhead((e.getDistance() - 140)*moveDirection);//move forward
            		setFire(3);//fire
                }
   				else{
					setTurnLeft(45);
					setBack(140);
					setTurnRight(45);
					setFire(1);
    			}
			}			
        }
	}

	/**
	 * onHitByBullet: What to do when you're hit by a bullet
	 */
	public void onHitByBullet(HitByBulletEvent e) {
		// Replace the next line with any behavior you would like
		//back(10);
		setTurnLeft(135);
		setAhead(140);
		  
	}
	
	/**
	 * onHitWall: What to do when you hit a wall
	 */
	public void onHitWall(HitWallEvent e) {
		// Replace the next line with any behavior you would like
        moveDirection=-moveDirection;
	}	
}
