PADDLE BALL
Introductions PADDLE BALL
Paddle Ball Game es un juego arcade clásico creado en Flutter.
1. Arquitectura y tecnología del juego. El juego Paddle Ball se desarrolló con Flutter, aprovechando sus capacidades de renderizado de alto rendimiento para una animación fluida. Motor de animación: El bucle del juego se controla mediante un StatefulWidget que utiliza SingleTickerProviderStateMixin y un AnimationController con una duración fija (16 ms para ~60 FPS). El método _updateGame, llamado en cada tick, gestiona todas las comprobaciones de física y colisión. Renderizado: Los elementos del juego (Pelota, Paleta, Ladrillos) se renderizan mediante una combinación de widgets de Flutter: Transform.translate dentro de una pila para un posicionamiento preciso basado en coordenadas calculadas (x, y) y widgets Container con estilo para un atractivo visual (gradientes, sombras). Sistema de coordenadas: El motor de física opera en un sistema de coordenadas central donde(0, 0) es el centro de la pantalla, lo que simplifica la lógica de colisión con los bordes y la paleta. 2. Mecánicas básicas de juego. A. El movimiento de la pelota: la posición de la pelota $(\text{ballX}, \text{ballY})$ se actualiza en cada cuadro en función de su vector actual $(\text{velocityX}, \text{velocityY})$. Velocidad y nivelación: la velocidad de la pelota aumenta con cada nivel, lo que hace que el juego sea progresivamente desafiante (velocityX/Y = 4 + (level * 0.5)). Choque de pared: cuando la pelota golpea los límites verticales (izquierda/derecha) u horizontales (superiores) de la pantalla, el componente de velocidad correspondiente simplemente se invierte (velocityX = -velocityX o velocityY = -velocityY). B. El control de la paleta: la posición horizontal de la paleta (paddleX) se controla directamente mediante la entrada de arrastre del usuario a través de la devolución de llamada onPanUpdate de GestureDetector. Rebote inteligente: la colisión de la paleta utiliza un cálculo de rebote inteligente. El ángulo de la bola se determina por la posición del golpe en la pala (cuanto más cerca del borde, mayor es la velocidad horizontal), lo que favorece los tiros angulados para impactar en ladrillos difíciles de alcanzar. C. Ladrillos y puntuación. Inicialización: Los ladrillos se inicializan en una cuadrícula (5 x 6 por defecto) con colores según su posición en la fila. Colisión: La colisión de ladrillos se comprueba en cada actualización del juego. Cuando una bola choca, el ladrillo se marca como destruido (isDestroyed = true), la puntuación aumenta en 10 puntos y la dirección vertical u horizontal de la bola se invierte según el lado del impacto. Objetivos del juego:Subir de nivel: El nivel avanza cuando se destruyen todos los ladrillos. Se inicializa un nuevo conjunto de ladrillos y aumenta la velocidad de la bola. Pérdida de vidas: Si la bola cae por debajo de la posición vertical de la pala (pala Y), el jugador pierde una vida. La bola se reinicia en la parte superior central. Fin de la partida: La partida termina cuando el jugador se queda sin vidas (vidas <= 0). 3. Interfaz de usuario y estadoPantalla de visualización frontal (HUD): muestra el puntaje, las vidas y el nivel actuales en la parte superior de la pantalla.Estados del juego: la aplicación administra tres estados distintos:Pantalla de inicio: muestra instrucciones y un botón INICIAR JUEGO para comenzar el nivel 1.Juego activo: el ciclo de juego principal donde la paleta, la pelota y los ladrillos son visibles y animados.Juego terminado: muestra el puntaje final y el nivel alcanzado, junto con un botón JUGAR DE NUEVO para restablecer el estado del juego.