first commit
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user