Class Actor

java.lang.Object
  extended by Actor

public abstract class Actor
extends Object

Ein Actor ("Akteur") ist ein Objekt, welches in der Greenfoot-Welt existiert. Jeder Actor hat in der Welt eine Position (x und y Koordinate) und eine Darstellung in Form eines Bildes. Von der Klasse Actor kann kein Objekt erstellt werden. Sie dient als abstrakte Oberklasse, von der speziellere Unterklassen abgeleitet werden können. Jedes Objekt, welches in der Welt erscheinen soll, muss von dieser Actorklasse abgeleitet werden. Die Unterklassen können ihre eigene Erscheinung und ihr Verhalten dann selber festlegen. Die wichtigste Eigenschaft dieser Klasse ist die act Methode. Diese Methode wird automatisch aufgerufen, wenn in der Greenfoot-Entwicklungsumgebung der Button "Act" oder "Run" gedrückt wird. Die act Methode ist zunächst leer und hat daher keine Auswirkungen. Sie sollte aber in Unterklassen überschrieben werden, um die Aktionen des Objektes zu implementieren.

Version:
2.0
Author:
Gunnar Johannesmeyer

Constructor Summary
Actor()
          Erzeugt einen Akteur.
 
Method Summary
 void act()
          Die act Methode wird von der Greenfoot-Entwicklungsumgebung aufgerufen, um Objekten die Möglichkeit zu geben, eine Aktion auszuführen.
protected  void addedToWorld(World world)
          Die Methode wird von der Greenfoot-Entwicklungsumgebung aufgerufen, sobald das Objekt in die Welt hinzugefügt wurde.
 GreenfootImage getImage()
          Gibt das Bild zurück mit dem der Akteur dargestellt wird.
protected  List getIntersectingObjects(Class cls)
          Gibt alle Objekte zurück, mit denen sich das Objekt überschneidet.
protected  List getNeighbours(int distance, boolean diagonal, Class cls)
          Gibt die Nachbarn des Objekts innerhalb einer angegebenen Entfernung zurück.
protected  List getObjectsAtOffset(int dx, int dy, Class cls)
          Gibt alle Objekte zurück, die an einer Position liegen (relativ zu der Position des Objektes).
protected  List getObjectsInRange(int r, Class cls)
          Gibt alle Objekte innerhalb der Reichweite "r" um das Objekt herum zurück.
protected  Actor getOneIntersectingObject(Class cls)
          Gibt ein Objekt zurück, mit denen sich das Objekt überschneidet.
protected  Actor getOneObjectAtOffset(int dx, int dy, Class cls)
          Gibt ein Objekt zurück, das an einer Position liegt (relativ zu der Position des Objekts).
 int getRotation()
          Gibt die aktuelle Drehausrichtung des Objektes zurück.
 World getWorld()
          Gibt eine Referenz auf das Weltobjekt zurück, in der sich das Objekt befindet.
 int getX()
          Gibt die x-Koordinate der aktuellen Position des Objektes zurück.
 int getY()
          Gibt die y-Koordinate der aktuellen Position des Objektes zurück.
protected  boolean intersects(Actor other)
          Überprüft, ob sich das Objekt mit einem anderen übergebenen Objekt überschneidet.
 void setImage(GreenfootImage image)
          Setzt das Bild für das Objekt auf das angegebenes Bild.
 void setImage(String filename)
          Setzt das Bild für den Akteur.
 void setLocation(int x, int y)
          Setzt das Objekt auf eine neue Position.
 void setRotation(int rotation)
          Setzt die Drehausrichtung des Objektes.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Actor

public Actor()
Erzeugt einen Akteur. Das erzeugte Objekt hat ein Standartbild.

Method Detail

act

public void act()
Die act Methode wird von der Greenfoot-Entwicklungsumgebung aufgerufen, um Objekten die Möglichkeit zu geben, eine Aktion auszuführen. Bei jedem Aktionsschritt der Greenfoot-Entwicklungsumgebung wird die jeweilige act Methode jedes Objekts aufgerufen. Die Reihenfolge der so abgearbeiteten Objekte ist nicht beeinflussbar. Diese Methode ist zunächst leer und hat daher keine Auswirkungen. Sie sollte aber in Unterklassen überschrieben werden, um die Aktionen des Objektes zu implementieren.


addedToWorld

protected void addedToWorld(World world)
Die Methode wird von der Greenfoot-Entwicklungsumgebung aufgerufen, sobald das Objekt in die Welt hinzugefügt wurde. Diese Methode kann überschrieben werden, um angepasste Befehle beim Hinzufügen des Objektes in die Welt abzuarbeiten. Diese Methode ist in der Ausgangssituation leer.

Parameters:
world - Die Welt, in die das Objekt hinzugefügt wurde.

getImage

public GreenfootImage getImage()
Gibt das Bild zurück mit dem der Akteur dargestellt wird. Dieses Bild kann verändert werden, um die Darstellung des Objektes zu verändern.

Returns:
Das Bild des Objektes.

getIntersectingObjects

protected List getIntersectingObjects(Class cls)
Gibt alle Objekte zurück, mit denen sich das Objekt überschneidet. Es wird die graphische Ausdehnung der Objekte mit berücksichtigt. Beachte: Die Drehrichtung wird nicht berücksichtigt.

Parameters:
cls - Klasse der Objekte, nach denen gesucht werden soll. (Übergabe von null bedeutet, nach allen Objekten zu suchen).

getNeighbours

protected List getNeighbours(int distance,
                             boolean diagonal,
                             Class cls)
Gibt die Nachbarn des Objekts innerhalb einer angegebenen Entfernung zurück. Diese Methode berücksichtigt nur die logische Position und ignoriert die Ausmaße eines Objektes. Daher ist diese Methode am sinnvollsten in Szenarien zu verwenden, in denen Objekte auf eine Zelle begrenzt sind. Alle Zellen, die mit einer Anzahl ("distance") von Schritten vom Objekt aus erreichbar sind, werden berücksichtigt. Die Schritte werden nur in den vier Hauptrichtungen gemacht (Osten, Westen, Süden, Norden). Mit dem Parameter "diagonal" kann auch in diagonaler Richtung nach Nachbarn gesucht werden. Die Angabe distance/diagonal in Form von (1, false) schaut in vier Zellen nach, (1, true) schaut in insgesamt acht Zellen nach.

Parameters:
distance - Entfernung (in Zellen), in denen nach Objekten gesucht werden soll.
diagonal - Wenn true, wird auch diagonal gesucht.
cls - Klasse von Objekten, nach denen gesucht werden soll. (Übergabe von null bedeutet, nach allen Objekten zu suchen).
Returns:
Eine Liste aller gefundenen Nachbarn.

getObjectsAtOffset

protected List getObjectsAtOffset(int dx,
                                  int dy,
                                  Class cls)
Gibt alle Objekte zurück, die an einer Position liegen (relativ zu der Position des Objektes). Zu suchende Objekte können auf eine angegebene Klasse (und seine Unterklassen) beschränkt werden, indem der "cls" (engl. Abkürzung für classes) Parameter angeben wird.

Parameters:
dx - x-Koordinate relativ zu der Position des Objekts.
dy - y-Koordinate relativ zu der Position des Objekts.
cls - Klasse der Objekte, nach denen gesucht werden soll. (Übergabe von null bedeutet, nach allen Objekten zu suchen).
Returns:
Eine Liste der Objekte, die sich im angegebenen Abstand befinden. Die Liste enthält auch das Objekt, wenn der Abstand gleich 0 ist.

getObjectsInRange

protected List getObjectsInRange(int r,
                                 Class cls)
Gibt alle Objekte innerhalb der Reichweite "r" um das Objekt herum zurück. Als Einheit für die Entfernung werden die Anzahl der Zellen zurückgegeben. Ein anderes Objekt ist in Reichweite, wenn dessen Mitte von der Mitte des Akteurs kleiner oder gleich r entfernt ist.

Parameters:
r - Radius des Kreises in Zellen.
cls - Klasse der Objekte, nach denen gesucht werden soll. (Übergabe von null bedeutet, nach allen Objekten zu suchen).

getOneIntersectingObject

protected Actor getOneIntersectingObject(Class cls)
Gibt ein Objekt zurück, mit denen sich das Objekt überschneidet. Es wird die graphische Ausdehnung des Objektes mit berücksichtigt. Beachte: Die Drehrichtung wird nicht berücksichtigt.

Parameters:
cls - Klasse des Objektes, nach dem gesucht werden soll. (Übergabe von null bedeutet, nach allen Objekten zu suchen).

getOneObjectAtOffset

protected Actor getOneObjectAtOffset(int dx,
                                     int dy,
                                     Class cls)
Gibt ein Objekt zurück, das an einer Position liegt (relativ zu der Position des Objekts). Zu suchende Objekte können auf eine angegebene Klasse (und seine Unterklassen) beschränkt werden, indem der "cls" (engl. Abkürzung für classes) Parameter angeben wird. Wenn sich mehr als ein Objekt der angegeben Klasse auf der Position befindet, wird eines der Objekte ausgewählt und zurückgegeben.

Parameters:
dx - x-Koordinate relativ zu der Position des Objekts.
dy - y-Koordinate relativ zu der Position des Objekts.
cls - Klasse des Objektes, nach dem gesucht werden soll. (Übergabe von null bedeutet, nach allen Objekten zu suchen).
Returns:
Ein Objekt an der angegeben Position oder null, falls kein Objekt gefunden wurde.

getRotation

public int getRotation()
Gibt die aktuelle Drehausrichtung des Objektes zurück. Die Drehung wird mit einem Gradwert (0 ... 359) angegeben. 0 Grad entspricht der Richtung Osten. Der Winkel erhöht sich im Uhrzeigersinn.

Returns:
Die Drehung in Grad.
See Also:
setRotation(int)

getWorld

public World getWorld()
Gibt eine Referenz auf das Weltobjekt zurück, in der sich das Objekt befindet.

Returns:
Die (Greenfoot) Welt.

getX

public int getX()
Gibt die x-Koordinate der aktuellen Position des Objektes zurück. Der zurück gelieferte Wert entspricht dem horizontalen Index der Zelle, in der sich das Objekt befindet. Die Zählung beginnt bei 0.

Returns:
Die x-Koordinate der aktuellen Position des Objektes.
Throws:
IllegalStateException - Wenn der Actor noch nicht in die Welt eingefügt worden ist.

getY

public int getY()
Gibt die y-Koordinate der aktuellen Position des Objektes zurück. Der zurück gelieferte Wert entspricht dem vertikalen Index der Zelle, in der sich das Objekt befindet. Die Zählung beginnt bei 0.

Returns:
Die y-Koordinate der aktuellen Position des Objektes.
Throws:
IllegalStateException - Wenn der Actor noch nicht in die Welt eingefügt worden ist.

intersects

protected boolean intersects(Actor other)
Überprüft, ob sich das Objekt mit einem anderen übergebenen Objekt überschneidet. Beachte: Die Drehrichtung des Objekts wird nicht berücksichtigt.

Returns:
true, wenn Objekte sich überschneiden, andernfalls false.

setImage

public void setImage(GreenfootImage image)
Setzt das Bild für das Objekt auf das angegebenes Bild. Die Datei muss vom Format jpg, gif oder png sein.

Parameters:
image - Das (Greenfoot) Bild.
See Also:
setImage(String)

setImage

public void setImage(String filename)
Setzt das Bild für den Akteur. Die Datei muss vom Format jpg, gif oder png sein. Die Datei muss im Ordner "images" innerhalb des Projektordners gespeichert sein.

Parameters:
filename - Der Name der Bilddatei.
Throws:
IllegalArgumentException - Wenn das Bild nicht geladen werden konnte.

setLocation

public void setLocation(int x,
                        int y)
Setzt das Objekt auf eine neue Position. Die Position wird mit einem Zellindex angegeben. Falls diese Methode überschrieben wird, ist es wichtig, diese Methode per super.setLocation(x, y) von der überschreibenden Methode aus aufzurufen.

Parameters:
x - Position auf der x-Achse.
y - Position auf der y-Achse.
Throws:
IllegalStateException - Falls das Objekt noch nicht in die Welt eingefügt worden ist.

setRotation

public void setRotation(int rotation)
Setzt die Drehausrichtung des Objektes. Die Drehung wird mit einem Gradwert (0 ... 359) angegeben. 0 Grad entspricht Richtung Osten. Der Winkel erhöht sich im Uhrzeigersinn.

Parameters:
Die - Drehrichtung in Grad.