Jeśli po prostu mieć siatkę pikseli - to „wielki” pole, na którym Pacman i duch może poruszać się swobodnie - to najkrótsza droga jest prosta - linia prosta pomiędzy duchem a Pacman.
Ale „najkrótsza droga” oznacza zawsze staramy się rozwiązać problem wykres teoria. (Zakładam, że znajomość teorii grafów, jakiś wykres, przym. Matryc itp!)
W powyższym przypadku, należy rozważyć każdy piksel być węzeł na wykresie. Każdy węzeł jest połączony z sąsiadami krawędzi, a każda krawędź jest równe „masy”, (ruchomy do węzła, „powyżej” nie jest mniejsza, niż ruchomy do węzła „poniżej”).
Więc masz to: ( "*" = node "-, /, \, |" = krawędź)
*-*-*
|\|/|
*-*-* ... (etc)
|/|\|
*-*-*
Jeśli Pacman jest w centrum, można go przenieść do innego węzła bardzo łatwo.
Coś bardziej bliższe rzeczywistości może być to:
*-*-*
| | |
*-*-* ... (etc)
| | |
*-*-*
Teraz pacman nie może poruszać się po przekątnej. Aby przejść od środka do prawej dolnej wymaga 2 „chmielu”, zamiast jednego.
Aby kontynuować postęp:
*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*
Teraz, aby przejść od węzła w środku do węzła na górze, trzeba 3 chmielu. Jednak, aby poruszać się w kierunku dna trwa tylko 1 hopu.
Łatwo byłoby przetłumaczyć dowolną konfigurację gra wyżywienie w postaci wykresu. Każdy „skrzyżowanie” jest węzłem. Ścieżka między dwoma skrzyżowaniami jest krawędzią, a długość tej ścieżki jest masa tej krawędzi.
Wprowadź a*. Konstruując wykres (użyj matrycę adjency lub listę węzłów), można użyć algorytm A *, aby znaleźć najkrótszą drogę. Inne algorytmy to Dijkstry. I wiele innych! Ale najpierw trzeba oprawić swój problem z punktu widzenia wykresu, a następnie bawić się jak chcesz iść z węzła A (pacman) do węzła B (ducha).
Nadzieję, że pomoże!