Skip to content

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.

  1. 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.
  2. 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 Variablen zaehler und zeit sollen mit dem Wert 0 initialisiert werden, die Variable spielBeendet mit den Wert false. Sorge mit dem Aufruf SGSystem.zeigeKonsole(true) dafür, dass die Konsole angezeigt wird.
  3. Implementiere dann die Methode positioniereKaese. Hier soll kaese auf eine zufällige Position gesetzt und die Variable zeit auf den Wert 0 gesetzt werden.
  4. In der Methode fuehreAus implementiere eine while-Schleife, die ausgeführt wird, solange spielBeendet den Wert false hat. Alle folgenden Codeblöcke müssen in den Schleifenrumpf eingefügt werden.
  5. 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.
  6. 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.
  7. 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 auf true gesetzt werden.
  8. 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 Methode positioniereKaese() aufgerufen werden.
  9. Wenn der Wert von zeit größer als 250 ist, soll die Methode positioniereKaese() aufgerufen werden, ansonsten der Wert von zeit um 1 erhöht werden.
  10. Zum Abschluss soll ein Warten erzwungen werden.
KatzUndMaus
UML-KatzUndMaus
Prototyp