s n h m r u

Minimallogo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

s n h m r u
i

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:

Klassendiagramm mit Actor als Oberklasse und Ausreisser als Unterklasse

Aufgabe 1

Beschreibe anhand des Klassendiagramms die Beziehung von 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

Lege die Klasse 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() {
        ...
    }
}
Beachte einen kleinen Unterschied: Im Hauptprogramm stand 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)
}

Suche

v
100.123.2.2.4 Die Klasse Ausreisser
Kopieren durch Anklicken

Rückmeldung geben