PADDLE BALL
Introductions PADDLE BALL
Paddle Ball Game ist ein klassisches Arcade-Spiel, das in Flutter entwickelt wurde.
1. Spielarchitektur & Technologie: Das Paddle Ball Game wurde mit Flutter entwickelt und nutzt dessen leistungsstarke Rendering-Funktionen für flüssige Animationen. Animations-Engine: Die Spielschleife wird von einem StatefulWidget mit SingleTickerProviderStateMixin und einem AnimationController mit fester Dauer (16 ms für ca. 60 FPS) gesteuert. Die Methode `_updateGame`, die bei jedem Tick aufgerufen wird, übernimmt alle Physik- und Kollisionsprüfungen. Rendering: Spielelemente (Ball, Schläger, Steine) werden mithilfe einer Kombination aus Flutter-Widgets gerendert: `Transform.translate` innerhalb eines Stacks für präzise Positionierung basierend auf berechneten (x, y)-Koordinaten und gestaltete Container-Widgets für visuelle Effekte (Farbverläufe, Schatten). Koordinatensystem: Die Physik-Engine arbeitet mit einem zentralen Koordinatensystem, wobei(0, 0) der Bildschirmmittelpunkt ist. Dies vereinfacht die Kollisionslogik mit den Rändern und dem Schläger. 2. Kern-Gameplay-Mechaniken: A. Die Ballbewegung: Die Position des Balls $(\text{ballX}, \text{ballY})$ wird in jedem Frame anhand seines aktuellen Geschwindigkeitsvektors $(\text{velocityX}, \text{velocityY})$ aktualisiert. Geschwindigkeit & Schwierigkeitsgrad: Die Ballgeschwindigkeit erhöht sich mit jedem Level, wodurch das Spiel zunehmend anspruchsvoller wird (velocityX/Y = 4 + (Level * 0,5)). Wandkollision: Trifft der Ball auf die vertikalen (linken/rechten) oder horizontalen (oberen) Bildschirmränder, wird die entsprechende Geschwindigkeitskomponente umgekehrt (velocityX = -velocityX bzw. velocityY = -velocityY). B. Die Schlägersteuerung: Die horizontale Position des Schlägers (paddleX) wird direkt durch die Wischgesten des Benutzers über den onPanUpdate-Callback des GestureDetectors gesteuert. Intelligentes Abprallen: Die Schlägerkollision nutzt eine intelligente Abprallberechnung. Der Winkel des abfliegenden Balls wird durch die Treffpunktlage auf dem Schläger bestimmt (je näher am Rand, desto höher die horizontale Geschwindigkeit). Dadurch werden schräge Schüsse begünstigt, um schwer erreichbare Steine zu treffen. C. Steine und Punktevergabe: Initialisierung: Die Steine werden in einem Raster (standardmäßig 5 × 6) mit Farben basierend auf ihrer Zeilenposition initialisiert. Kollision: Die Steinkollision wird bei jedem Spielupdate überprüft. Bei einer Kollision wird der Stein als zerstört markiert (isDestroyed = true), die Punktzahl erhöht sich um 10 Punkte und die vertikale oder horizontale Richtung des Balls wird je nach Aufprallseite umgekehrt. Spielziele: Levelaufstieg: Das Level steigt, sobald alle Steine zerstört sind. Ein neuer Satz Steine wird initialisiert und die Ballgeschwindigkeit erhöht sich. Lebensverlust: Fällt der Ball unter die vertikale Position des Schlägers (Schläger-Y), verliert der Spieler ein Leben. Der Ball wird in die Mitte des oberen Bereichs zurückgesetzt. Spielende: Das Spiel endet, wenn der Spieler keine Leben mehr hat (Leben <= 0). Benutzeroberfläche und Statusanzeige (HUD): Zeigt oben auf dem Bildschirm die aktuelle Punktzahl, die verbleibenden Leben und das Level an. Spielzustände: Die Anwendung verwaltet drei verschiedene Zustände: Startbildschirm: Zeigt Anweisungen und eine Schaltfläche „SPIEL STARTEN“ an, um Level 1 zu beginnen. Aktives Spiel: Der Kern des Spielablaufs, in dem Schläger, Ball und Steine sichtbar und animiert sind. Spielende: Zeigt die Endpunktzahl und das erreichte Level sowie eine Schaltfläche „NOCHMAL SPIELEN“ an, um den Spielzustand zurückzusetzen.