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 Figur

Eine Figur als Objekt

Eine Spielfigur lässt sich gut als Objekt beschreiben. Eine Figur hat eine farbe und steht an einer Position, die durch zwei Koordinaten x und y festgelegt ist. Sie kann sich in eine Richtung bewegen (gehe) und sie kann prüfen, ob sie das Home-Feld erreicht hat (gewonnen).

Für die Koordinaten benutzen wir – wie bei Computergrafik üblich – einen Ursprung oben links. Die x-Achse zeigt nach rechts, die y-Achse nach unten. Die Zählung beginnt bei 0:

Koordinatensystem des Spielfelds

Für die Bewegungsrichtung vereinbaren wir: 0 = oben, 1 = rechts, 2 = unten, 3 = links.

Die Klasse in Kotlin

Daraus ergibt sich die folgende Klasse Figur. Die Position (x, y) kann sich ändern und wird deshalb mit var deklariert; die farbe bleibt gleich und ist eine val-Eigenschaft.

class Figur(val farbe: String, var x: Int, var y: Int) {

    fun gehe(richtung: Int) {
        // 0 = oben, 1 = rechts, 2 = unten, 3 = links
        when (richtung) {
            0 -> y = y - 1
            1 -> x = x + 1
            2 -> y = y + 1
            3 -> x = x - 1
        }
        // Das Spielfeld ist 5x5: Wer hinausläuft, kommt auf der anderen Seite wieder herein.
        if (x < 0) x = 4
        if (x > 4) x = 0
        if (y < 0) y = 4
        if (y > 4) y = 0
    }

    fun gewonnen(): Boolean {
        return x == 2 && y == 2
    }
}

Aufgabe 1 - Klasse beschreiben

Beschreibe mit je einem Satz die Attribute, den Konstruktor und die beiden Methoden der Klasse Figur. Erkläre außerdem, warum x und y mit var, farbe aber mit val deklariert ist.

Aufgabe 2 - Ausgaben vorhersagen

Sage voraus, was das folgende Programm an den markierten Stellen ausgibt. Führe es anschließend aus und überprüfe deine Vorhersage.

class Figur(val farbe: String, var x: Int, var y: Int) {

    fun gehe(richtung: Int) {
        when (richtung) {
            0 -> y = y - 1
            1 -> x = x + 1
            2 -> y = y + 1
            3 -> x = x - 1
        }
        if (x < 0) x = 4
        if (x > 4) x = 0
        if (y < 0) y = 4
        if (y > 4) y = 0
    }

    fun gewonnen(): Boolean {
        return x == 2 && y == 2
    }
}

fun main() {
    val f = Figur("rot", 0, 2)
    println(f.gewonnen())   // ?
    println(f.x)            // ?
    println(f.y)            // ?
    f.gehe(1)
    println(f.gewonnen())   // ?
    f.gehe(1)
    println(f.gewonnen())   // ?
}

Suche

v
100.123.5.1.2 Die Klasse Figur
Kopieren durch Anklicken

Rückmeldung geben