algds.contest
Class Duke

java.lang.Object
  |
  +--algds.contest.Duke

public abstract class Duke
extends java.lang.Object

Duke: abstrake Basisklasse für alle Dukes, die sich im Labyrinth bewegen sollen. Jede Implementierung muß von dieser Klasse abgeleitet werden und insbesondere die Methode run überschreiben. Eine Instanz der abgeleiteten Klasse wird in die Labyrinth-Welt geladen und dort gestartet.


Field Summary
static int BEAMER
          Das in Blickrichtung benachbarte Feld ist ein Beamer.
static int BEANS
          Das in Blickrichtung benachbarte Feld enthält Bohnen.
static int EAST
          Blickrichtung ist nach Osten.
static int EMPTY
          Das in Blickrichtung benachbarte Feld ist leer.
static int MAX_BEANS
          Anzahl der max.
static int NORTH
          Blickrichtung ist nach Norden.
static int SOUTH
          Blickrichtung ist nach Süden.
static int TURN_LEFT
          Nach Links drehen.
static int TURN_RIGHT
          Nach Rechts drehen.
static int WALL
          In Blickrichtung befindet sich eine Wand.
static int WEST
          Blickrichtung ist nach Westen.
 
Constructor Summary
Duke()
          Konstruktor zum Erzeugen eines Duke-Objektes.
 
Method Summary
 void drop(int n)
          Legt die angegebene Anzahl von Bohnen im aktuellen Feld ab.
 boolean forward()
          Bewegt den Duke um einen Schritt in der aktuellen Richtung vorwärts.
 int getDirection()
          Liefert die aktuelle Laufrichtung des Duke als Himmelsrichtung (Duke.NORTH ..
 int getHeight()
          Liefert die Höhe der aktuellen Ebene des Labyrinthes in Feldern.
 int getLevel()
          Liefert die ID der aktuellen Ebene des Labyrinthes.
 int getNumOfBeans()
          Liefer die Anzahl der Bohnen, die der Duke gegenwärtig trägt.
 int getNumOfCollectedBeans()
          Liefert die Anzahl der gesammelten und auf dem Ausgangsfeld abgelegten Bohnen.
 int getNumOfSteps()
          Liefert die Anzahl der bisher ausgeführten Schritte.
 int getStrength()
          Liefert die aktuelle Stärke des Dukes.
 int getWidth()
          Liefert die Breite der aktuellen Ebene des Labyrinthes in Feldern.
 int getXPos()
          Liefert die aktuelle y-Position im Labyrinth.
 int getYPos()
          Liefert die aktuelle y-Position im Labyrinth.
 void log(java.lang.String msg)
          Gibt eine Meldung in Form eines Strings im Log-Fenster aus.
 int look()
          Liefert Informationen über das in Blickrichtung angrenzende Feld.
abstract  void run()
          Die Hauptmethode des Duke.
 void setEngine(algds.contest.MazeEngine me)
          Interne Methode für die Ablaufumgebung.
 boolean take(int n)
          Nimmt die angegebene Anzahl von Bohnen aus dem aktuellen Feld auf.
 void turn(int direction)
          Ändert die Laufrichtung, wobei das aktuelle Feld nicht verlassen wird.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EMPTY

public static final int EMPTY
Das in Blickrichtung benachbarte Feld ist leer.

BEANS

public static final int BEANS
Das in Blickrichtung benachbarte Feld enthält Bohnen.

WALL

public static final int WALL
In Blickrichtung befindet sich eine Wand.

BEAMER

public static final int BEAMER
Das in Blickrichtung benachbarte Feld ist ein Beamer.

TURN_LEFT

public static final int TURN_LEFT
Nach Links drehen.

TURN_RIGHT

public static final int TURN_RIGHT
Nach Rechts drehen.

WEST

public static final int WEST
Blickrichtung ist nach Westen.

NORTH

public static final int NORTH
Blickrichtung ist nach Norden.

EAST

public static final int EAST
Blickrichtung ist nach Osten.

SOUTH

public static final int SOUTH
Blickrichtung ist nach Süden.

MAX_BEANS

public static final int MAX_BEANS
Anzahl der max. transportierbare Bohnen.
Constructor Detail

Duke

public Duke()
Konstruktor zum Erzeugen eines Duke-Objektes.
Method Detail

setEngine

public void setEngine(algds.contest.MazeEngine me)
Interne Methode für die Ablaufumgebung.

take

public boolean take(int n)
Nimmt die angegebene Anzahl von Bohnen aus dem aktuellen Feld auf.
Parameters:
n - die Anzahl der aufzunehmenden Bohnen
Returns:
true, wenn Bohnen aufgenommen werden konnten, sonst false.

drop

public void drop(int n)
Legt die angegebene Anzahl von Bohnen im aktuellen Feld ab.
Parameters:
n - die Anzahl der aufzunehmenden Bohnen

forward

public boolean forward()
Bewegt den Duke um einen Schritt in der aktuellen Richtung vorwärts.
Returns:
true, wenn Schritt ausgeführt werden konnte, sonst false (Kollision).

turn

public void turn(int direction)
Ändert die Laufrichtung, wobei das aktuelle Feld nicht verlassen wird.
Parameters:
direction - Drehrichtung (Duke.TURN_LEFT oder Duke.TURN_RIGHT

look

public int look()
Liefert Informationen über das in Blickrichtung angrenzende Feld.
Returns:
Duke.EMPTY für ein leeres Feld, Duke.BEANS für ein Feld mit Bohnen, Duke.WALL, wenn das Feld in dieser Richtung durch eine Wand begrenzt ist.

getXPos

public int getXPos()
Liefert die aktuelle y-Position im Labyrinth.
Returns:
x-Position

getYPos

public int getYPos()
Liefert die aktuelle y-Position im Labyrinth.
Returns:
y-Position

getDirection

public int getDirection()
Liefert die aktuelle Laufrichtung des Duke als Himmelsrichtung (Duke.NORTH .. Duke.WEST).
Returns:
Laufrichtung

getNumOfSteps

public int getNumOfSteps()
Liefert die Anzahl der bisher ausgeführten Schritte.
Returns:
Anzahl der Schritte

getLevel

public int getLevel()
Liefert die ID der aktuellen Ebene des Labyrinthes. Die unterste Ebene hat dabei die ID 0.
Returns:
ID der Ebene

getNumOfBeans

public int getNumOfBeans()
Liefer die Anzahl der Bohnen, die der Duke gegenwärtig trägt.
Returns:
Anzahl der Bohnen

getNumOfCollectedBeans

public int getNumOfCollectedBeans()
Liefert die Anzahl der gesammelten und auf dem Ausgangsfeld abgelegten Bohnen.
Returns:
Anzahl der Bohnen

log

public void log(java.lang.String msg)
Gibt eine Meldung in Form eines Strings im Log-Fenster aus.
Parameters:
msg - die auszugegebende Nachricht

getStrength

public int getStrength()
Liefert die aktuelle Stärke des Dukes. Ein Wert < 0 bedeutet, daß der Duke verhungert ist.
Returns:
Stärke

getWidth

public int getWidth()
Liefert die Breite der aktuellen Ebene des Labyrinthes in Feldern.
Returns:
Breite in Feldern

getHeight

public int getHeight()
Liefert die Höhe der aktuellen Ebene des Labyrinthes in Feldern.
Returns:
Höhe in Feldern

run

public abstract void run()
Die Hauptmethode des Duke. Durch Überschreiben dieser Methode ist ist die Bewegung durch das Labyrinth.