3.6 Katz und Maus
Beim folgenden Projekt wird eine Maus gesteuert, die einen Käse jagt. Dabei darf sich die Maus nicht von der Katze erwischen lassen. Der Käse wird beim Aufnehmen oder nach einer bestimmten Zeit auf eine neue zufällige Position gesetzt. Das Projekt wird von Grund auf in mehreren Schritten implementiert. Dabei werden einige neue oder selten genutzte Methoden benötigt: SGObjekt.verschiebeInDrehrichtung
, SGObjekt.dreheZuPunkt
und SGSystem.ausgabeInKonsole
. Schlage diese in der Dokumentation nach.
- Erstelle ein neues Projekt und erstelle eine Klasse KatzUndMaus. Übertrage dann das nebenstehende UML-Diagramm in deinen Quelltext. Achte darauf, die Namen der Attribute und Methoden genau zu übertragen, da sie in den folgenden Aufgaben wiederverwendet werden.
- Implementiere den Konstruktor. Die Dateinamen für die
SGBild
-Objekte lauten „cat.png“, „mouse.png“ und „cheese.png“, die Positionen der Objekte kannst du frei wählen. Die Variablenzaehler
undzeit
sollen mit dem Wert 0 initialisiert werden, die VariablespielBeendet
mit den Wertfalse
. Sorge mit dem AufrufSGSystem.zeigeKonsole(true)
dafür, dass die Konsole angezeigt wird. - Implementiere dann die Methode
positioniereKaese
. Hier soll kaese auf eine zufällige Position gesetzt und die Variablezeit
auf den Wert 0 gesetzt werden. - In der Methode
fuehreAus
implementiere eine while-Schleife, die ausgeführt wird, solangespielBeendet
den Wertfalse
hat. Alle folgenden Codeblöcke müssen in den Schleifenrumpf eingefügt werden. - Implementiere die Bewegung der Maus mit den Cursortasten: Links => -1 Pixel um den Mittelpunkt drehen; Rechts => 1 Pixel um den Mittelpunkt drehen; Oben: 2 Pixel in Drehrichtung bewegen.
- Erstelle eine Variable wahrscheinlichkeit und speichere einen zufälligen Wert zwischen 0 und 1 darin. Ist der Wert kleiner also 0.25, soll katze sich zu dem Mittelpunkt der Maus drehen und sich 5 Pixel in Drehrichtung bewegen.
- Wenn die Katze mit der Maus kollidiert, soll der folgende Text in der Konsole ausgegeben werden: „Spiel verloren: Du wurdest gefangen!“ Zusätzlich soll
spielBeendet
auftrue
gesetzt werden. - Wenn die Maus mit dem Käse kollidiert, soll
zaehler
um 1 erhöht werden. In der Konsole soll die Anzahl der gefundenen Käse ausgegeben werden. Dann soll die MethodepositioniereKaese()
aufgerufen werden. - Wenn der Wert von
zeit
größer als 250 ist, soll die MethodepositioniereKaese()
aufgerufen werden, ansonsten der Wert vonzeit
um 1 erhöht werden. - Zum Abschluss soll ein Warten erzwungen werden.

