first commit

This commit is contained in:
luriasb
2026-09-27 01:59:14 -06:00
commit 3d7ab0046f
12 changed files with 1245 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
# AGENTS.md
Repo de práctica: clon de Pac-Man (Vanilla JS + Canvas) usado para aprender
Spec Driven Development. No hay build, no hay tests, no hay linter.
## Stack
- HTML + CSS + Vanilla JS, sin dependencias ni package.json.
- Todo se ejecuta desde `src/index.html`. Se puede abrir directamente
en el navegador (`file://`) — no usa módulos ES ni fetch.
## Cómo correrlo
- Abrir `src/index.html` en un navegador, o servir la carpeta `src/` con
cualquier servidor estático (`python3 -m http.server` desde `src/`).
- Controles: flechas del teclado. Botón Start en el overlay.
## Estructura de `src/`
- `index.html` — canvas `#game`, overlay `#overlay`, y carga los scripts
en este orden estricto (es importante):
1. `js/maze.js` — expone `window.MAZE`, `TUNNEL_ROW`, `PACMAN_START`, `GHOST_STARTS`
2. `js/game.js` — expone `window.createGame`, `window.update`, `window.DIRS`
3. `js/render.js` — expone `window.draw`
4. `js/main.js` — bucle, teclado, overlays (lee los globales de los anteriores)
- Los scripts se comunican por `window.*` (no por imports). No convertir
a módulos ES sin refactorizar las 4 capas.
- `MAZE` (en `maze.js`) es la matriz prístina del laberinto (28×31).
`createGame()` la clava con `.map(row => row.slice())` por partida.
No mutar `MAZE` directamente.
## Convenciones de código
- Los archivos existentes usan comillas simples y espacios dentro de los
paréntesis (`function ( x )`, `'left'`). Mantener ese estilo al editar.
- Los archivos JS sí llevan comentarios explicativos por sección
(a diferencia de la regla global por defecto). No quitarlos al editar
a menos que el usuario lo pida.
- El render dibuja a `TILE = 20` px sobre el canvas de 560×620.
Cambiar `TILE` rompe el layout (CSS `#game-wrap` está dimensionado
a 560×620).
## Flujo de trabajo: Spec Driven Development
- Este proyecto existe para practicar SDD. Antes de añadir funcionalidad
usar el skill `.agents/skills/spec` (`/spec`) y guardar el resultado
en `specs/`. Para implementar a partir de un spec ya escrito, usar
`.agents/skills/spec-impl` (`/spec-impl`).
- `specs/` aún no existe; crearlo al primer spec.
- El template vive en `.agents/skills/spec/template.md`.
## Lo que NO hacer
- No añadir `package.json`, bundler, framework, ni dependencias.
- No convertir los `<script>` a módulos ES sin refactorizar — el orden
de carga y los globales en `window` son parte del diseño actual.
- No introducir tests automatizados, linter ni CI sin que el usuario
lo pida: el repo está deliberadamente vacío de tooling.
- No correr `npm install` ni similares — no hay nada que instalar.