Wenn Sie nur ein Raster von Pixeln haben - ein „großes Feld“, auf dem Pacman und Geist können sich frei bewegen - dann ist der kürzeste Weg leicht - eine gerade Linie zwischen dem Geist und dem Pacman.
Aber „kürzester Weg“ immer bedeutet, dass wir versuchen, ein Graph-Theorie Problem zu lösen. (Ich gehe davon Kenntnis von Graphen, eine Graphentheorie, adj. Matrizen, usw.!)
Im obigen Fall betrachtet jedes Pixel ein Knoten in einem Graphen zu sein. Jeder Knoten ist mit seinen Nachbarn durch eine Kante, und jede Kante hat gleiches „Gewicht“ (Bewegen mit dem Knoten auf „oben“ ist nicht langsamer als mit dem Knoten bewegend „unten“).
Sie haben also diese: ( "*" = Knoten "-, /, \, |" = Flanke)
*-*-*
|\|/|
*-*-* ... (etc)
|/|\|
*-*-*
Wenn Pacman in der Mitte ist, kann es sehr leicht zu jedem anderen Knoten.
Etwas mehr näher an der Realität sein könnte dies:
*-*-*
| | |
*-*-* ... (etc)
| | |
*-*-*
Nun Pacman kann nicht diagonal bewegen. Um von der Mitte nach rechts unten erfordert 2 „Hopfen“ und nicht ein.
Um weiterhin den Fortschritt:
*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*
Nun, von einem Knoten in der Mitte zu einem Knoten an der Spitze zu gehen, müssen Sie 3 Hopfen. Allerdings bewegen in Richtung nur der Boden 1 Hop nimmt.
Es wäre leicht, jeden Spiel-Board-Setup in ein Diagramm zu übersetzen. Jede „Kreuzung“ ist ein Knoten. Der Pfad zwischen zwei Kreuzungspunkten ist eine Kante, und die Länge dieses Weges ist das Gewicht dieser Kante.
Geben Sie ein*. Durch den Aufbau eines Graphen (verwenden Sie eine adjency Matrix oder eine Liste von Knoten) können Sie den A * -Algorithmus verwenden, den kürzesten Weg zu finden. Andere Algorithmen sind Dijkstra. Und viele andere! Aber zuerst müssen Sie Ihr Problem in Bezug auf ein Diagramm zu gestalten, und dann Spielzeug mit, wie Sie vom Knoten A gehen würden (Pacman) B (Geist) zum Knoten.
Ich hoffe, das hilft!