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

BluePlay bietet die beiden Klassen 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

Lege die Klasse 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).

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

Spielfeld erbt von World, Ausreisser erbt von Actor

Suche

v
100.123.2.2.4 Die Klasse Ausreisser
Kopieren durch Anklicken

Rückmeldung geben