◀ Zurück Weiter ▶ Startseite

Informatik 10. Klasse - Projekt

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);
   }
}