Si solo tiene una cuadrícula de píxeles, un "gran campo" en el que pacman y fantasma se pueden mover libremente, entonces la ruta más corta es fácil: una línea recta entre el fantasma y el pacman.
Pero el "camino más corto" invariablemente significa que estamos tratando de resolver un problema de teoría de grafos. (¡Estoy asumiendo el conocimiento de gráficos, algunas teorías de grafos, matrices adj, etc.!)
En el caso anterior, considere cada píxel como un nodo en un gráfico. Cada nodo está conectado a sus vecinos por un borde, y cada borde tiene el mismo "peso" (moverse al nodo "arriba" no es más lento que moverse al nodo "debajo").
Así que tienes esto: ("*" = nodo "-, /, \, |" = orilla)
*-*-*
|\|/|
*-*-* ... (etc)
|/|\|
*-*-*
Si Pacman está en el centro, se puede mover a cualquier otro nodo muy fácilmente.
Algo más cerca de la realidad podría ser la siguiente:
*-*-*
| | |
*-*-* ... (etc)
| | |
*-*-*
Ahora, pacman no puede moverse en diagonal.Para ir del centro a la parte inferior derecha, se requieren 2 "saltos" en lugar de uno.
Para continuar con la progresión:
*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*
Ahora, para ir de un nodo en el centro para un nodo en la parte superior, necesita 3 saltos. Sin embargo, para avanzar hacia la parte inferior solo se necesita 1 salto.
Sería fácil traducir cualquier configuración de tablero de juego en un gráfico. Cada "intersección" es un nodo. El camino entre dos intersecciones es un borde, y la longitud de ese camino es el peso de ese borde.
Introduzca A *. Al construir un gráfico (use una matriz de ajuste o una lista de nodos), puede usar el algoritmo A * para encontrar la ruta más corta. Otros algoritmos incluyen Dijkstra. ¡Y muchos otros! Pero primero necesitas enmarcar tu problema en términos de un gráfico, y luego jugar con cómo irías del nodo A (pacman) al nodo B (fantasma).
Espero que ayude!
Pacman hace mejor que el anterior algoritmo tal vez (especialmente el progreso del juego). A *, etc ... es un buen punto de partida ... No dije que fuera un buen punto final :-) – TofuBeer
En realidad, hace mucho tiempo que no jugaba al Pac-Man, así que no lo hago del todo recuerda cuán inteligentes se volvieron esos fantasmas. En realidad, no creo haber superado nunca el nivel 3 o 4. Oye, estaba en 3er grado;) – coobird
Bueno, podría ser debido al aumento de velocidad que pueden dirigirte ... o podría ser que añaden algo de aleatoriedad que reducen a medida que se elevan los niveles. – TofuBeer