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:
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()) // ?
}