Así que he estado jugando mucho pacman en mi celular últimamente y me pregunto cómo los fantasmas parecen funcionar independientemente el uno del otro. Estaba pensando en cómo habría sido programado.En Pacman, ¿los fantasmas eligen caminos independientes para encontrar pacman?
Una opción en la que pensé fueron los hilos. Los 4 fantasmas se ejecutan en sus propios hilos y de alguna manera encuentran la posición de pacman. Pero parece un poco demasiado tener cuatro hilos trabajando y la sincronización sería difícil. Además, google escribió pacman en Javascript, que no admite subprocesos, por lo que se puede hacer sin hilos y tiene que haber una manera más fácil.
Mi segundo pensamiento fueron los controladores de eventos. Simplemente conecto el evento 'directionChanged' que pacman disparará a 4 manejadores de eventos, uno para cada fantasma. Cada fantasma luego decide qué camino tomar para llegar a pacman. Esto creo que es más probable lo que está sucediendo. Pero puede ser lento si los controladores de eventos se ejecutan sincrónicamente, porque las rutas se deben calcular de forma secuencial y el cuarto fantasma tardará un tiempo en cambiar de dirección y esto podría crear un retraso visible (probablemente). Además, los fantasmas dispararían un evento ellos mismos cuando golpeen una pared y sus manejadores de eventos cambiarían la dirección de los fantasmas. Pero dada la frecuencia con la que pacman cambia de dirección y los cuatro fantasmas responden, los manejadores de eventos también parecen demasiado.
Digo que las ideas anteriores serían demasiado porque recuerdo que el juego fue escrito hace 30 años cuando el tiempo de la CPU y la memoria eran escasos, así que creo que tiene que haber una manera mucho más sencilla.
Además, parece que los fantasmas están siguiendo caminos diferentes incluso cuando pacman está quieto. ¿Todos los fantasmas utilizan algoritmos de búsqueda de ruta completamente diferentes o optimizados de forma diferente?
Estoy más interesado en descubrir cómo todos los fantasmas parecen funcionar por sí mismos de forma simultánea a los algoritmos de búsqueda de ruta que utilizan. ¿Pensamientos?
Aunque debe haber mucha más lógica internamente, creo que esta debería ser básicamente la idea que debe tener se han aplicado. Gracias. – desigeek
Excepto en el caso en que los fantasmas te busquen/huyan, en cuyo caso utilizarán tu ubicación para determinar la mejor opción de avenida (o elegir aleatoriamente una de las dos). Y para el registro, necesitan UN hilo para que se muevan independientemente de los eventos del usuario (si no te mueves, te darán) – Rudu
Necesitas algo de aleatoriedad en los movimientos del fantasma, de lo contrario, tarde o temprano todos los fantasmas se moverán juntos en un volumen, que hace que el juego sea relativamente fácil. Y, por supuesto, un fantasma no tiene que golpear una pared para cambiar de dirección, puede hacerlo en cualquier intersección. En el juego original de Pacman, los fantasmas pueden incluso revertirse sin previo aviso. –