Cesta najít v Javě 2d hra?

hlasů
6

V podstatě Jeho pacman klon hry jsem pracoval. Mám třídu nepřítele a 4 instance této třídy vytvořené které všechny představují 4 duchy hry.

Všichni duchové nastartovat v nahodilých oblastech obrazovky a pak musí pracovat svou cestu směrem k pacman charakteru. Jako hráč ovládá pacman, pohybující se kolem, měli by jej sledovat a brát na nejbližší možnou cestu k němu.

Neexistuje žádný bludiště / překážky (zatím), takže celá mapa (400x400 pixelů) je otevřený důvod k nim.

Pro hráče a každý duch, mohu získat X, Y, šířka obrazu a atributy výšky. Také už mám algoritmus detekce kolizí, takže nemuseli obávat, že právě o duchové nacházejí cestu k pacman.

Položena 08/03/2009 v 06:14
zdroj uživatelem
V jiných jazycích...                            


7 odpovědí

hlasů
0

Dalo by se začít při pohledu na A * (hvězda)

A tady je stránka , která obsahuje odkazy na jiné algoritmy nalezení trasy.

[editovat] gah ... mozek je příliš pomalý ... zapomněl na této knize, je C nebo C ++ (zapomněl jsem které se jedná), ale stále můžete získat koncepty pro Javu. To nemusí být nejjednodušší pro vás číst, ale není špatný celkově. AI pro Game Developers David M. Bourg, Glenn Seemann .

Odpovězeno 08/03/2009 v 06:17
zdroj uživatelem

hlasů
12

Pro dobrou Pathfinding algoritmus, pomocí A * by asi bylo dobré, ale pro jednoduché hry, které nevyžaduje složité, efektivní, ani efektivní vyhledávání cesty, prostě mít postavy pohybují směrem k cíli tím, že najde mimo směr cíl by měla být dostatečná.

Například rozhodnutí, aby se znak krok, v pseudokódu:

if (target is to the left of me):
    move(left);
else
    move(right);

if (target is above me):
    move(up);
else
    move(down);

Ano, charakter nebude dělat co nejefektivnější pohyb, ale to dostane blíž a blíž k cíli na každé iteraci herní smyčky.

To je také můj odhad, že arkádová hra od počátku 80. let pravděpodobně nebudou pomocí sofistikovaných algoritmů Pathfinding.

Odpovězeno 08/03/2009 v 06:25
zdroj uživatelem

hlasů
6

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á!

Odpovězeno 08/03/2009 v 06:55
zdroj uživatelem

hlasů
0

Myslím, že jít nejkratší cestou algoritmus při každém pohybu ze strany pacman. Velmi dobrá realizace je Dijkstrův algoritmus .

Jen shrnout: Vizualizace bludiště jako graf s vrcholů a hran. Každá hrana má čekání (v případě, že všechny hrany mají stejnou váhu). Algoritmus nalezne nejkratší cestu ze zdrojového vertice zaměřit vertice posunutím o jeden krok dolů každá okamžitá dosažitelné hrany. Pak na další vertice udělat to samé a dál dělat, dokud se dostanete k cíli. První cesta dosáhla je nejkratší cesta. Tam může být mnoho optimalizace udělat, aby se tento algoritmus k urychlení věci, jako je zohlednění kde pacman byl ve své předchozí pozici a ve kterém směru to se pohybovalo, takže můžete získat nějaké heiristics v algoritmu. Navrhoval bych najít nejkratší cestu z každého Ghost pacman o každém pohybu a pohybovat ducha v tomto směru. Nakonec se vzdálenost sníží a budete moci chytit pacman.

Další heuristické, které mohou být použity, aby zjistila všechny okamžité hrany dosažitelné z pacman a snaží se pokrýt co nejvíce z těchto vrcholů je to možné, duchy. Takže místo toho, nastavení pacman jako cílový vertice jsme si stanovili vrcholy immediatetly dosažitelné pacman jako cíl, výsledkem bude, že dostupné duchové se bude snažit zakrýt themajor únikové cesty Pacmana a chytit ho.

Odpovězeno 08/03/2009 v 08:26
zdroj uživatelem

hlasů
3

Už je to hodně dávno, ale z paměti duchové v Pac-Man neudělal moc v cestě hledání cest. Udělají poměrně standardní randomizované bludiště traversal, dokud „tečkovaný“ Ty, který zahrnoval najít volný cestu podél osy chodby směrem k sobě, a pak by se pohybovat přímo k vám, dokud zmizela ze svého zorného pole, načež bude pokračovat náhodný vzorek. Na vyšších úrovních Pac-Man by opustil neviditelné stopy za sebou na chvíli, že duchové by „vůni“ a někdy následovat.

Když Pac-Man dostal výkon nahoru, jediný rozdíl v algoritmu je, že když vás všiml, by duchové tě uprchnout místo směrem k vám.

Takže pro autentický zážitek, pravděpodobně nebudete potřebovat velmi sofistikovaný algoritmus Pathfinding vůbec. Chcete-li být fantazie, samozřejmě, můžete implementovat A *.

Odpovězeno 10/03/2009 v 09:11
zdroj uživatelem

hlasů
2

Chůzi přímo k vašim nepřátelům je začátek, ale když přidáte bludiště budete chtít přidat trochu inteligentnější Pathfinding takže vaše duchové nemají uvíznou v zatáčkách či slepých uliček.

Následující návod je skvělý lehký průvodce, jak začít s A *, přičemž stahovatelné příklady.

Cesta Nalezení na dlaždice založené Maps

Odpovězeno 12/03/2009 v 13:42
zdroj uživatelem

hlasů
1

V Pacman všechny duch měl jiný chase algoritmus

  • Blinky -> Chases. Obvykle vzít nejkratší cestou k tobě, a má tendenci následovat.
  • Pinky -> léčky. Má tendenci se více oklikou na Pac-man. Smrtící. (Pinky a Blinky mají tendenci dělat jinou volbu při výběru směru, často umísťování do klecí hráče v rohu)
  • Inky -> Freak. Tenhle frajer působí podivně. Ten se pohybuje kolem tabule docela náhodně, ale občas honí, když se dostane blíž.
  • Clyde -> Idiot. Pohybuje v náhodném pořadí. Není velkou hrozbu.

Duchové mají zajímavý vzor naprogramované v jejich pohybech: příležitostně, budou současně upustili jejich snahu o Pac-Man a vrátit se do svých rohů bludiště, zadáním „Režim rozptylu“.

tam je úplný popis algo v dokumentaci pacman

pozdravy

Guillaume

Odpovězeno 10/04/2009 v 15:59
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more