CodeForge

JavaScript de Cero a Experto / Proyectos + retos

Proyecto: juego de trivia con timer y máquina de estados

Proyecto180 min150 XP

Estado local, datos remotos… falta el tercer tipo de app: la interactiva con tiempo. Un juego de trivia junta todo: una máquina de estados que orquesta las pantallas (módulo 13), un temporizador que presiona, puntaje en vivo y eventos por delegación. La misma lógica que sostiene un quiz, un Wordle o cualquier juego por turnos.

Reto

Trivia contra el reloj

Difícil180 min150 XP(×2 sin mirar la solución)

Qué debes construir

Un juego de preguntas con temporizador, sobre un banco de preguntas local (un array —sin API). La app tiene TRES pantallas gobernadas por una máquina de estados:

  • menu: título y botón "Empezar".
  • jugando: la pregunta actual (N de total), sus opciones, el puntaje y un temporizador que corre; si se acaba el tiempo, la pregunta cuenta como perdida y avanza sola.
  • fin: puntaje final y botón "Jugar de nuevo".

Requisitos concretos:

  1. Banco de datos: un array PREGUNTAS, cada una { pregunta, opciones: [...], correcta: <índice> }.
  2. Máquina de estados: una variable estado con valores "menu", "jugando", "fin", y una función que hace las transiciones. Un solo render() pinta la pantalla según el estado.
  3. Temporizador por pregunta (p. ej. 10 s) con setInterval; al llegar a 0, avanza como si fallara. Al responder O cambiar de pantalla, LIMPIA el intervalo (módulo 9: un setInterval sin clearInterval es una fuga).
  4. Puntaje: +1 por acierto; se muestra durante el juego y al final.
  5. Reinicio limpio: "Jugar de nuevo" vuelve al menú con puntaje e índice en cero, sin temporizadores zombis corriendo.

Reglas

  • El estado es la fuente de verdad de QUÉ pantalla se ve; render() lo refleja. Nunca muestres/ocultes pantallas "a mano".
  • Un solo temporizador vivo a la vez: cada vez que arranca uno, el anterior debe estar muerto.
  • Delegación de eventos (módulo 8) para los botones que nacen y mueren con cada pantalla.
  • Guard iniciar() con DOMContentLoaded.

180:00

Cuando estés listo, arranca el reloj.

Qué sigue

Tres proyectos, tres tipos de app: estado local, datos remotos e interacción con tiempo. Ya construyes cosas completas. Lo que queda es afilar el otro músculo que evalúa la industria: los retos cortos de entrevista. Diez katas, de FizzBuzz al debounce que acabas de usar —resueltos con tests que corren en vivo. La preparación que te abre la puerta.