PADDLE BALL
Introductions PADDLE BALL
Paddle Ball Game est un jeu d'arcade classique développé avec Flutter.
1. Architecture et technologie du jeu : Le jeu Paddle Ball est développé avec Flutter, tirant parti de ses capacités de rendu haute performance pour une animation fluide. Moteur d'animation : La boucle de jeu est pilotée par un StatefulWidget utilisant SingleTickerProviderStateMixin et un AnimationController avec une durée fixe (16 ms pour environ 60 FPS). La méthode _updateGame, appelée à chaque tick, gère toute la physique et les vérifications de collision. Rendu : Les éléments du jeu (balle, raquette, briques) sont rendus à l'aide d'une combinaison de widgets Flutter : Transform.translate au sein d'une Stack pour un positionnement précis basé sur les coordonnées $(\text{x}, \text{y})$ calculées, et des widgets Container stylisés pour l'attrait visuel (dégradés, ombres). Système de coordonnées : Le moteur physique fonctionne sur un système de coordonnées central où $(0, 0)$ est le centre de l'écran, simplifiant la logique de collision avec les bords et la raquette. 2. Mécanismes de jeu principaux Mouvement de la balle : La position de la balle ($\text{balleX}, \text{balleY}}$) est mise à jour à chaque image en fonction de son vecteur actuel ($\text{vitesseX}, \text{vitesseY}}$). Vitesse et progression de niveau : La vitesse de la balle augmente à chaque niveau, rendant le jeu progressivement plus difficile (vitesseX/Y = 4 + (niveau * 0,5)). Collision avec les murs : Lorsque la balle touche les bords verticaux (gauche/droite) ou horizontaux (haut) de l’écran, la composante de vitesse correspondante est simplement inversée (vitesseX = -vitesseX ou vitesseY = -vitesseY). Contrôle de la raquette : La position horizontale de la raquette (paddleX) est contrôlée directement par le glissement de l’utilisateur via le rappel onPanUpdate d’un détecteur de gestes. Rebond intelligent : La collision de la raquette utilise un calcul de rebond intelligent. L'angle de la balle sortante est déterminé par la position d'impact sur la raquette (plus on est près du bord, plus la composante horizontale de la vitesse est importante), ce qui encourage les tirs en angle pour atteindre les briques difficiles d'accès. C. Briques et score Initialisation : Les briques sont initialisées dans une grille (5 × 6 par défaut) avec des couleurs basées sur leur position sur la ligne. Collision : La collision des briques est vérifiée à chaque mise à jour du jeu. Lorsqu'une balle entre en collision avec une brique, celle-ci est marquée comme détruite (isDestroyed = true), le score augmente de 10 points et la direction verticale ou horizontale de la balle est inversée selon le côté de l'impact. Objectifs du jeu : Passer au niveau supérieur : Le niveau suivant se produit lorsque toutes les briques sont détruites. Un nouvel ensemble de briques est initialisé et la vitesse de la balle augmente. Perte de vie : Si la balle descend en dessous de la position verticale de la raquette (paddleY), le joueur perd une vie. La balle est réinitialisée en haut au centre. Fin de partie : La partie se termine lorsque le joueur n'a plus de vies (lives <= 0). Interface utilisateur et affichage tête haute (HUD) : Affiche le score actuel, le nombre de vies et le niveau en haut de l’écran. États du jeu : L’application gère trois états distincts : Écran de démarrage : Affiche les instructions et un bouton « Démarrer la partie » pour commencer le niveau 1. Jeu actif : Boucle de jeu principale où la raquette, la balle et les briques sont visibles et animées. Fin de partie : Affiche le score final et le niveau atteint, ainsi qu’un bouton « Rejouer » pour réinitialiser l’état du jeu.