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

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

Begründe, warum die Entscheidung, ob sich eine Ente im sicheren Bereich befindet, gut zur Klasse Ente passt. Lege fest, welchen Datentyp ein entsprechendes Attribut haben muss. Zeichne ein Klassendiagramm zur Klasse Ente mit dem neuen Attribut.

Aufgabe 2

Ergänze in der Klasse 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.

Suche

v
100.123.3.2.3 Sicherer Bereich
Kopieren durch Anklicken

Rückmeldung geben