Beispiel - Breakout - 4. Arbeitszyklus
Projektboard

Projekttagebuch

Aktuelle Implementierung
Verbesserung mit Hilfe der KI (LLM)
Der Schläger soll nicht aus dem Bildschirm bewegt werden können und der Ball soll in einer zufälligen Richtung starten.class Spiel extends Actor { ...
class Ball extends Circle { ...
Schläger darf den Bildschirm nicht verlassen
Aktuell bewegt sich der Schläger einfach immer nach links oder rechts – egal, wo er ist. Du musst vor der Bewegung prüfen, ob er noch im erlaubten Bereich ist (z.B. zwischen x = 0 und x = 800, wenn das die Breite ist).
Ball soll zufällig starten
Der Ball soll sich beim Start in eine zufällige Richtung bewegen. Dafür kannst du den Winkel (setRotation
) zufällig setzen – z.B. irgendwo zwischen 30° und 150°, damit er nicht direkt senkrecht runterfliegt.
Korrigierte Version:
class Spiel extends Actor
{
Schläger schläger;
Ball ball;
Text anzeige;
Block block;
boolean gestartet = false;
Spiel()
{
schläger = new Schläger();
ball = new Ball();
anzeige = new Text();
block = new Block();
// Startpositionen
schläger.moveTo(400, 960);
ball.moveTo(300, 300);
// Anzeige vorbereiten
anzeige.moveTo(400, 200);
anzeige.setText(" START \nPRESS -SPACE-");
anzeige.setFontsize(48);
}
void act()
{
// Schlägersteuerung mit Begrenzung
if (isKeyDown('A') && schläger.getX() > 60)
{
schläger.nachLinks();
}
if (isKeyDown('D') && schläger.getX() < 740)
{
schläger.nachRechts();
}
// Start bei Leertaste
if (!gestartet && isKeyDown(Key.Space))
{
println("Start");
gestartet = true;
anzeige.setVisible(false);
ball.setRandomRichtung(); // Neue Methode!
}
// Ballbewegung nach Start
if (gestartet)
{
ball.bewegen();
}
// Ball zurücksetzen, wenn aus dem Bild
if (ball.isOutsideView())
{
ball.moveTo(300, 300);
ball.setRandomRichtung(); // wieder zufällig starten
}
}
}
class Ball extends Circle
{
Ball()
{
super(300, 300, 10);
setFillColor(Color.red);
}
void bewegen()
{
forward(10);
}
void setRandomRichtung()
{
// Zufallswinkel zwischen 30 und 150 Grad oder zwischen 210 und 330 Grad
int richtung;
if (Math.random() < 0.5) {
richtung = 30 + (int)(Math.random() * 120); // 30°–150°
} else {
richtung = 210 + (int)(Math.random() * 120); // 210°–330°
}
setRotation(richtung);
}
}