Dacă aveți doar o grilă de pixeli - un „câmp mare“ pe care PacMan și fantoma să se poată deplasa liber - atunci calea cea mai scurtă este ușor - o linie dreaptă între fantoma și Pacman.
Dar „calea cea mai scurtă“ înseamnă invariabil încercăm să rezolve o problemă grafic-teorie. (Sunt presupunând cunoștințe de grafice, unele teoria grafurilor, adj. Matrici, etc!)
În cazul de mai sus, ia în considerare fiecare pixel pentru a fi un nod pe un grafic. Fiecare nod este conectat cu vecinii săi de o margine, iar fiecare muchie are egal „greutate“ (se deplasează la nodul pe „sus“ nu este mai lent decât trecerea la nodul „de mai jos“).
Deci, aveți acest lucru: ( "*" = nod, "-, /, \, |" = margine)
*-*-*
|\|/|
*-*-* ... (etc)
|/|\|
*-*-*
Dacă Pacman este în centru, se poate muta în orice alt nod foarte ușor.
Ceva mai aproape de realitate ar putea fi aceasta:
*-*-*
| | |
*-*-* ... (etc)
| | |
*-*-*
Acum, Pacman nu se pot deplasa pe diagonală. Pentru a trece de la centru spre dreapta jos necesită 2 „hamei“, mai degrabă decât unul.
Pentru a continua progresia:
*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*
Acum, pentru a trece de la un nod în mijlocul unui nod în partea de sus, aveți nevoie de 3 hamei. Cu toate acestea, să se deplaseze spre partea de jos durează doar 1 hop.
Ar fi ușor să traducă orice configurare joc de bord într-un grafic. Fiecare „intersecție“ este un nod. Calea dintre două intersecții este o margine, iar lungimea această cale este greutatea acelei margini.
Introduceți o *. Prin construirea unui grafic (utilizați o matrice adjency sau o listă de noduri), puteți utiliza A * algoritm pentru a găsi calea cea mai scurtă. Alți algoritmi includ lui Dijkstra. Și multe altele! Dar, mai întâi, trebuie să încadrați problema în ceea ce privește un grafic, și apoi jucărie cu modul în care ai merge de la nodul A (PacMan) la nodul B (fantomă).
Sper că vă ajută!