Si vous avez juste une grille de pixels - un « grand champ » sur lequel Pacman et fantôme peut se déplacer librement - alors le chemin le plus court est facile - une ligne droite entre le fantôme et le Pacman.
Mais « chemin le plus court » signifie invariablement que nous essayons de résoudre un problème théorie des graphes. (Je suppose la connaissance des graphiques, une théorie des graphes, adj. Matrices, etc!)
Dans le cas ci-dessus, considérer chaque pixel à un nœud sur un graphique. Chaque noeud est relié à ses voisins par un bord, et chaque bord présente égal « poids » (déplacement vers le noeud sur « au-dessus » est pas plus lent que le déplacement vers le noeud « en dessous »).
Vous avez donc ceci: ( "*" = nœud, "-, /, \, |" = bord)
*-*-*
|\|/|
*-*-* ... (etc)
|/|\|
*-*-*
Si Pacman est au centre, il peut se déplacer à un autre nœud très facilement.
peut-être quelque chose de plus proche de la réalité ceci:
*-*-*
| | |
*-*-* ... (etc)
| | |
*-*-*
Maintenant, Pacman ne peut pas se déplacer en diagonale. Pour aller du centre vers le coin inférieur droit nécessite 2 « houblon » au lieu d'un.
Pour continuer la progression:
*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*
Maintenant, pour passer d'un noeud au milieu d'un nœud au sommet, vous avez besoin 3 sauts. Cependant, pour se diriger vers le seul fond prend 1 hop.
Il serait facile de traduire une configuration plateau de jeu dans un graphique. Chaque « intersection » est un nœud. Le chemin entre deux intersections est un bord, et la longueur de ce chemin est le poids de ce bord.
Entrez A *. En construisant un graphique (utiliser une matrice adjency ou une liste de nœuds), vous pouvez utiliser l'algorithme A * pour trouver le chemin le plus court. D'autres algorithmes comprennent Dijkstra. Et plein d'autres! Mais d'abord vous devez encadrer votre problème en termes d'un graphique, puis jouer avec la façon dont vous iriez du noeud A (Pacman) au noeud B (fantôme).
J'espère que cela pourra aider!