Actor
Die Klasse Actor
Ein Actor ist eine bewegliche Spielfigur, die in einer
World lebt und ein Bild besitzt. Deine eigenen Figuren sind
Unterklassen von Actor und überschreiben die Methode
act(). Die Position (x, y) wird in
Zellen angegeben.
Das <T> (z.B. bei getOneIntersecting) ist ein
Platzhalter für einen Datentyp: Beim Aufruf setzt du dafür die gewünschte
Klasse ein. getOneIntersecting<Muenze>() liefert z.B. eine
berührte Münze.
Beispiele
// Eine Münze, die sich in jedem Schritt ein Stück dreht
class Muenze : Actor() {
init {
image = Image("muenze.png")
}
override fun act() {
turn(3)
}
}
// Im act() einer Figur: eine berührte Münze einsammeln
val muenze = getOneIntersecting<Muenze>()
if (muenze != null) {
world.removeObject(muenze)
}
API - Application Programming Interface
Eine API ist eine Übersicht über die Teile einer Klasse, die du verwenden kannst: ihre Attribute, Konstruktoren und Methoden.
| Attribute | |
|---|---|
world: World |
Die Welt, in der dieser Actor liegt. |
image: Image |
Das Bild (Aussehen) des Actors. |
x, y: Int |
Position in Zellen. Wird automatisch an den Feldrand begrenzt. |
rotation: Int |
Blickrichtung in Grad (0 = rechts, im Uhrzeigersinn). |
isAtEdge: Boolean |
true, wenn der Actor am Rand der Welt liegt. |
isClicked: Boolean |
true, wenn gerade auf diesen Actor geklickt wurde. |
| Konstruktoren | |
Actor() |
Erzeugt eine neue Figur. Das Bild setzt du danach über das Attribut image (meist im init-Block). |
| Methoden | |
act() |
Wird in jedem Schritt aufgerufen. Hier programmierst du das Verhalten der Figur (überschreiben). |
move(distance: Int) |
Bewegt den Actor um distance Zellen in Blickrichtung. |
turn(degrees: Int) |
Dreht die Blickrichtung um degrees Grad. |
turnTowards(x: Int, y: Int) |
Dreht die Blickrichtung zur Zelle (x, y) hin. |
distanceTo(other: Actor): Int |
Abstand zu einem anderen Actor (in Zellen). |
intersects(other: Actor): Boolean |
true, wenn sich die Bilder dieses und des anderen Actors überschneiden. |
getIntersecting<T>(): List<T> |
Alle sich überschneidenden Actor-Objekte vom Typ T. |
getOneIntersecting<T>(): T? |
Ein sich überschneidender Actor vom Typ T oder null. |
isTouching<T>(): Boolean |
true, wenn sich mindestens ein Actor vom Typ T überschneidet. |
removeTouching<T>() |
Entfernt einen sich überschneidenden Actor vom Typ T aus der Welt. |