Package robocode

## Class TeamRobot

- java.lang.Object
- - robocode._RobotBase
  - - robocode._Robot
    - - robocode.Robot
      - - robocode._AdvancedRobot
        - - robocode._AdvancedRadiansRobot
          - - robocode.AdvancedRobot
            - - robocode.TeamRobot

All Implemented Interfaces:
  `Runnable`, `IAdvancedEvents`, `IAdvancedRobot`, `IBasicEvents`, `IBasicEvents2`, `IBasicEvents3`, `IBasicRobot`, `IInteractiveEvents`, `IInteractiveRobot`, `IPaintEvents`, `IPaintRobot`, `ITeamEvents`, `ITeamRobot`

Direct Known Subclasses:
  `RateControlRobot`

    public class TeamRobot
    extends AdvancedRobot
    implements ITeamRobot, ITeamEvents

An advanced type of robot that supports sending messages between team mates in a robot team.

If you have not done already, you should create a `Robot` or `AdvancedRobot` first.

Author:
  Mathew A. Nelson (original), Flemming N. Larsen (contributor), Pavel Savara (contributor)
See Also:
  `JuniorRobot`, `Robot`, `AdvancedRobot`, `RateControlRobot`, `Droid`, `BorderSentry`

### Field Summary

### Fields inherited from class robocode._RobotBase

`out`

### Constructor Summary

Constructors
`TeamRobot​()`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `broadcastMessage​(Serializable message)` Broadcasts a message to all teammates.
`Vector<MessageEvent>` `getMessageEvents​()` Returns a vector containing all MessageEvents currently in the robot's queue.
`ITeamEvents` `getTeamEventListener​()` Do not call this method!
`String[]` `getTeammates​()` Returns the names of all teammates, or `null` there is no teammates.
`boolean` `isTeammate​(String name)` Checks if a given robot name is the name of one of your teammates.
`void` `onMessageReceived​(MessageEvent event)` This method is called when your robot receives a message from a teammate.
`void` `sendMessage​(String name, Serializable message)` Sends a message to one (or more) teammates.

### Methods inherited from class robocode._AdvancedRobot

`endTurn, getGunHeadingDegrees, getHeadingDegrees, getMaxWaitCount, getRadarHeadingDegrees, getWaitCount, setTurnGunLeftDegrees, setTurnGunRightDegrees, setTurnLeftDegrees, setTurnRadarLeftDegrees, setTurnRadarRightDegrees, setTurnRightDegrees, turnGunLeftDegrees, turnGunRightDegrees, turnLeftDegrees, turnRadarLeftDegrees, turnRadarRightDegrees, turnRightDegrees`

### Methods inherited from class robocode._Robot

`getBattleNum, getGunCharge, getGunImageName, getLife, getNumBattles, getRadarImageName, getRobotImageName, setGunImageName, setRadarImageName, setRobotImageName`

### Methods inherited from class robocode._RobotBase

`finalize, setOut, setPeer`

### Methods inherited from class robocode.AdvancedRobot

`addCustomEvent, clearAllEvents, execute, getAdvancedEventListener, getAllEvents, getBulletHitBulletEvents, getBulletHitEvents, getBulletMissedEvents, getDataDirectory, getDataFile, getDataQuotaAvailable, getDistanceRemaining, getEventPriority, getGunHeadingRadians, getGunTurnRemaining, getGunTurnRemainingRadians, getHeadingRadians, getHitByBulletEvents, getHitRobotEvents, getHitWallEvents, getRadarHeadingRadians, getRadarTurnRemaining, getRadarTurnRemainingRadians, getRobotDeathEvents, getScannedRobotEvents, getStatusEvents, getTurnRemaining, getTurnRemainingRadians, isAdjustGunForRobotTurn, isAdjustRadarForGunTurn, isAdjustRadarForRobotTurn, onCustomEvent, onDeath, onSkippedTurn, removeCustomEvent, setAhead, setBack, setEventPriority, setFire, setFireBullet, setInterruptible, setMaxTurnRate, setMaxVelocity, setResume, setStop, setStop, setTurnGunLeft, setTurnGunLeftRadians, setTurnGunRight, setTurnGunRightRadians, setTurnLeft, setTurnLeftRadians, setTurnRadarLeft, setTurnRadarLeftRadians, setTurnRadarRight, setTurnRadarRightRadians, setTurnRight, setTurnRightRadians, turnGunLeftRadians, turnGunRightRadians, turnLeftRadians, turnRadarLeftRadians, turnRadarRightRadians, turnRightRadians, waitFor`

### Methods inherited from interface robocode.robotinterfaces.IAdvancedRobot

`getAdvancedEventListener`

### Methods inherited from interface robocode.robotinterfaces.IBasicRobot

`getBasicEventListener, getRobotRunnable, setOut, setPeer`

### Methods inherited from class java.lang.Object

`clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from class robocode.Robot

`ahead, back, doNothing, fire, fireBullet, getBasicEventListener, getBattleFieldHeight, getBattleFieldWidth, getEnergy, getGraphics, getGunCoolingRate, getGunHeading, getGunHeat, getHeading, getHeight, getInteractiveEventListener, getName, getNumRounds, getNumSentries, getOthers, getPaintEventListener, getRadarHeading, getRobotRunnable, getRoundNum, getSentryBorderSize, getTime, getVelocity, getWidth, getX, getY, onBattleEnded, onBulletHit, onBulletHitBullet, onBulletMissed, onHitByBullet, onHitRobot, onHitWall, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragged, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onMouseWheelMoved, onPaint, onRobotDeath, onRoundEnded, onScannedRobot, onStatus, onWin, resume, run, scan, setAdjustGunForRobotTurn, setAdjustRadarForGunTurn, setAdjustRadarForRobotTurn, setAllColors, setBodyColor, setBulletColor, setColors, setColors, setDebugProperty, setGunColor, setRadarColor, setScanColor, stop, stop, turnGunLeft, turnGunRight, turnLeft, turnRadarLeft, turnRadarRight, turnRight`

### Constructor Detail

#### TeamRobot

    public TeamRobot​()

### Method Detail

#### broadcastMessage

    public void broadcastMessage​(Serializable message)
                          throws IOException

Broadcasts a message to all teammates.

Example:

       public void run() {
           broadcastMessage("I'm here!");
       }

Parameters:
  `message` - the message to broadcast to all teammates
Throws:
  `IOException` - if the message could not be broadcasted to the teammates
See Also:
  `isTeammate(String)`, `getTeammates()`, `sendMessage(String, Serializable)`

#### getMessageEvents

    public Vector<MessageEvent> getMessageEvents​()

Returns a vector containing all MessageEvents currently in the robot's queue. You might, for example, call this while processing another event.

Example:

       for (MessageEvent e : getMessageEvents()) {
          // do something with e
       }

Returns:
  a vector containing all MessageEvents currently in the robot's queue
Since:
  1.2.6
See Also:
  `onMessageReceived(MessageEvent)`, `MessageEvent`

#### getTeamEventListener

    public final ITeamEvents getTeamEventListener​()

Do not call this method!

This method is called by the game to notify this robot about team events. Hence, this method must be implemented so it returns your `ITeamEvents` listener.

Specified by:
  `getTeamEventListener` in interface `ITeamRobot`
Returns:
  listener to team events or `null` if this robot should not receive the notifications.

#### getTeammates

    public String[] getTeammates​()

Returns the names of all teammates, or `null` there is no teammates.

Example:

       public void run() {
           // Prints out all teammates
           String[] teammates = getTeammates();
           if (teammates != null) {
               for (String member : teammates) {
                   out.println(member);
               }
           }
       }

Returns:
  a String array containing the names of all your teammates, or `null` if there is no teammates. The length of the String array is equal to the number of teammates.
See Also:
  `isTeammate(String)`, `broadcastMessage(Serializable)`, `sendMessage(String, Serializable)`

#### isTeammate

    public boolean isTeammate​(String name)

Checks if a given robot name is the name of one of your teammates.

Example:

       public void onScannedRobot(ScannedRobotEvent e) {
           if (isTeammate(e.getName()) {
               return;
           }
           fire(1);
       }

Parameters:
  `name` - the robot name to check
Returns:
  `true` if the specified name belongs to one of your teammates; `false` otherwise.
See Also:
  `getTeammates()`, `broadcastMessage(Serializable)`, `sendMessage(String, Serializable)`

#### onMessageReceived

    public void onMessageReceived​(MessageEvent event)

This method is called when your robot receives a message from a teammate. You should override it in your robot if you want to be informed of this event.

Example:

       public void onMessageReceived(MessageEvent event) {
           out.println(event.getSender() + " sent me: " + event.getMessage());
       }

Specified by:
  `onMessageReceived` in interface `ITeamEvents`
Parameters:
  `event` - the message event sent by the game
See Also:
  `MessageEvent`, `Event`

#### sendMessage

    public void sendMessage​(String name,
                            Serializable message)
                     throws IOException

Sends a message to one (or more) teammates.

Example:

       public void run() {
           sendMessage("sample.DroidBot", "I'm here!");
       }

Parameters:
  `name` - the name of the intended recipient of the message
  `message` - the message to send
Throws:
  `IOException` - if the message could not be sent
See Also:
  `isTeammate(String)`, `getTeammates()`, `broadcastMessage(Serializable)`