Pokud jste právě mají mřížku pixelů - k „velké pole“, na kterých pacman a duch může volně pohybovat - pak nejkratší cesta je jednoduchá - přímka mezi duchem a pacman.
Ale „nejkratší cesta“ vždy znamená, že se snažíme vyřešit problém graf-teorie. (Já jsem za předpokladu znalosti grafů, některé teorie grafů, ADJ. Matice, atd!)
Ve výše uvedeném případě, zvážit každý pixel být uzel v grafu. Každý uzel je připojen k jeho sousedů hranou, a každá hrana má stejnou „hmotnost“ (pohybující se na uzlu, „nad“ není pomalejší než pohybující se na uzlu „dole“).
Takže máte toto: ( "*" = node "-, /, \, |" = hrana)
*-*-*
|\|/|
*-*-* ... (etc)
|/|\|
*-*-*
Pokud Pacman se nachází v centru, může se pohybovat do jiného uzlu velmi snadno.
Něco blíže k realitě by mohlo být následující:
*-*-*
| | |
*-*-* ... (etc)
| | |
*-*-*
Nyní, pacman se nemůže pohybovat diagonálně. Chcete-li přejít od středu k pravé dolní vyžaduje 2 „chmel“ spíše než jeden.
Chcete-li pokračovat v postupu:
*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*
Nyní, přejít z uzlu ve středu do uzlu nahoře, budete potřebovat 3 chmele. Nicméně, k posunu směrem k dolní trvá jen 1 hop.
Bylo by snadné převést jakékoliv nastavení herní desky do grafu. Každý „průnik“ je uzel. Cesta mezi dvěma průsečíky je okraj, a délka této cesty je hmotnost této hrany.
Vložte*. Tím, že sestrojí graf (použijte k adjency matici nebo seznam uzlů), můžete použít A * algoritmus najít nejkratší cestu. Ostatní algoritmy patří Dijkstra je. A mnoho dalších! Ale nejprve je třeba zarámovat váš problém, pokud jde o grafu, a pak hračku s tím, jak byste jít z uzlu A (pacman) do uzlu B (duch).
Naděje, která pomáhá!