Snake: una serpiente de arrays
La serpiente es un array de segmentos. Cada segmento guarda una posición x, y.
Muévela con las flechas, W A S D o los botones. Recoge cinco frutas en 45 segundos;
si chocas contra una pared o contra tu cuerpo, la partida termina.
La primera victoria suma 5 puntos. Perder o empatar no consume la recompensa.
Puedes volver a jugar tantas veces como quieras; las victorias siguientes son de práctica.
Inicia sesión para guardar los puntos.
Cabeza, cuerpo y cola #
En game.js, snake[0] es la cabeza. Cada movimiento calcula una nueva posición y la
inserta con unshift(). Cuando no hay comida, pop() retira el último segmento.
Cuando hay comida, la cola permanece y la serpiente crece.
some() comprueba si una posición pertenece al cuerpo. La cola que va a desaparecer
no se cuenta como obstáculo: entrar en su casilla puede ser un movimiento válido.
La función placeFood() recorre el tablero y elige una casilla libre.
config.js define el tamaño del tablero y las direcciones. renderer.js dibuja el array
sin cambiarlo. controls.js relaciona las teclas con las direcciones. El adaptador
../shared/arcade.js coordina los pasos de física, los controles y la pausa en el navegador.
Solo hay un movimiento cada siete pasos de física; así el array avanza por casillas.
El motor rechaza los giros de 180 grados para evitar que la cabeza choque inmediatamente
con el segmento siguiente.
Para investigar #
¿Por qué la serpiente crece cuando no ejecutamos pop()? Prueba otro tamaño de casilla
o aumenta moveEvery en tu copia para ralentizar el movimiento.
Ejecutarlo y modificarlo en tu ordenador #
El visor muestra el código que utiliza esta partida. Descarga los archivos respetando
el árbol de carpetas. Para los juegos con archivos ../shared/, guarda esa carpeta junto
a la carpeta del juego. Por ejemplo: games/snake/ y games/shared/.
Sirve la carpeta games con un servidor HTTP local. Si tienes Python 3 instalado,
puedes ejecutar python3 -m http.server 8000 desde esa carpeta y abrir la subcarpeta
del juego en el navegador. La versión independiente funciona sin instalar librerías;
los puntos del curso se guardan únicamente desde la plataforma.