Spiel verbessern
Abstand zum Rand
Das abgeleitete Attribut imSicherenBereich liefert nur
true oder false. Für eine Warnanzeige wäre dagegen
interessant, wie weit eine Ente vom nächsten Rand entfernt ist. Die
Funktion minOf liefert den kleinsten ihrer Parameter.
Wie bei der bisherigen Randprüfung liegen die äußeren Begrenzungslinien
bei 0, world.width und world.height:
val abstandZumRand: Int
get() {
return minOf(
x,
world.width - x,
y,
world.height - y
)
}
Aufgabe 1
abstandZumRand in der Klasse
Ente. Ändere den Getter von imSicherenBereich so,
dass er nur noch prüft, ob abstandZumRand größer als 40 ist.
Teste das Spiel erneut.
Warnung durch einen Bildwechsel
Eine Ente kann nun durch einen Bildwechsel anzeigen, dass sie sich dem Rand nähert. Dafür verwenden wir eine rote Variante des Entenbildes:
![]()
Das Bild dangerduck.png gehört nicht zu den Standardbildern von
BluePlay. Es wird als eigenes Bild zum Projekt hinzugefügt.
Aufgabe 2
- Lade dangerduck.png herunter und füge die Datei in BlueK unter Bilder über Bild hinzufügen zum Projekt hinzu.
- Ergänze in der Methode
act()der KlasseEnteeinen Bildwechsel: UnterschreitetabstandZumRandeinen selbst gewählten Wert, soll die Ente das Bilddangerduck.pngerhalten. Hat die Ente wieder mindestens diesen Abstand zum Rand, soll sie das Bildduck.pngerhalten. - Wenn du möchtest, kannst du noch weitere Bilder für weitere Stufen ergänzen. Dazu könntest du beispielsweise die Grafik der Ente mit einer Bildverarbeitung oder KI in weiteren Varianten erstellen.
Hilfe: Bild wechseln
Mit image = Image("dangerduck.png") erhält die Ente das
Warnbild. Mit image = Image("duck.png") erhält sie ihr
ursprüngliches Bild zurück. Prüfe den Abstand nach der Bewegung.
Eigene Erweiterungen
Du kannst das Spiel auch selbst erweitern. Zum Beispiel könntest du die Anzahl der Enten und Krokodile verändern, die Geschwindigkeit anpassen oder den Schwierigkeitsgrad im Verlauf des Spiels erhöhen. Auch die Größe oder Farbe des sicheren Bereichs lässt sich verändern. Oder du entwickelst eine eigene Spielregel.