3.3 Übungsprojekt: BulletBill
Du kannst bei dem folgenden Spiel den Prototypen benutzen oder das Projekt von Grund auf programmieren. Wenn du den Prototypen nutzt, überspringe den ersten Aufgabenteil.
1. Implementieren der Klasse und des Konstruktors
Erstelle ein neues Projekt und eine neue Klasse. Nutze das nebenstehende UML-Diagramm, um die Attribute und Methoden zu erstellen. Im Konstruktor erzeuge die Objekte, so dass sich ungefähr die nebenstehende Anordnung der einzelnen Objekte ergibt. Die Dateinamen für die SGBild
-Objekte lauten „bulletbill.png“ und „greenpipe.png“. Die Variable geschwPipe
soll auf einen Wert von 5 festgelegt werden.
2. Die Methode verschiebePipes
Anders als bisherige Projekte muss in diesem Projekt eine Methode implementiert werden, die in einer anderen Methode aufgerufen wird. Diese Methode
verschiebePipes
sorgt dafür, dass die Röhren nach oben bzw. unten verschoben werden und an einer bestimmten Position die Richtung ändern. Nutze für diese Methode den folgenden Pseudocode:
verschiebe pipeOben um den Wert von geschwPipe in y-Richtung
verschiebe pipeUnten um den Wert von geschwPipe in y-Richtung
wenn der y-Wert von pipeUnten größer als 600 ist
multipliziere geschwPipe mit -1 und speichere das Ergebnis in geschwPipe
wenn der y-Wert von pipeOben kleiner als -450 ist
multipliziere geschwPipe mit -1 und speichere das Ergebnis in geschwPipe
2. Die Methode fuehreAus
Die Methode fuehreAus besteht aus zwei Phasen: In der ersten Phase kann der Spieler die Ausrichtung von BulletBill bestimmen. Gibt er Startbefehl, folgt die Flugphase, in der eine Kollision mit den Röhren überprüft wird. Du kannst das nebenstehende Struktogramm (leichter) oder die folgende Beschreibung (schwerer) nutzen:
Es sind also zwei hintereinander ausgeführte Schleifen nötig:
Die erste Schleife wird ausgeführt, solange die Enter-Taste nicht gedrückt wurde. Es muss jeweils abgefragt werden, ob die linke (bzw. rechte) Cursortaste gedrückt wurde. Ist dies der Fall, wird bill gegen den Uhrzeigersinn (bzw. im Uhrzeigersinn) um seinen Mittelpunkt gedreht. Abschließend wird die Methode verschiebeBalken() aufgerufen und das System zum Warten gezwungen.
Die zweite Schleife läuft solange, bis der Ball mit einem der beiden Balken kollidiert oder der x-Wert seiner Position größer als 700 ist. In der zweiten Schleife wird wiederum die Methode verschiebeBalken() aufgerufen und das System zum Warten aufgefordert. Zusätzlich wird das Objekt ball 10 Pixel in Drehrichtung verschoben.
Nach den beiden Schleifen wird eine halbe Sekunde (500 Millisekunden) gewartet und dann wird das Programm beendet.

