El objetivo principal es recrear el juego "Simón dice", donde el usuario debe recordar y repetir una secuencia de colores generada aleatoriamente. A medida que el usuario avanza, la secuencia incorpora un nuevo color, aumentando progresivamente la dificultad.
Clases y objetos auxiliares que gestionan la información básica del juego:
-
Datos:
Contiene datos compartidos como:- 🔢 La ronda inicial.
- 🎨 La secuencia actual.
- 🏆 La ronda máxima alcanzada.
-
Colores:
Enum que define los colores disponibles en el juego:- ROJO, VERDE, AZUL, AMARILLO.
-
Estados:
Enum que define los estados posibles del juego:- INICIO: 🟢 El juego está listo para comenzar.
- GENERANDO: 🔄 Se está creando la secuencia para que el jugador la memorice.
- ADIVINANDO: 🤔 El jugador intenta repetir la secuencia.
- FIN: ❌ El juego ha terminado.
SimonDiceUI:
Componente principal que organiza la interfaz. @Composable:InfoRonda: 📋 Muestra información del estado del juego y la ronda actual.ShowSequence: 🎥 Reproduce la secuencia generada con animaciones para que el jugador la memorice.CrearBoton: 🔘 Modelo reutilizable para crear botones de colores y el botón "Start".
La pantalla se divide en tres bloques principales:
- Bloque Superior:
📊 Muestra información del juego, como la ronda y el estado. - Bloque Central:
🎨 Presenta la secuencia de colores generada para que el jugador la memorice. - Bloque Inferior:
🔘 Incluye los botones de colores y el botón "Start".
Encargado de la lógica del juego y el manejo de estados. Dadas las consultas en foros y documentación de android.
Se ha reemplazado el uso de Livedata
para exponer los datos reactivos mediante StateFlow:
ronda: Representa la ronda actual del juego.secuencia: Lista de colores generada para la ronda actual.estadoJuego: Estado actual del juego.
start:▶️ Inicia el juego generando una nueva secuencia.incrementarRonda: ➕ Incrementa la ronda, genera una nueva secuencia y actualiza el estado.intento: ✅ Verifica si el jugador acertó al elegir un color.resetRonda: 🔄 Reinicia las rondas y el estado del juego.
Funciones como showEstado y showSecuencia registran en Logcat el estado del juego y las secuencias generadas.
El usuario pulsa el botón "Start", generando una secuencia aleatoria de colores que se muestra para que el jugador la memorice.
El jugador intenta reproducir la secuencia pulsando los botones de colores en el orden correcto.
Si acierta, se avanza a la siguiente ronda, añadiendo un nuevo color a la.
Si el jugador falla, el estado cambia a FIN, mostrando la ronda alcanzada.
-
ShowSequence:
🎥 Utiliza coroutines y delays para simular el "parpadeo" de los colores, ofreciendo una experiencia visual fluida y atractiva. -
⚡ Reactividad:
Se empleaStateFlowpara actualizar automáticamente la UI en función de los cambios de datos o estados.