🎮 Descripción
El objetivo es destruir todos los ladrillos rebotando la bola con la pala, evitando que la bola caiga fuera del área de juego. La partida comienza con un menú de dificultad integrado dentro del propio canvas.
✨ Funcionalidades
- Menú inicial de dificultad: Fácil, Normal, Difícil.
- Velocidad de bola ajustada según dificultad.
- Incremento progresivo de velocidad durante la partida.
- Ladrillos con resistencia variable (1 o 2 impactos).
- Estados visuales de ladrillos dañados.
- Mensaje de Game Over y reinicio con tecla.
- Diseño responsive sin scroll vertical.
- Navegación por teclado en el menú de dificultad.
🎯 Controles
| Acción | Tecla |
|---|---|
| Mover pala | ← → o A D |
| Menú de dificultad | ← → (también ↑ ↓) + Enter o Espacio |
| Reiniciar tras Game Over | cualquier tecla |
🧰 Stack técnico
- Astro (sitio y bundling)
- TypeScript (lógica del juego)
- Canvas API (renderizado)
- ESLint (calidad de código)
🗂️ Estructura del proyecto
src/
pages/
index.astro
scripts/
breakout/
config.ts
state.ts
engine.ts
index.ts⚙️ Instalación y uso
npm install
npm run devAbrir en navegador: http://localhost:4321
📜 Scripts disponibles
| Script | Descripción |
|---|---|
npm run dev |
entorno de desarrollo |
npm run build |
build de producción |
npm run preview |
previsualización del build |
npm run typecheck |
chequeo de tipos (astro check) |
npm run lint |
análisis estático de TypeScript |
🧪 Calidad
Antes de subir cambios:
npm run typecheck
npm run lint
npm run build🤝 Contribuciones
Las contribuciones son bienvenidas. Si quieres mejorar el juego o proponer nuevas ideas:
- Abre un issue para discutir cambios grandes.
- Envía un Pull Request con una descripción clara.
- Mantén el estilo de código y pasa los checks (typecheck, lint, build).
📄 Licencia
Este proyecto se distribuye bajo la licencia MIT. Consulta el archivo LICENSE.
