In Vorbereitung

Java Workshop: Einführung in eine Java- Programmierumgebung (IDE)

Angeboten von openHPI Team

Weitere Erläuterungen zu den Aufgaben im Breakout Spiel.

Ball

display() - zeichnet den Ball abhängig von seiner aktuellen Größe und seiner aktuellen Position (vgl. die display() Methode im Paddle)

move() - setzt die Position des Balles bei jedem Aufruf der draw() Methode (in der Game Klasse) neu. (vgl. die move() Methode im Paddle. Genutzt wird die geerbte update() Methode.)

Weiterhin hilfreich wären:

Methoden zum Abprallen: bounceX(), bounceY()

Datenstruktur zum Speichern der Bewegungsrichtung: Entweder mehrere ints (x und y Richtung) oder (schöner) ein Vector

BallDepot

Benötigt wird eine Datenstruktur zum Verwalten der Bälle: Array oder ArrayList (von uns empfohlen)

display() - iteriert über die in der Datenstruktur enthaltenen Bälle und lässt diese sich selbst zeichnen.

isEmpty() - delegiert an die entsprechende Methode der ArrayList. (Wer ein Array verwendet muss sich selbst kümmern.)

dispense() - Entnimmt, falls vorhanden, einen Ball aus der Datenstruktur, nimmt gewünschte Veränderungen (optional: z.B. Startposition, Größe, Farbe, Musik) vor und gibt diesen als Rückgabewert an die aufrufende Methode zurück.

Hint: Wenn das BallDepot leer ist gibt diese Methode null zurück.

Brick

display() - siehe Ball.

Weiterhin hilfreich wären:

Ein Attribut zum Halten des Status/der verbleibenden Leben des Bricks: int

nextStatus() - zählt den Status bei jedem Treffer nach unten, so lange der Ball noch lebt. (evtl. Farbwechsel o.ä.)

isDead() - Boole'scher Wert ob der Ball noch Leben, bzw. keine Leben mehr hat.

EndScreen

update() - hier gibt es nichts zu tun, es sei denn ihr habt euch irgendwelche Extras (z.B. Feuerwerk) überlegt.

Info

Attribut zum Halten der Spielanleitung. Wird in der display() Methode ausgegeben.

Score

Attribut zum Halten der Punktzahl. Wird in der display() Methode ausgegeben.

StartScreen

update() - hier gibt es nichts zu tun, es sei denn ihr habt euch irgendwelche Extras überlegt.

Timer - optionales Extra

Attribut zum Speichern der Zeit.

Hilfreich: die Methode millis() aus der core.jar

update() - Neuberechnung der Zeit (wie auch immer ihr euch das vorgestellt habt)

Wall

Datenstruktur zum Speichern der Bricks: ArrayList (empfohlen) oder Array.
Bei mehr als einer Reihe evtl. Verschachtelung der Datenstruktur.

buildWall() - befüllt die Datenstruktur mit den Bricks und setzt diese an ihre Position.
Aufruf z.B. im Konstruktor.

display() - iteriert über die in der Datenstruktur enthaltenen Bricks und lässt diese sich selbst zeichnen.

CollisionLogic

checkCollision() - prüft ob der Ball mit einem der kollisionsfähigen Elemente (Paddle, Bricks aus der Wall und Spielbegrenzungen am Spielfeldrand) zusammen stößt.

Hilfreich dazu sind:

Methoden die die einzelnen Kollisionen überprüfen und einen Bool'schen Wert zurückgeben.
Der Einsatz von Methoden die von den kollisionsfähigen Objekten zur Verfügung gestellt werden.
Z.B. myBall.bounceX(), myBall.bounceY(), myBrick.isDead(), myBrick.nextStatus(),...
Es sind aber auch andere Ansätze denkbar.

In unserem Code hatte sich ein Fehler eingeschlichen. Wenn ihr die Kollisionen etwas sauberer gestalten wollt, könnt ihr diesen HotFix (unter dem Video) verwenden.