org.RoboBall
Class Player

java.lang.Object
  extended byorg.RoboBall.Player

public abstract class Player
extends java.lang.Object

Eine abstrakte Basisklasse für alle Spieler.


Field Summary
static int BALL
          Symbolische Konstante für ein Feld, auf dem der Ball liegt
static int DOWN
          Symbolische Konstante für 'Runter'
static int FREE
          Symbolische Konstante für ein leeres Feld
static int HORIZONTAL
          Maske für 'Links' oder 'Rechts'
static int LEFT
          Symbolische Konstante für 'Links'
static int MY_TEAM
          Symbolische Konstante für ein Feld, auf dem ein Roboter vom gleichen Team steht
static int NOTHING
          Symbolische Konstante für 'Nichts'
static int OTHER_TEAM
          Symbolische Konstante für ein Feld, auf dem ein Roboter vom gegnerischen Team steht
static int RIGHT
          Symbolische Konstante für 'Rechts'
static int UP
          Symbolische Konstante für 'Hoch'
static int VERTICAL
          Maske für 'Hoch' oder 'Runter'
static int WALL
          Symbolische Konstante für ein Feld, welches außerhalb des regulären Spielfeldes liegt
 
Constructor Summary
Player()
           
 
Method Summary
protected  int ballAround(int x, int y)
          Fragt ab, ob der Ball neben einem bestimmten Feld liegt.
protected  int ballAround(java.awt.Point pos)
          Fragt ab, ob der Ball neben einem bestimmten Feld liegt.
protected  org.RoboBall.SoccerAction canScoreGoal()
          Prüft, ob und mit welcher Aktion dieser Roboter ein Tor machen könnte.
protected  org.RoboBall.SoccerAction canScoreGoal(int x, int y)
          Prüft, ob und mit welcher Aktion ein Roboter auf einem bestimmten Feld ein Tor machen könnte.
protected  org.RoboBall.SoccerAction canScoreGoal(java.awt.Point pos)
          Prüft, ob und mit welcher Aktion ein Roboter auf einem bestimmten Feld ein Tor machen könnte.
protected  java.awt.Point[] findRobots(int team)
          Findet alle Roboter aus einem Team.
protected  java.awt.Point[] findRobotsOfClass(java.lang.String className)
          Findet alle befreundeten Roboter einer bestimmten Klasse.
protected  java.awt.Point[] findRobotsOfClasses(java.lang.String[] classNames)
          Findet alle befreundeten Roboter einer bestimmten Klasse.
protected  java.awt.Point getBallPos()
          Liefert die Position des Balles als Point-Objekt.
protected  int getBallXPos()
          Liefert die horizontale Position des Balles.
protected  int getBallYPos()
          Liefert die vertikale Position des Balles.
protected  int getFieldHeight()
          Liefert die Höhe des Spielfelds.
protected  java.awt.Dimension getFieldSize()
          Liefert die Größe (Breite und Höhe) des Spielfelds.
protected  int getFieldWidth()
          Liefert die Breite des Spielfelds.
protected  java.awt.Point getMyPos()
          Liefert die Position des Spielers als Point-Objekt.
protected  int getMyXPos()
          Liefert die horizontale Position des Spielers.
protected  int getMyYPos()
          Liefert die vertikale Position des Spielers.
protected  java.awt.Point getPassReceiver(int direction)
          Ermittelt, welcher eigene Roboter einen ausgeführten Pass empfangen würde.
protected  int getPriority(int x, int y)
          Erfragt die Priorität eines Roboters auf einem bestimmten Feld.
protected  int getPriority(java.awt.Point pos)
          Erfragt die Priorität eines Roboters auf einem bestimmten Feld.
protected  int getRelativeDirection(java.awt.Point from, java.awt.Point to)
          Bestimmt die Richtung, in der ein Punkt aus Sicht eines anderen Punkts liegt.
protected  java.lang.String getRobotClassName(java.awt.Point pos)
          Ermittelt den Klassennamen eines Roboters im eigenen Team.
protected  boolean isLineFree(java.awt.Point from, java.awt.Point to)
          Ermittelt, ob auf einer Verbindung zwischen zwei Punkten alle Felder frei sind.
protected  boolean isPassPossible(int x, int y, int direction)
          Prüft, ob ein Roboter, der auf einem bestimmten Feld steht, in eine bestimmte Richtung passen kann.
protected  boolean isPassPossible(java.awt.Point pos, int direction)
          Prüft, ob ein Roboter, der auf einem bestimmten Feld steht, in eine bestimmte Richtung passen kann.
protected  boolean isSelfPassPossible(int direction)
          Prüft, ob der aktuelle Roboter in eine Richtung passen könnte.
protected  int lookAt(int x, int y)
          Liefert Informationen über den Inhalt eines bestimmten Spielfeldes.
protected  int lookAt(java.awt.Point pos)
          Liefert Informationen über den Inhalt eines bestimmten Spielfeldes.
protected  int lookTo(int direction)
          Liefert Informationen über den Inhalt eines der vier Felder um den Roboter herum.
protected  int lookTo(int direction, int distance)
          Liefert Informationen über ein Feld in einer bestimmten Richtung.
protected  int lookToRel(int xFrom, int yFrom, int direction)
          Liefert Informationen über den Inhalt eines Feldes, das in einer bestimmten Richtung neben einem anderen Feld liegt.
protected  int lookToRel(int xFrom, int yFrom, int direction, int distance)
          Liefert Informationen über den Inhalt eines Feldes, das in einer bestimmten Richtung und in einer bestimmten Entfernung von einem anderen Feld liegt.
protected  int lookToRel(java.awt.Point from, int direction)
          Liefert Informationen über den Inhalt eines Feldes, das in einer bestimmten Richtung neben einem anderen Feld liegt.
protected  int lookToRel(java.awt.Point from, int direction, int distance)
          Liefert Informationen über den Inhalt eines Feldes, das in einer bestimmten Richtung und in einer bestimmten Entfernung von einem anderen Feld liegt.
abstract  org.RoboBall.SoccerAction makeMove()
          Führt eine Spielaktion aus.
protected  org.RoboBall.SoccerAction moveOrRun(int direction)
          Ermittelt die bestmögliche Bewegung zum Erreichen des Balls.
protected  int nextOtherRobotAround(int direction)
          Sucht in der Umgebung eines Feldes, das neben diesem Roboter liegt, nach dem Roboter mit der höchsten Priorität aus dem gegnerischen Team.
protected  int nextOtherRobotAround(int x, int y)
          Sucht in der Umgebung eines Feldes nach dem Roboter mit der höchsten Priorität aus dem gegnerischen Team.
protected  int nextOtherRobotAround(java.awt.Point pos)
          Sucht in der Umgebung eines Feldes nach dem Roboter mit der höchsten Priorität aus dem gegnerischen Team.
protected  int nextOwnRobotAround(int direction)
          Sucht in der Umgebung eines Feldes, das neben diesem Roboter liegt, nach dem Roboter mit der höchsten Priorität aus dem eigenen Team.
protected  int nextOwnRobotAround(int x, int y)
          Sucht in der Umgebung eines Feldes nach dem Roboter mit der höchsten Priorität aus dem eigenen Team.
protected  int nextOwnRobotAround(java.awt.Point pos)
          Sucht in der Umgebung eines Feldes nach dem Roboter mit der höchsten Priorität aus dem eigenen Team.
protected  int nextRobotAround(int x, int y)
          Sucht in der Umgebung eines Feldes nach dem Roboter mit der höchsten Priorität.
protected  int nextRobotAround(java.awt.Point pos)
          Sucht in der Umgebung eines Feldes nach dem Roboter mit der höchsten Priorität.
protected  java.awt.Point offsetPoint(int direction)
          Errechnet einen Punkt, in einer bestimmten Richtung direkt neben diesem Roboter liegt.
protected  java.awt.Point offsetPoint(int direction, int dist)
          Errechnet einen Punkt, der, von diesem Roboter, in einer bestimmten Richtung und einer bestimmten Entfernung liegt.
protected static java.awt.Point offsetPoint(java.awt.Point p, int direction)
          Errechnet einen Punkt, der, ausgehend von einem anderen Punkt, um ein Feld in eine bestimmte Richtung verschoben wurde.
Es wird keinerlei Überprüfung durchgeführt, ob der zurückgegebene Punkt noch innerhalb des Spielfelds liegt.
protected static java.awt.Point offsetPoint(java.awt.Point p, int direction, int dist)
          Errechnet einen Punkt, der, ausgehend von einem anderen Punkt, in eine bestimmte Richtung verschoben wurde.
Es wird keinerlei Überprüfung durchgeführt, ob der zurückgegebene Punkt noch innerhalb des Spielfelds liegt.
protected  java.lang.Object[] receiveMessages()
          Holt alle Nachrichten ab, die seit dem letzten Spielzug dieses Roboters an ihn gesendet wurden.
protected  int selfBallAround()
          Fragt ab, ob der Ball neben dem aktuellen Roboter liegt.
protected  boolean selfMostAway()
          Prüft, ob dieser Roboter am weitesten von allen Teamrobotern vom Ball entfernt ist.
protected  boolean sendMessageTo(java.awt.Point pos, java.lang.Object message)
          Sendet eine Nachricht an einen befreundeten Roboter.
protected  void sendMessageToAll(java.lang.Object message)
          Sendet eine Nachricht an alle befreundeten Roboter.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NOTHING

public static final int NOTHING
Symbolische Konstante für 'Nichts'

See Also:
Constant Field Values

UP

public static final int UP
Symbolische Konstante für 'Hoch'

See Also:
Constant Field Values

DOWN

public static final int DOWN
Symbolische Konstante für 'Runter'

See Also:
Constant Field Values

LEFT

public static final int LEFT
Symbolische Konstante für 'Links'

See Also:
Constant Field Values

RIGHT

public static final int RIGHT
Symbolische Konstante für 'Rechts'

See Also:
Constant Field Values

VERTICAL

public static final int VERTICAL
Maske für 'Hoch' oder 'Runter'

See Also:
Constant Field Values

HORIZONTAL

public static final int HORIZONTAL
Maske für 'Links' oder 'Rechts'

See Also:
Constant Field Values

FREE

public static final int FREE
Symbolische Konstante für ein leeres Feld

See Also:
Constant Field Values

MY_TEAM

public static final int MY_TEAM
Symbolische Konstante für ein Feld, auf dem ein Roboter vom gleichen Team steht

See Also:
Constant Field Values

OTHER_TEAM

public static final int OTHER_TEAM
Symbolische Konstante für ein Feld, auf dem ein Roboter vom gegnerischen Team steht

See Also:
Constant Field Values

BALL

public static final int BALL
Symbolische Konstante für ein Feld, auf dem der Ball liegt

See Also:
Constant Field Values

WALL

public static final int WALL
Symbolische Konstante für ein Feld, welches außerhalb des regulären Spielfeldes liegt

See Also:
Constant Field Values
Constructor Detail

Player

public Player()
Method Detail

getMyPos

protected final java.awt.Point getMyPos()
Liefert die Position des Spielers als Point-Objekt.

Returns:
die Position des Spielers

getMyXPos

protected final int getMyXPos()
Liefert die horizontale Position des Spielers.

Returns:
die X-Koordinate des Spielers

getMyYPos

protected final int getMyYPos()
Liefert die vertikale Position des Spielers.

Returns:
die Y-Koordinate des Spielers

getFieldSize

protected final java.awt.Dimension getFieldSize()
Liefert die Größe (Breite und Höhe) des Spielfelds. Die Spielrichtung ist dabei von unten nach oben.

Returns:
ein Dimension-Objekt, das die Breite und Höhe enthält

getFieldWidth

protected final int getFieldWidth()
Liefert die Breite des Spielfelds.

Returns:
die Breite des Spielfelds

getFieldHeight

protected final int getFieldHeight()
Liefert die Höhe des Spielfelds.

Returns:
die Höhe des Spielfelds

getBallPos

protected final java.awt.Point getBallPos()
Liefert die Position des Balles als Point-Objekt.

Returns:
die Position des Balles

getBallXPos

protected final int getBallXPos()
Liefert die horizontale Position des Balles.

Returns:
die X-Koordinate des Balles

getBallYPos

protected final int getBallYPos()
Liefert die vertikale Position des Balles.

Returns:
die Y-Koordinate des Balles

makeMove

public abstract org.RoboBall.SoccerAction makeMove()
Führt eine Spielaktion aus. Diese Methode muss in der Subklasse ueberschrieben werden. Hier wird der eigentliche Algorithmus der Roboter implementiert.

Returns:
die Aktion, die der Roboter in dieser Runde ausführen soll
See Also:
SoccerAction

lookAt

protected final int lookAt(java.awt.Point pos)
Liefert Informationen über den Inhalt eines bestimmten Spielfeldes.

Parameters:
pos - der Punkt auf dem Spielfeld, dessen Inhalt ermittelt werden soll
Returns:
Der Inhalt des Spielfelds; eine der folgenden Konstanten:
  • FREE, falls das Feld frei ist
  • MY_TEAM, falls auf dem Feld ein Roboter des eigenen Teams steht
  • OTHER_TEAM, falls auf dem Feld ein Roboter des gegnerischen Teams steht
  • BALL, falls der Ball auf diesem Feld liegt
  • WALL, falls das Feld außerhalb des Spielplans liegt
See Also:
lookAt(int, int), lookTo(int, int)

lookAt

protected final int lookAt(int x,
                           int y)
Liefert Informationen über den Inhalt eines bestimmten Spielfeldes. Dies entspricht der Methode lookAt(Point); die Koordinaten des Punktes können jedoch einzeln angegeben werden.

Parameters:
x - die X-Koordinate des Feldes
y - die Y-Koordinate des Feldes
Returns:
Der Inhalt des Spielfelds. Entspricht dem Rückgabewert von lookAt(Point).
See Also:
lookAt(Point), lookTo(int, int)

lookTo

protected final int lookTo(int direction,
                           int distance)
Liefert Informationen über ein Feld in einer bestimmten Richtung.

Parameters:
direction - die Lage des Feldes in Bezug auf den Roboter, als Richtung:
  • UP - oben
  • DOWN - unten
  • LEFT - links
  • RIGHT - rechts
distance - die Entfernung des Feldes vom Roboter
Returns:
Der Inhalt des Spielfelds. Entspricht dem Rückgabewert von lookAt(Point).
See Also:
lookTo(int), lookToRel(java.awt.Point, int, int), lookAt(java.awt.Point)

lookTo

protected final int lookTo(int direction)
Liefert Informationen über den Inhalt eines der vier Felder um den Roboter herum. Dies entspricht einem Aufruf von lookToRel( getMyPos(), direction ).

Parameters:
direction - die Lage des Feldes in Bezug auf den Roboter, als Richtung:
  • UP - oben
  • DOWN - unten
  • LEFT - links
  • RIGHT - rechts
Returns:
Der Inhalt des Spielfelds. Entspricht dem Rückgabewert von lookAt.
See Also:
lookTo(int, int), lookToRel(java.awt.Point, int, int), lookAt(java.awt.Point)

lookToRel

protected final int lookToRel(java.awt.Point from,
                              int direction,
                              int distance)
Liefert Informationen über den Inhalt eines Feldes, das in einer bestimmten Richtung und in einer bestimmten Entfernung von einem anderen Feld liegt. Dies entspricht einem Aufruf von lookAt( offsetPoint(from, direction, distance) ).

Parameters:
from - ein Feld, das als Ausgangspunkt dient
direction - die Richtung, in der das Zielfeld von from aus gesehen liegt
distance - die Entfernung zwischen from und dem Zielfeld
Returns:
Der Inhalt des Feldes. Entspricht dem Rückgabewert von lookAt.
See Also:
lookToRel(Point, int), lookTo(int, int), lookAt(java.awt.Point)

lookToRel

protected final int lookToRel(int xFrom,
                              int yFrom,
                              int direction,
                              int distance)
Liefert Informationen über den Inhalt eines Feldes, das in einer bestimmten Richtung und in einer bestimmten Entfernung von einem anderen Feld liegt. Dies entspricht einem Aufruf von

Parameters:
xFrom - die X-Koordinate des Ausgangsfeldes
yFrom - die Y-Koordinate des Ausgangsfeldes
direction - die Richtung, in der das Zielfeld von (xFrom, yFrom) aus gesehen liegt
distance - die Entfernung zwischen (xFrom, yFrom) und dem Zielfeld
Returns:
Der Inhalt des Feldes. Entspricht dem Rückgabewert von lookAt.
See Also:
lookToRel(Point, int), lookTo(int, int), lookAt(java.awt.Point)

lookToRel

protected final int lookToRel(java.awt.Point from,
                              int direction)
Liefert Informationen über den Inhalt eines Feldes, das in einer bestimmten Richtung neben einem anderen Feld liegt. Dies entspricht einem Aufruf von lookAt( offsetPoint(from, direction) ).

Parameters:
from - ein Feld, das als Ausgangspunkt dient
direction - die Richtung, in der das Zielfeld von from aus gesehen liegt
Returns:
Der Inhalt des Feldes. Entspricht dem Rückgabewert von lookAt(Point).
See Also:
lookToRel(Point, int, int), lookTo(int, int), lookAt(java.awt.Point)

lookToRel

protected final int lookToRel(int xFrom,
                              int yFrom,
                              int direction)
Liefert Informationen über den Inhalt eines Feldes, das in einer bestimmten Richtung neben einem anderen Feld liegt.

Parameters:
xFrom - die X-Koordinate des Ausgangsfeldes
yFrom - die Y-Koordinate des Ausgangsfeldes
direction - die Richtung, in der das Zielfeld von (xFrom, yFrom) aus gesehen liegt
Returns:
Der Inhalt des Feldes. Entspricht dem Rückgabewert von lookAt.
See Also:
lookToRel(Point, int), lookTo(int, int), lookAt(java.awt.Point)

selfBallAround

protected final int selfBallAround()
Fragt ab, ob der Ball neben dem aktuellen Roboter liegt. Dies ist eine Kurzform für
ballAround(getMyPos())

Returns:
Die Lage des Balles, bezogen auf den Spieler. Entspricht dem Rückgabewert von ballAround.
See Also:
ballAround(java.awt.Point)

ballAround

protected final int ballAround(java.awt.Point pos)
Fragt ab, ob der Ball neben einem bestimmten Feld liegt.

Parameters:
pos - die Position des Feldes
Returns:
Die Lage des Balles, bezogen auf das Feld. Dies ist eine der folgenden Konstanten:
  • UP, DOWN, LEFT oder RIGHT für die Richtung des Balles relativ zum Feld
  • BALL, falls der Ball selbst auf dem Feld liegt
  • Falls Ball NOTHING falls der Ball nicht neben dem Feld liegt.

ballAround

protected final int ballAround(int x,
                               int y)
Fragt ab, ob der Ball neben einem bestimmten Feld liegt.

Parameters:
x - die X-Koordinate des Feldes
y - die Y-Koordinate des Feldes
Returns:
Die Lage des Balles, bezogen auf das Feld. Entspricht dem Rückgabewert von ballAround(Point)
See Also:
ballAround(Point), selfBallAround()

moveOrRun

protected final org.RoboBall.SoccerAction moveOrRun(int direction)
Ermittelt die bestmögliche Bewegung zum Erreichen des Balls.

Parameters:
direction - die Richtung der Bewegung
Returns:
SoccerAction Eine SoccerAction, die eine entsprechende Bewegung enthält: MOVE, falls nötig, ansonsten RUN.
See Also:
SoccerAction, SoccerAction#move, SoccerAction#run

findRobots

protected final java.awt.Point[] findRobots(int team)
Findet alle Roboter aus einem Team.

Parameters:
team - eine Konstante, die das Team bezeichnet; entweder MY_TEAM oder OTHER_TEAM.
Returns:
ein Array aus Point-Objekten, das die Positionen aller Roboter im Team enthält.

getRobotClassName

protected final java.lang.String getRobotClassName(java.awt.Point pos)
Ermittelt den Klassennamen eines Roboters im eigenen Team.

Parameters:
pos - die Position des eigenen Roboters
Returns:
der Klassenname des befreundeten Roboters, oder null, falls auf dem Feld kein befreundeter Roboter steht
See Also:
findRobotsOfClass(java.lang.String)

findRobotsOfClass

protected final java.awt.Point[] findRobotsOfClass(java.lang.String className)
Findet alle befreundeten Roboter einer bestimmten Klasse.

Parameters:
className - Der Name der Roboterklasse.
Returns:
Ein Array, das alle Roboter des eigenen Teams enthält, die eine Instanz der Klasse sind.
See Also:
getRobotClassName(java.awt.Point)

findRobotsOfClasses

protected final java.awt.Point[] findRobotsOfClasses(java.lang.String[] classNames)
Findet alle befreundeten Roboter einer bestimmten Klasse.

Parameters:
classNames - ein Array aus Strings, das die Namen der Roboterklassen enthält
Returns:
Ein Array, das alle Roboter des eigenen Teams enthält, die eine Instanz einer der angegebenen Klassen sind.
See Also:
getRobotClassName(java.awt.Point)

isLineFree

protected final boolean isLineFree(java.awt.Point from,
                                   java.awt.Point to)
Ermittelt, ob auf einer Verbindung zwischen zwei Punkten alle Felder frei sind. Der Start- und Endpunkt werden dabei nicht mitgezählt.

Parameters:
from - der Startpunkt der Verbindung
to - der Endpunkt der Verbindung
Returns:
true, falls die Verbindung frei ist. false, falls ein Hindernis dazwischen ist oder die Punkte nicht auf einer Linie liegen.

getPassReceiver

protected final java.awt.Point getPassReceiver(int direction)
Ermittelt, welcher eigene Roboter einen ausgeführten Pass empfangen würde. Die Methode prüft aber nur, ob die Verbindung zwischen den beiden Spielern frei ist; der Ball muss nicht unbedingt schon in dieser Richtung liegen.

Parameters:
direction - die Richtung, in die gepasst werden soll
Returns:
die Koordinaten des empfangenden Roboters

isSelfPassPossible

protected final boolean isSelfPassPossible(int direction)
Prüft, ob der aktuelle Roboter in eine Richtung passen könnte. Die Methode prüft aber nur, ob die Verbindung zwischen den beiden Spielern frei ist; der Ball muss nicht unbedingt schon in dieser Richtung liegen.

Parameters:
direction - die Richtung, in die gepasst werden soll
Returns:
true, falls Pass zu einem Teamroboter möglich, ansonsten false
See Also:
isPassPossible(java.awt.Point, int)

isPassPossible

protected final boolean isPassPossible(java.awt.Point pos,
                                       int direction)
Prüft, ob ein Roboter, der auf einem bestimmten Feld steht, in eine bestimmte Richtung passen kann.

Parameters:
pos - die Position des passenden Roboters
direction - Die Richtung, in die gepasst werden soll. Die Richtung wird dabei nie gedreht, d.h. ein UP-Pass für einen gegnerischen Roboter wäre ein Rückpass.
Returns:
true, falls Pass zu einem Teamroboter moeglich, ansonsten false
See Also:
isPassPossible(int, int, int), isSelfPassPossible(int)

isPassPossible

protected final boolean isPassPossible(int x,
                                       int y,
                                       int direction)
Prüft, ob ein Roboter, der auf einem bestimmten Feld steht, in eine bestimmte Richtung passen kann.

Parameters:
x - die X-Koordinate des passenden Roboters
y - die Y-Koordinate des passenden Roboters
direction - Die Richtung, in die gepasst werden soll. Die Richtung wird dabei nie gedreht, d.h. ein UP-Pass für einen gegnerischen Roboter wäre ein Rückpass.
Returns:
true, falls Pass zu einem Teamroboter moeglich, ansonsten false
See Also:
isPassPossible(Point, int), isSelfPassPossible(int)

selfMostAway

protected final boolean selfMostAway()
Prüft, ob dieser Roboter am weitesten von allen Teamrobotern vom Ball entfernt ist.

Returns:
true, falls Roboter am weitesten entfernt ist, ansonsten false

getPriority

protected final int getPriority(java.awt.Point pos)
Erfragt die Priorität eines Roboters auf einem bestimmten Feld. Die Priorität bestimmt, wann der Roboter das nächste Mal eine Aktion ausführen darf.

Parameters:
pos - die Position des Feldes
Returns:
Die Priorität im Verhältnis zu der des aktuellen Roboters. 0 ist hierbei die höchste Priorität; höhere Zahlen bedeuten niedrigere Prioritäten.
Steht auf dem Feld kein Spieler, wird Integer.MAX_VALUE zurückgegeben.
See Also:
getPriority(int, int), nextRobotAround(java.awt.Point), nextOwnRobotAround(java.awt.Point), nextOtherRobotAround(java.awt.Point)

getPriority

protected final int getPriority(int x,
                                int y)
Erfragt die Priorität eines Roboters auf einem bestimmten Feld. Die Priorität bestimmt, wann der Roboter das nächste Mal eine Aktion ausführen darf.

Parameters:
x - die X-Koordinate des Feldes
y - die Y-Koordinate des Feldes
Returns:
Die Priorität im Verhältnis zu der des aktuellen Roboters. 0 ist hierbei die höchste Priorität; höhere Zahlen bedeuten niedrigere Prioritäten. Steht auf dem Feld kein Spieler, wird Integer.MAX_VALUE zurückgegeben.
See Also:
getPriority(Point), nextRobotAround(java.awt.Point), nextOwnRobotAround(java.awt.Point), nextOtherRobotAround(java.awt.Point)

nextRobotAround

protected final int nextRobotAround(java.awt.Point pos)
Sucht in der Umgebung eines Feldes nach dem Roboter mit der höchsten Priorität.

Parameters:
pos - die Position des Feldes
Returns:
die Richtung des Roboters in Bezug auf das Feld (x, y), oder NOTHING, falls es keine benachbarten Roboter gibt.
See Also:
nextRobotAround(int, int), getPriority(java.awt.Point), nextOwnRobotAround(java.awt.Point), nextOtherRobotAround(java.awt.Point)

nextRobotAround

protected final int nextRobotAround(int x,
                                    int y)
Sucht in der Umgebung eines Feldes nach dem Roboter mit der höchsten Priorität.

Parameters:
x - die X-Koordinate des Feldes
y - die Y-Koordinate des Feldes
Returns:
die Richtung des Roboters in Bezug auf das Feld (x, y), oder NOTHING, falls es keine benachbarten Roboter gibt.
See Also:
nextRobotAround(Point), getPriority(java.awt.Point), nextOwnRobotAround(java.awt.Point), nextOtherRobotAround(java.awt.Point)

nextOwnRobotAround

protected final int nextOwnRobotAround(java.awt.Point pos)
Sucht in der Umgebung eines Feldes nach dem Roboter mit der höchsten Priorität aus dem eigenen Team.

Parameters:
pos - die Position des Feldes
Returns:
die Richtung des Roboters in Bezug auf das Feld (x, y), oder NOTHING, falls es keine benachbarten eigenen Roboter gibt.
See Also:
nextOwnRobotAround(int, int), nextOwnRobotAround(int), getPriority(java.awt.Point), nextRobotAround(java.awt.Point), nextOtherRobotAround(java.awt.Point)

nextOwnRobotAround

protected final int nextOwnRobotAround(int x,
                                       int y)
Sucht in der Umgebung eines Feldes nach dem Roboter mit der höchsten Priorität aus dem eigenen Team.

Parameters:
x - die X-Koordinate des Feldes
y - die Y-Koordinate des Feldes
Returns:
die Richtung des Roboters in Bezug auf das Feld (x, y), oder NOTHING, falls es keine benachbarten eigenen Roboter gibt.
See Also:
nextOwnRobotAround(Point), nextOwnRobotAround(int), getPriority(java.awt.Point), nextRobotAround(java.awt.Point), nextOtherRobotAround(java.awt.Point)

nextOwnRobotAround

protected final int nextOwnRobotAround(int direction)
Sucht in der Umgebung eines Feldes, das neben diesem Roboter liegt, nach dem Roboter mit der höchsten Priorität aus dem eigenen Team.

Parameters:
direction - die Richtung, in der das Feld liegt
Returns:
die Richtung des Roboters in Bezug auf das Feld, oder NOTHING, falls es keine benachbarten eigenen Roboter gibt.
See Also:
nextOwnRobotAround(Point), nextOwnRobotAround(int, int), getPriority(java.awt.Point), nextRobotAround(java.awt.Point), nextOtherRobotAround(java.awt.Point)

nextOtherRobotAround

protected final int nextOtherRobotAround(java.awt.Point pos)
Sucht in der Umgebung eines Feldes nach dem Roboter mit der höchsten Priorität aus dem gegnerischen Team.

Parameters:
pos - die Position des Feldes
Returns:
die Richtung des Roboters in Bezug auf das Feld (x, y), oder NOTHING, falls es keine benachbarten gegnerischen Roboter gibt.
See Also:
nextOtherRobotAround(int, int), nextOtherRobotAround(int), getPriority(java.awt.Point), nextRobotAround(java.awt.Point), nextOtherRobotAround(java.awt.Point)

nextOtherRobotAround

protected final int nextOtherRobotAround(int x,
                                         int y)
Sucht in der Umgebung eines Feldes nach dem Roboter mit der höchsten Priorität aus dem gegnerischen Team.

Parameters:
x - die X-Koordinate des Feldes
y - die Y-Koordinate des Feldes
Returns:
die Richtung des Roboters in Bezug auf das Feld (x, y), oder NOTHING, falls es keine benachbarten gegnerischen Roboter gibt.
See Also:
nextOtherRobotAround(Point), nextOtherRobotAround(int), getPriority(java.awt.Point), nextRobotAround(java.awt.Point), nextOtherRobotAround(java.awt.Point)

nextOtherRobotAround

protected final int nextOtherRobotAround(int direction)
Sucht in der Umgebung eines Feldes, das neben diesem Roboter liegt, nach dem Roboter mit der höchsten Priorität aus dem gegnerischen Team.

Parameters:
direction - die Richtung, in der das Feld liegt
Returns:
die Richtung des Roboters in Bezug auf das Feld, oder NOTHING, falls es keine benachbarten gegnerischen Roboter gibt.
See Also:
nextOtherRobotAround(Point), nextOtherRobotAround(int, int), getPriority(java.awt.Point), nextRobotAround(java.awt.Point), nextOwnRobotAround(java.awt.Point)

canScoreGoal

protected final org.RoboBall.SoccerAction canScoreGoal()
Prüft, ob und mit welcher Aktion dieser Roboter ein Tor machen könnte.

Returns:
Eine SoccerAction, die den Zug beschreibt, mit dem ein Tor erzielt werden kann, oder null, falls dies nicht möglich ist.
See Also:
canScoreGoal(Point), canScoreGoal(int, int), SoccerAction

canScoreGoal

protected final org.RoboBall.SoccerAction canScoreGoal(java.awt.Point pos)
Prüft, ob und mit welcher Aktion ein Roboter auf einem bestimmten Feld ein Tor machen könnte.

Parameters:
pos - die Position des Roboters
Returns:
Eine SoccerAction, die den Zug beschreibt, mit dem ein Tor erzielt werden kann, oder null, falls dies nicht möglich ist.
See Also:
canScoreGoal(), canScoreGoal(int, int), SoccerAction

canScoreGoal

protected final org.RoboBall.SoccerAction canScoreGoal(int x,
                                                       int y)
Prüft, ob und mit welcher Aktion ein Roboter auf einem bestimmten Feld ein Tor machen könnte.

Parameters:
x - die X-Koordinate des Roboters
y - die Y-Koordinate des Roboters
Returns:
Eine SoccerAction, die den Zug beschreibt, mit dem ein Tor erzielt werden kann, oder null, falls dies nicht möglich ist.
See Also:
canScoreGoal(), canScoreGoal(Point), SoccerAction

offsetPoint

protected static java.awt.Point offsetPoint(java.awt.Point p,
                                            int direction,
                                            int dist)
Errechnet einen Punkt, der, ausgehend von einem anderen Punkt, in eine bestimmte Richtung verschoben wurde.
Es wird keinerlei Überprüfung durchgeführt, ob der zurückgegebene Punkt noch innerhalb des Spielfelds liegt.

Parameters:
p - der Ausgangspunkt
direction - Die Richtung. Dies kann UP, DOWN, LEFT, RIGHT oder NOTHING sein.
dist - die Anzahl der Felder, in die der Punkt verschoben werden soll (kann auch negativ sein)
Returns:
Der neue Punkt. Dieser ist in der angegebenen Richtung von p und dist Felder entfernt.

offsetPoint

protected static java.awt.Point offsetPoint(java.awt.Point p,
                                            int direction)
Errechnet einen Punkt, der, ausgehend von einem anderen Punkt, um ein Feld in eine bestimmte Richtung verschoben wurde.
Es wird keinerlei Überprüfung durchgeführt, ob der zurückgegebene Punkt noch innerhalb des Spielfelds liegt.

Parameters:
p - der Ausgangspunkt
direction - Die Richtung. Dies kann UP, DOWN, LEFT, RIGHT oder NOTHING sein.
Returns:
Der neue Punkt. Dieser liegt in der angegebenen Richtung direkt neben p.

offsetPoint

protected java.awt.Point offsetPoint(int direction,
                                     int dist)
Errechnet einen Punkt, der, von diesem Roboter, in einer bestimmten Richtung und einer bestimmten Entfernung liegt.

Parameters:
direction - Die Richtung. Dies kann UP, DOWN, LEFT, RIGHT oder NOTHING sein.
dist - die Entfernung (kann auch negativ sein)
Returns:
Der neue Punkt. Dieser liegt in der angegebenen Richtung und der angegebenen Entfernung von diesem Roboter.

offsetPoint

protected java.awt.Point offsetPoint(int direction)
Errechnet einen Punkt, in einer bestimmten Richtung direkt neben diesem Roboter liegt.

Parameters:
direction - Die Richtung. Dies kann UP, DOWN, LEFT, RIGHT oder NOTHING sein.
Returns:
Der neue Punkt. Dieser liegt in der angegebenen Richtung direkt neben diesem Roboter.

getRelativeDirection

protected final int getRelativeDirection(java.awt.Point from,
                                         java.awt.Point to)
Bestimmt die Richtung, in der ein Punkt aus Sicht eines anderen Punkts liegt.

Parameters:
from - der Ausgangspunkt
to - der Punkt, dessen relative Richtung ermittelt werden soll.
Returns:
Eine bitweise OR-Kombination (Operator |) der Werte UP, DOWN, LEFT, RIGHT. Um die Richtungsanteile zu ermitteln, können die Konstanten HORIZONTAL und VERTICAL als Masken benutzt werden.
Liegt z.B. to von from aus links oben, so wird LEFT | UP zurückgegeben.
Stimmen from und to überein, ist der Rückgabewert NOTHING.

sendMessageTo

protected final boolean sendMessageTo(java.awt.Point pos,
                                      java.lang.Object message)
Sendet eine Nachricht an einen befreundeten Roboter. Die Nachricht ist für den Mitspieler nur einmal verfügbar, und zwar wenn er das nächste Mal am Zug ist; danach wird sie gelöscht.
Das Format der Nachricht (z.B. ein String) kann dabei selbst definiert werden und sollte vom anderen Roboter entsprechend interpretiert werden können.
Der andere Roboter erfährt dabei nicht, von welchem Absender die Nachricht stammt. Ist diese Information wichtig, sollte sie in der Nachricht vorkommen.
Es kann an jeden Roboter pro Runde nur eine Nachricht gesendet werden. Wird sendMessageTo dann erneut für den selben Empfänger aufgerufen, wird die alte Nachricht überschrieben.

Parameters:
pos - die Position des befreundeten Roboters
message - die Nachricht (kann auch null sein)
Returns:
true, falls die Nachricht gesendet wurde; false, falls an der Stelle pos kein eigener Roboter steht.
See Also:
sendMessageToAll(java.lang.Object), receiveMessages()

sendMessageToAll

protected final void sendMessageToAll(java.lang.Object message)
Sendet eine Nachricht an alle befreundeten Roboter. Die Nachricht ist für die Mitspieler nur einmal verfügbar, und zwar jeweils bei ihrem nächsten Spielzug; danach wird sie gelöscht. Das Format der Nachricht (z.B. ein String) kann dabei selbst definiert werden und sollte von den anderen Robotern entsprechend interpretiert werden können.
Die anderen Roboter erfahren dabei nicht, von welchem Absender die Nachricht stammt. Ist diese Information wichtig, sollte sie in der Nachricht vorkommen.
Roboter, die gerade wegen einer roten Karte aussetzen müssen, erhalten die Nachricht nicht.

Parameters:
message - die Nachricht (kann auch null sein)
See Also:
sendMessageTo(java.awt.Point, java.lang.Object), receiveMessages()

receiveMessages

protected final java.lang.Object[] receiveMessages()
Holt alle Nachrichten ab, die seit dem letzten Spielzug dieses Roboters an ihn gesendet wurden. Die Nachrichten sind nur in dieser Runde verfügbar. Es bleibt dem Roboter selbst überlassen, ob er etwas mit diesen Informationen anfängt.

Returns:
Ein Array, das alle Nachrichten an diesen Roboter enthält. Wurden keine Nachrichten gesendet, wird ein Array der Länge 0 zurückgegeben.
See Also:
sendMessageTo(java.awt.Point, java.lang.Object), sendMessageToAll(java.lang.Object)