s n h m r u
i

Geschwindigkeit und Lenkung schützen

Die Klasse Ente optimieren

In der Klasse Ente gibt es zwei Attribute, die von außen verändert werden können: geschwindigkeit und lenkung. Sie können dabei beliebige Werte annehmen. Das ist für das Spiel nicht sinnvoll, da die Enten sich dann nur schwer kontrollieren lassen. Um das Spiel zu verbessern, passen wir die Klasse Ente an. Die anderen Klassen bleiben größtenteils unverändert.

Die Spielwelt darf weiterhin die Geschwindigkeit und die Lenkung der Enten verändern. Ob die Werte zulässig sind, sollte aber die Ente selbst entscheiden. Sie ist für ihren eigenen Zustand verantwortlich und kennt die Regeln für eine sinnvolle Bewegung.

Setter für die Geschwindigkeit

Für das Spiel könnte die Geschwindigkeit beispielsweise mindestens 1 und höchstens 4 betragen. Kleinere Werte werden auf 1, größere auf 4 begrenzt.

Aufgabe 1

Ergänze in der Klasse Ente einen Setter für geschwindigkeit. Der Setter soll neue Werte auf einen sinnvollen Bereich begrenzen. Welcher Bereich sinnvoll ist, kannst du selbst entscheiden.

Erzeuge nach dem Kompilieren im Codepad mit val probe = Ente() eine Testente. Übernimm das Ergebnis von probe auf die Objektbank und öffne den Inspektor. Weise geschwindigkeit nacheinander −2, 3 und 10 zu, einmal im Codepad und einmal im Inspektor. Beschreibe und erkläre die Ergebnisse.

Lenkung nach links und rechts

Das Attribut lenkung gibt an, um wie viele Grad sich eine Ente bei jedem Spielschritt dreht. Negative Werte lenken in die eine, positive Werte in die andere Richtung. Bei 0 entsteht nur die kleine zufällige Richtungsänderung aus der Methode act().

Für das Spiel sind beispielsweise Werte von −5 bis 5 sinnvoll. Dieses Mal sollen Zuweisungen außerhalb des Bereichs ignoriert werden: Der bisherige Wert bleibt dann erhalten.

Aufgabe 2

Ergänze einen Setter für lenkung. Teste analog zu Aufgabe 1 mit Hilfe des Codepads und des Objektinspektors.

Optional: Grenzen als Attribute

Falls du dich mit der Vertiefung zu privaten Attributen beschäftigt hast, kannst du die Grenzen für die Geschwindigkeit als private Attribute in der Klasse Ente speichern. Die Grenzen erhalten dann eigene Attribute. Dadurch stehen die Zahlen nicht fest codiert im Setter und lassen sich später leicht anpassen:

private val minimaleGeschwindigkeit = 1
private val maximaleGeschwindigkeit = 4

Aufgabe 3

Ergänze private Attribute für die Grenzen der Geschwindigkeit und der Lenkung. Passe die Setter an, sodass sie die Attribute verwenden. Schaue dir die Darstellung im Objektinspektor an und versuche auf die Attribute im Codepad zuzugreifen.

Suche

v
100.123.3.2.2 Geschwindigkeit und Lenkung schützen
Kopieren durch Anklicken

Rückmeldung geben