public void run() {
		System.out.println("Running");
		setAdjustRadarForRobotTurn(true);
		setAdjustGunForRobotTurn(true);
		setAdjustRadarForGunTurn(true);
		
		// Creating the custom event EnemyFires
		addCustomEvent(new Condition("EnemyFires") {
			public boolean test() {
				return (enemy != null
						&& enemy.previousEnergy > enemy.energy
						&& enemy.previousEnergy - enemy.energy <= robocode.Rules.MAX_BULLET_POWER
						&& !Utils.isNear((enemy.previousEnergy - enemy.energy),
								robocode.Rules.getBulletDamage(bulletPower)) && enemy.distance > 55);
			};
		});
		
		this.initialize();
		this.selectBehavior();
		
		this.setColors(Color.red, Color.blue, Color.yellow, Color.black,
				Color.green);
		turnRadarRightRadians(2 * Math.PI);
		System.out.println("Gene:" + this.gene.getGene());
		System.out.println(movement.getClass());
		System.out.println(gun.getClass());
		System.out.println(radar.getClass());
		System.out.println(targeting.getClass());
		while (true) {
			if(enemy!=null){
			this.updateEnemyBullets();
			
			this.executeBehavior();
			}else{
				turnRadarRightRadians(2 * Math.PI);
			}
		}
	}