greenfoot
Class Actor

java.lang.Object
  extended by greenfoot.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.5
Author:
Gunnar Johannesmeyer; Update auf 2.5: Dennis Nolte

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 Actor 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 bestimmten Position liegen (relativ zu der Position des Objektes).
protected  List getObjectsInRange(int radius, Class cls)
          Gibt alle Objekte innerhalb der Reichweite radius 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.
protected  boolean isTouching(Class cls)
          Prüft, ob dieser Actor ein anderes Objekt der gegebenen Klasse berührt.
 void move(int distance)
          Bewegt den Actor die angegebene Distanz in seine Drehausrichtung.
protected  void removeTouching(Class cls)
          Entfernt ein Objekt der gegebenen Klasse, welches diesen Actor gerade berührt (falls eins existiert).
 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 Actor aus einer Datei.
 void setLocation(int x, int y)
          Setzt das Objekt auf eine neue Position.
 void setRotation(int rotation)
          Setzt die Drehausrichtung des Objektes.
 void turn(int amount)
          Dreht den Actor um den gegebenen Wert (in Grad).
 void turnTowards(int x, int y)
          Setzt die Drehausrichtung des Actors auf einen bestimmten Punkt.
 
Methods inherited from class
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 unspezifiziert.

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 Actor 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.

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 bestimmten Position liegen (relativ zu der Position des Objektes).

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 relativ zu diesem Objekt befinden. Die Liste enthält auch dieses Objekt, falls der Abstand gleich 0 ist.

getObjectsInRange

protected List getObjectsInRange(int radius,
                                 Class cls)
Gibt alle Objekte innerhalb der Reichweite radius um das Objekt herum zurück. Ein anderes Objekt ist in Reichweite, wenn dessen Mitte von der Mitte des Akteurs kleiner oder gleich radius entfernt ist.

Parameters:
radius - 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.

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 (rechte Seite der Welt). 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()
         throws IllegalStateException
Gibt die x-Koordinate der aktuellen Position des Objektes zurück. Der zurückgelieferte 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()
         throws IllegalStateException
Gibt die y-Koordinate der aktuellen Position des Objektes zurück. Der zurückgelieferte 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.

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

isTouching

protected boolean isTouching(Class cls)
Prüft, ob dieser Actor ein anderes Objekt der gegebenen Klasse berührt.

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

move

public void move(int distance)
Bewegt den Actor die angegebene Distanz in seine Drehausrichtung.

Die Drehausrichtung kann mittels setRotation(int) erfolgen.

Parameters:
distance - Die zu bewegende Distanz (in Zellen); ein negativer Wert erzeugt eine Rückwärtsbewegung
See Also:
setLocation(int, int)

removeTouching

protected void removeTouching(Class cls)
Entfernt ein Objekt der gegebenen Klasse, welches diesen Actor gerade berührt (falls eins existiert).

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

setImage

public void setImage(GreenfootImage image)
Setzt das Bild für das Objekt auf das angegebenes Bild.

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

setImage

public void setImage(String filename)
              throws IllegalArgumentException
Setzt das Bild für den Actor aus einer Datei. 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, damit keine endlose Rekursion entsteht.

Parameters:
x - Position auf der x-Achse.
y - Position auf der y-Achse.
See Also:
move(int)

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 (rechte Seite der Welt). Der Winkel erhöht sich im Uhrzeigersinn.

Parameters:
Die - Drehrichtung in Grad.

turn

public void turn(int amount)
Dreht den Actor um den gegebenen Wert (in Grad).

Parameters:
amount - Die zu drehende Gradanzahl; positive Werte erzeugen eine Drehung im Uhrzeigersinn
See Also:
setRotation(int)

turnTowards

public void turnTowards(int x,
                        int y)
Setzt die Drehausrichtung des Actors auf einen bestimmten Punkt.

Parameters:
x - Die x-Koordinate des anvisierten Punkts.
y - Die y-Koordinate des anvisierten Punkts.