Sicherer Bereich
Wer kennt den sicheren Bereich?
Der braune Streifen am Spielfeldrand stellt das gefährliche Ufer dar. Er ist 40 Pixel breit. Für die Prüfung zählt die Position der Ente, also ihr Mittelpunkt. Sobald dieser den Uferstreifen erreicht, endet das Spiel.
Bisher prüft die Klasse Teich selbst, ob eine Ente den
sicheren Bereich verlassen hat:
if (ente.x <= 40 || ente.x >= width - 40 ||
ente.y <= 40 || ente.y >= height - 40) {
showText("Eine Ente ist am Ufer in Gefahr!", 240, 250)
stop()
}
Damit muss die Spielwelt die genaue Lage der Grenzen und die Position der
Ente auswerten. Sinnvoller wäre es, wenn jede Ente selbst überprüfen
würde, ob sie sich noch im sicheren Bereich befindet. Sie könnte dazu ein
Attribut imSicherenBereich besitzen, das beim
Lesen überprüft, ob die Ente noch im sicheren Bereich ist.
Aufgabe 1
Ente passt. Lege fest, welchen
Datentyp ein entsprechendes Attribut haben muss.
Zeichne ein Klassendiagramm zur Klasse Ente mit dem neuen Attribut.
Aufgabe 2
Ente das abgeleitete Attribut
imSicherenBereich. Sein Getter
soll genau dann true zurückgeben, wenn x und
y jeweils mehr als 40 Pixel von allen vier Rändern entfernt
sind. Verknüpfe die vier notwendigen Vergleiche mit logischen Operatoren.
Hilfe findest du bei Bedarf in der Klasse Teich, da aktuell
dort die gleichen Vergleiche durchgeführt werden.
Aufgabe 3
Lösche die bisherige Randprüfung in Teich.
Du findest die Prüfung in der Methode act() der Klasse
Teich im unteren Bereich.
Ergänze stattdessen in der Methode act() der Klasse
Ente eine Prüfung, die das Spiel beendet,
sobald die Ente nicht imSicherenBereich ist.