serbestçe hareket edebileceği pacman ve hayalet bir "büyük alan" - - Sadece bir piksel ızgarası varsa o zaman en kısa yol kolaydır - hayalet pacman arasında düz bir çizgi.
Ama "en kısa yol" kaçınılmaz bir grafik-teorisi sorunu çözmek için çalışıyoruz anlamına gelir. (Ben grafiklerin bilgi, bazı grafik teorisi, adj tahmin ediyorum. Matrisleri vs!)
Yukarıdaki durumda, bir grafik üzerinde bir düğüm için, her piksel düşünün. Her bir düğüm bir kenar komşularına bağlanmıştır ve her bir kenar ( "yukarı" düğüm hareket "altında" düğüme hareket daha yavaştır) eşit "ağırlık" yer alır.
Yani bu var: ( "*" = Düğüm, "-, /, \, |" = kenar)
*-*-*
|\|/|
*-*-* ... (etc)
|/|\|
*-*-*
Pacman merkezinde ise, çok kolay başka düğüme hareket edebilir.
gerçeğe daha yakın bir şey bu olabilir:
*-*-*
| | |
*-*-* ... (etc)
| | |
*-*-*
Şimdi, pacman çapraz hareket edemez. sağ alt merkezden gitmek için 2 "şerbetçiotu" yerine birini gerektirir.
ilerlemesini devam etmek için:
*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*
Şimdi, üst kısmında bir düğüme ortasında bir düğümden gitmek, sen 3 şerbetçiotu gerekir. alt sadece 1 hop alır doğru Bununla birlikte, hareket etmek.
Bir grafiğin içine herhangi bir oyun pansiyon kurulum çevirmek kolay olurdu. Her bir "kavşak" bir düğümdür. İki kesişimleri arasındaki yol bir kenar ve bu yol uzunluğu bu kenarı ağırlığıdır.
Gir*. bir grafik (bir adjency matrisi ya da bir düğüm listesi kullanın) oluşturulmasıyla, en kısa yolu bulmak için A * algoritma kullanabilir. Diğer algoritmalar Dijkstra en sayılabilir. Ve bircok digerleri! Ama önce sen B (hayalet) Düğüm düğüm A (pacman) dan gitmek istiyorum nasıl bir grafik ve ardından oyuncak açısından sorununuzu çerçeve gerekir.
Umarım yardımcı olur!