Se v'è solo una griglia di pixel - un "grande campo" su cui pacman e fantasma in grado di muoversi liberamente - poi il percorso più breve è facile - una linea retta tra il fantasma e il pacman.
Ma "percorso più breve" significa invariabilmente che stiamo cercando di risolvere un problema grafico-teoria. (Sto assumendo la conoscenza di grafici, alcuni teoria dei grafi, agg. Matrici, ecc!)
Nel caso di cui sopra, si consideri ogni pixel ad essere un nodo su un grafico. Ogni nodo è collegato ai suoi vicini da un bordo, e ciascun bordo ha uguali "peso" (passare al nodo "sopra" non è più lento di muoversi verso il nodo "sotto").
In modo da avere questo: ( "*" = node "-, /, \, |" = bordo)
*-*-*
|\|/|
*-*-* ... (etc)
|/|\|
*-*-*
Se Pacman è nel centro, si può passare a qualsiasi altro nodo molto facilmente.
Qualcosa di più vicino alla realtà potrebbe essere questo:
*-*-*
| | |
*-*-* ... (etc)
| | |
*-*-*
Ora, pacman non può muoversi in diagonale. Per andare dal centro verso il basso a destra richiede 2 "hop" piuttosto che uno.
Per continuare la progressione:
*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*
Ora, per passare da un nodo in mezzo ad un nodo in alto, avete bisogno di 3 luppolo. Tuttavia, a muoversi verso il fondo richiede solo 1 hop.
Sarebbe facile da tradurre qualsiasi preparazione del gioco di bordo in un grafico. Ogni "intersezione" è un nodo. Il percorso tra due incroci è un vantaggio, e la lunghezza del percorso che è il peso di quel bordo.
Entrare in un*. Costruendo un grafico (utilizzare una matrice adjency o un elenco di nodi), è possibile utilizzare l'algoritmo A * per trovare il percorso più breve. Altri algoritmi includono Dijkstra di. E molti altri! Ma prima è necessario per inquadrare il problema in termini di un grafico, e poi giocare con il modo devi andare dal nodo A (pacman) al nodo B (fantasma).
Spero possa aiutare!