Juego de pacman en javascript

22 de enero 2019ComentariosjavascriptDavid Poza SuárezComentarios

Los últimos días los he dedicado a programar un juego usando únicamente vanilla javascript, para practicar todos los conceptos vistos hasta este momento en el blog.

He elegido implementar una versión basada en el clásico que creó Namco en 1980 con alguna licencia en su funcionamiento final.

He mantenido el diseño pixelado característico así como la resolución y unos sprites lo más parecidos posible.

Aquí se puede ver el juego en funcionamiento

Comportamiento de los fantasmas

En cuanto a la mecánica del juego he respetado todo lo posible el comportamiento original de cada uno de los 4 fantasmas. Para ello me he documentado gracias a estos estupendos artículos: http://gameinternals.com/post/2072558330/understanding-pac-man-ghost-behavior https://strategywiki.org/wiki/Pac-Man

https://strategywiki.org/wiki/Pac-Man

Disponen de dos modos de comportamiento:

targets predefinidos para modo dispersión

targets predefinidos para modo dispersión

  • Dispersión: Se dirigen a un tile predefinido en una esquina diferente para cada uno de los fantasmas.
  • Persecución: Cambian su objetivo a un tile dependiendo de variables como la posición actual de pacman.

En modo persecución cada ghost implementa un mecanismo de selección de target:

  • Blinky (rojo): en modo persecución marca su objetivo en la posición de pacman.
  • Pinky (rosa): marca su objetivo en una posición 4 tiles por delante de pacman en la dirección que está siguiendo.
  • Clyde (naranja): Dependiendo de si la distancia hasta pacman es mayor a 8 tiles o menor se comportará como Blinky o bien se dirigirá a su objetivo predefinido.
  • Inky (azul): Su target se encontrará al doble de distancia que exista entre Blinky y Pacman, siguiendo la línea que determina sus posiciones.

Durante la partida se van sucediendo distintas oleadas de comportamiento en modo dispersión seguidas de otra en modo persecución. Además según se va avanzando de nivel de dificultad en el juego, los períodos de persecución son más largos.

Por ejemplo para el nivel 1:

  • dispersión durante 7 segundos, persecución durante 20 segundos
  • dispersión durante 7 segundos, persecución durante 20 segundos
  • dispersión durante 5 segundos, persecución durante 20 segundos
  • dispersión durante 5 segundos, persecución permanente

El juego es totalmente jugable y recomiendo probarlo.

Todo el código de este proyecto lo tengo disponible en github: https://github.com/davidpoza/dps-pacman

Y también tengo una versión jugable disponible en: http://pacman.davidinformatico.com

Requiere Chrome, Firefox o Edge y controles de teclado.