1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
/*******************************************************************************
* Copyright (c) 2001, 2008 Mathew A. Nelson and Robocode contributors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://robocode.sourceforge.net/license/cpl-v10.html
*
* Contributors:
* Mathew A. Nelson
* - Initial implementation
* Flemming N. Larsen
* - Maintainance
*******************************************************************************/
package sampleteam;
import robocode.HitByBulletEvent;
import robocode.ScannedRobotEvent;
import robocode.TeamRobot;
import java.awt.*;
import java.io.IOException;
/**
* MyFirstLeader - a sample team robot by Mathew Nelson, and maintained by Flemming N. Larsen
* <p/>
* Looks around for enemies, and orders teammates to fire
*/
public class MyFirstLeader extends TeamRobot {
/**
* run: Leader's default behavior
*/
public void run() {
// Prepare RobotColors object
RobotColors c = new RobotColors();
c.bodyColor = Color.red;
c.gunColor = Color.red;
c.radarColor = Color.red;
c.scanColor = Color.yellow;
c.bulletColor = Color.yellow;
// Set the color of this robot containing the RobotColors
setBodyColor(c.bodyColor);
setGunColor(c.gunColor);
setRadarColor(c.radarColor);
setScanColor(c.scanColor);
setBulletColor(c.bulletColor);
try {
// Send RobotColors object to our entire team
broadcastMessage(c);
} catch (IOException ignored) {}
// Normal behavior
while (true) {
setTurnRadarRight(10000);
ahead(100);
back(100);
}
}
/**
* onScannedRobot: What to do when you see another robot
*/
public void onScannedRobot(ScannedRobotEvent e) {
// Don't fire on teammates
if (isTeammate(e.getName())) {
return;
}
// Calculate enemy bearing
double enemyBearing = this.getHeading() + e.getBearing();
// Calculate enemy's position
double enemyX = getX() + e.getDistance() * Math.sin(Math.toRadians(enemyBearing));
double enemyY = getY() + e.getDistance() * Math.cos(Math.toRadians(enemyBearing));
try {
// Send enemy position to teammates
broadcastMessage(new Point(enemyX, enemyY));
} catch (IOException ex) {
out.println("Unable to send order: ");
ex.printStackTrace(out);
}
}
/**
* onHitByBullet: Turn perpendicular to bullet path
*/
public void onHitByBullet(HitByBulletEvent e) {
turnLeft(90 - e.getBearing());
}
}
|