Hvis du bare har et rutenett av piksler - en "big-feltet" som pacman og spøkelse kan bevege seg fritt - da den korteste veien er enkelt - en rett linje mellom gjenferdet og Pacman.
Men "korteste veien" alltid betyr at vi prøver å løse en graf-teori problem. (Jeg antar kunnskap om grafer, noen grafteori, adj. Matriser, etc!)
I tilfellet ovenfor, vurdere hver piksel til en node på et diagram. Hver node er koplet til sine naboer ved en kant, og hver kant har lik "vekt" (flytting til noden "ovenfor" er ikke tregere enn å flytte til noden "under").
Så du har dette: ( "*" = node, "-, /, \, |" = kant)
*-*-*
|\|/|
*-*-* ... (etc)
|/|\|
*-*-*
Hvis Pacman er i sentrum, kan den flytte til en annen node veldig enkelt.
Noe mer nærmere virkeligheten kan være dette:
*-*-*
| | |
*-*-* ... (etc)
| | |
*-*-*
Nå pacman kan ikke flytte diagonalt. Å gå fra sentrum til nederste høyre krever 2 "hopp" i stedet for en.
For å fortsette utviklingen:
*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*
Nå, for å gå fra en node i midten til en node på toppen, trenger du 3 hopp. Men for å bevege seg mot bunnen tar bare ett hopp.
Det ville være lett å oversette alle spill-bord oppsett i en graf. Hver "skjæringspunkt" er en node. Banen mellom to krysninger er en kant, og lengden av denne banen er vekten av den kanten.
Tast A *. Ved å bygge en graf (bruk en adjency matrise eller en liste over noder), kan du bruke A * algoritmen for å finne den korteste veien. Andre algoritmer inkluderer Dijkstras. Og mange andre! Men først må du ramme inn problemet i form av en graf, og deretter leke med hvordan du vil gå fra node A (pacman) til node B (spøkelse).
Håper det hjelper!