Package robocode

## Class TeamRobot

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

All Implemented Interfaces:
  `java.lang.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​(java.io.Serializable message)` Broadcasts a message to all teammates.
`java.util.Vector<MessageEvent>` `getMessageEvents()` Returns a vector containing all MessageEvents currently in the robot's queue.
`ITeamEvents` `getTeamEventListener()` Do not call this method!
`java.lang.String[]` `getTeammates()` Returns the names of all teammates, or `null` there is no teammates.
`boolean` `isTeammate​(java.lang.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​(java.lang.String name, java.io.Serializable message)` Sends a message to one (or more) teammates.

### 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 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

`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`

### 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 java.lang.Object

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

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

`getAdvancedEventListener`

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

`getBasicEventListener, getRobotRunnable, setOut, setPeer`

### Constructor Detail

#### TeamRobot

    public TeamRobot()

### Method Detail

#### broadcastMessage

    public void broadcastMessage​(java.io.Serializable message)
                          throws java.io.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:
  `java.io.IOException` - if the message could not be broadcasted to the teammates
See Also:
  `isTeammate(String)`, `getTeammates()`, `sendMessage(String, Serializable)`

#### getMessageEvents

    public java.util.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 java.lang.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​(java.lang.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​(java.lang.String name,
                            java.io.Serializable message)
                     throws java.io.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:
  `java.io.IOException` - if the message could not be sent
See Also:
  `isTeammate(String)`, `getTeammates()`, `broadcastMessage(Serializable)`