Die Klasse Ausreisser
Eine Klasse für die Tiere
Bisher ist dein Spielfeld leer - die ausgebüxten Tiere fehlen noch. Auch für sie schreibst du eine eigene Klasse. Wir nennen sie Ausreisser. Und auch sie soll ihre Fähigkeiten von einer BluePlay-Klasse erben.
Aufgabe 1
World und Actor
als Oberklassen an.
Entscheide begründet, welche der beiden die richtige Oberklasse für
Ausreisser ist.
Wirf bei Bedarf einen Blick in den Abschnitt BluePlay.
Die Klasse Ausreisser
So sieht die Klasse aus - mit Actor als Oberklasse:
class Ausreisser: Actor() {
init {
image = Image("cat.png")
}
override fun act() {
move(3)
turn(4)
}
}
Neu ist hier der init-Block:
Alles, was darin steht, wird beim Erzeugen eines Objekts ausgeführt.
Der init-Block gehört also zum Konstruktor der
Klasse.
Hier bekommt jedes neue Tier sein Bild - die Bilddateien liegen im Ordner
images des Projekts.
Die Methoden move und turn hat
Ausreisser von Actor geerbt.
Du kennst sie schon vom Goldrausch-Projekt, wo du sie per
Rechtsklick an der Spielfigur aufgerufen hast.
Aufgabe 2
Ausreisser wie oben an.
Sage voraus, wie sich ein Tier bewegen wird, wenn in jedem Spielschritt
move(3) und turn(4) ausgeführt werden.
Tiere auf das Spielfeld setzen
Beim Erzeugen eines Spielfelds sollen von Anfang an drei Tiere auf dem Feld
liegen.
Was beim Erzeugen passieren soll, gehört in den init-Block - diesmal in den
der Klasse Spielfeld:
class Spielfeld: World(600, 400, 1) {
var schritte = 0
init {
// Erzeuge hier drei Ausreisser-Objekte und setze sie
// mit addObject an verschiedene Positionen des Spielfelds.
}
override fun act() {
...
}
}
Die Methode addObject kennst du aus dem
Goldrausch-Hauptprogramm: welt.addObject(Spieler(), 300, 200).
welt.addObject(...) - dort hat das Hauptprogramm die Methode
am Objekt welt aufgerufen.
Hier ruft das Spielfeld seine eigene geerbte Methode auf.
Deshalb schreibst du innerhalb der Klasse einfach nur
addObject(...), ohne Objektnamen und Punkt davor.
Aufgabe 3
Vervollständige den init-Block des Spielfelds, sodass beim Erzeugen drei
Tiere an verschiedenen Positionen auf dem Feld liegen.
Erzeuge dann ein Spielfeld, zeige es mit show() an und
starte das Spiel.
Überprüfe deine Vorhersage aus Aufgabe 2.
Verändere anschließend die Werte bei move und
turn und beschreibe, wie sich die Bewegung dadurch ändert.
Hilfe zum init-Block
Ein Tier erzeugst du mit dem Konstruktoraufruf Ausreisser().
Die Zeile addObject(Ausreisser(), 50, 50) erzeugt also ein Tier
und setzt es an die Position (50, 50).
Du brauchst drei solche Zeilen mit unterschiedlichen Positionen.
Zur Erinnerung: Das Feld ist 600 Zellen breit und 400 Zellen hoch.
Vererbung im Klassendiagramm
Damit hast du zwei eigene Klassen, und beide erben von einer vorgegebenen BluePlay-Klasse: