/*******************************************************************************
* Copyright (c) 2001, 2010 Mathew A. Nelson and Robocode contributors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://robocode.sourceforge.net/license/epl-v10.html
*
* Contributors:
* Mathew A. Nelson
* - Initial implementation
* Flemming N. Larsen
* - Maintainance
*******************************************************************************/
package sample;
import robocode.HitRobotEvent;
import robocode.Robot;
import robocode.ScannedRobotEvent;
import java.awt.*;
/**
* RamFire - a sample robot by Mathew Nelson, and maintained by Flemming N. Larsen
* <p/>
* Drives at robots trying to ram them.
* Fires when it hits them.
*/
public class RamFire extends Robot {
int turnDirection = 1; // Clockwise or counterclockwise
/**
* run: Spin around looking for a target
*/
public void run() {
// Set colors
setBodyColor(Color.lightGray);
setGunColor(Color.gray);
setRadarColor(Color.darkGray);
while (true) {
turnRight(5 * turnDirection);
}
}
/**
* onScannedRobot: We have a target. Go get it.
*/
public void onScannedRobot(ScannedRobotEvent e) {
if (e.getBearing() >= 0) {
turnDirection = 1;
} else {
turnDirection = -1;
}
turnRight(e.getBearing());
ahead(e.getDistance() + 5);
scan(); // Might want to move ahead again!
}
/**
* onHitRobot: Turn to face robot, fire hard, and ram him again!
*/
public void onHitRobot(HitRobotEvent e) {
if (e.getBearing() >= 0) {
turnDirection = 1;
} else {
turnDirection = -1;
}
turnRight(e.getBearing());
// Determine a shot that won't kill the robot...
// We want to ram him instead for bonus points
if (e.getEnergy() > 16) {
fire(3);
} else if (e.getEnergy() > 10) {
fire(2);
} else if (e.getEnergy() > 4) {
fire(1);
} else if (e.getEnergy() > 2) {
fire(.5);
} else if (e.getEnergy() > .4) {
fire(.1);
}
ahead(40); // Ram him again!
}
}