Die Klasse Ausreisser
Eine Klasse für die Tiere
Bisher ist das Spielfeld leer - die ausgebüxten Tiere fehlen noch.
Wir benötigen also eine Klasse, die die Tiere beschreibt
und nennen sie Ausreisser.
Damit die Tiere auf dem Spielfeld sichtbar sein können, muss die Klasse
Ausreisser von der Klasse Actor erben.
Das Klassendiagramm zeigt einen Ausschnitt der beiden Klassen:
Aufgabe 1
Actor und Ausreisser.
Gehe auch auf die vererbten Attribute und Methoden ein.
Die Klasse Ausreisser
Eine erste Version der Klasse Ausreisser könnte so aussehen:
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.
Aufgabe 2
Ausreisser wie oben an.
Sage voraus, wie sich ein Tier bewegen wird.
Überprüfe deine Vorhersage, indem du ein Spielfeld und einen Ausreisser erzeugst.
Denke daran, dass du das Spielfeld mit show() anzeigen musst
und den Ausreisser mit addObject(...) auf das Spielfeld setzen musst.
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 {
// Drei Ausreisser-Objekte liegen mit addObject an
// verschiedenen Positionen des Spielfelds.
}
override fun act() {
...
}
}
welt.addObject(...) - dort hat das Hauptprogramm die Methode
am Objekt welt aufgerufen.
Hier ruft das Spielfeld seine eigene geerbte Methode auf.
Innerhalb der Klasse steht deshalb 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.
Mehr Hilfe zum init-Block
Ergänze eine mögliche Verteilung der drei Tiere auf dem Spielfeld.
init {
§§addObject§§(§§Ausreisser()§§, 50, 50)
§§addObject§§(§§Ausreisser()§§, 300, 200)
§§addObject§§(§§Ausreisser()§§, 550, 350)
}