Útvonal találni egy Java 2D-s játék?

szavazat
6

Lényegében annak a pacman klón játék dolgozom. Van egy ellenséges osztály, és 4 esetben ennek az osztálynak létre, amelyek képviselnek 4 szellemek a játék.

Minden kísértetek induló véletlenszerű területeken a képernyőn, majd meg kell dolgozni az utat a pacman karaktert. Ahogy a játékos vezérli a pacman, mozgó körül, meg kell követni, és megteszi a lehető legközelebbi módon feléje.

Nincs labirintus / akadályok (még), így a teljes térképet (400x400 pixel) nyitott föld nekik.

A játékos és az egyes Ghost, én is letölteni az X, Y, kép szélesség és magasság attribútumokat. Továbbá, már van egy ütközés algoritmus, ezért nem aggódik, hogy csak a szellemek saját útjukat a pacman.

A kérdést 08/03/2009 06:14
a forrás felhasználó
Más nyelveken...                            


7 válasz

szavazat
0

Lehet kezdeni nézi A * (A csillag)

És itt van egy oldal , amely hivatkozásokat más utat találni algoritmusok.

[szerkesztés] gah ... agy túl lassú ... elfelejtettem ezt a könyvet, hogy C vagy C ++ (elfelejtettem, melyik), de akkor is kap a fogalmak Java. Lehet, hogy nem a legkönnyebb olvasni, de nem rossz összességében. AI a Game Developers David M. Bourg, Glenn Seemann .

Válaszolt 08/03/2009 06:17
a forrás felhasználó

szavazat
12

A jó útkereső algoritmus alkalmazásával A * valószínűleg egy jó ötlet, de egy egyszerű játék, amely nem igényel bonyolult, hatékony, se nem hatékony utat keres, csak miután a karakterek felé célpont kideríteni az irányt a cél elegendőnek kell lennie.

Például a döntést, hogy a karakter mozog, pszeudokód:

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

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

Igen, a karakter nem megy, hogy a leghatékonyabb mozgás, de ez egyre közelebb és közelebb a cél minden iterációban a játék hurok.

Ez is a gyanúm, hogy egy arcade játék, a korai 80-as valószínűleg nem a kifinomult útkereső algoritmus.

Válaszolt 08/03/2009 06:25
a forrás felhasználó

szavazat
6

Ha csak egy rács képpont - egy „nagy mező”, amelyre pacman és szellem is szabadon mozoghatnak -, akkor a legrövidebb út egyszerű - egy egyenes vonal a szellem és a pacman.

De a „legrövidebb út” mindig azt próbáljuk megoldani egy gráf-elmélet probléma. (Feltételezzük, hogy a tudás a grafikonok, néhány gráfelmélet, mn. Mátrixok, stb!)

A fenti esetben, úgy minden pixel, hogy egy csomópont egy grafikon. Minden egyes csomópont csatlakozik a szomszédai egy él, és mindegyik széle egyenlő „súlya” (mozog a csomópontot a „fent” nem lassabb, mint mozog a csomóponthoz „lent”).

Így van ez: ( "*" = node "-, /, \, |" = él)

*-*-*
|\|/|
*-*-*  ... (etc)
|/|\|
*-*-* 

Ha Pacman központjában, mozoghat bármely más csomóponttal nagyon könnyen.

Valami több, a valósághoz közelebb lehet a következő:

*-*-*
| | |
*-*-*  ... (etc)
| | |
*-*-* 

Most pacman nem tud mozogni átlósan. Ahhoz, hogy menjen a központtól a jobb alsó igényel 2 „komló” helyett egy.

Ahhoz, hogy folytassa a progresszió:

*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*

Most, hogy megy egy csomópontot a közepén, hogy egy csomópont a tetején, meg kell 3 komló. Ahhoz azonban, hogy mozog a fenék felé csak 1 hop.

Nem lenne könnyű lefordítani minden játék-board a telepítést egy grafikonon. Minden „kereszteződés” egy csomópontot. A út két metszéspont egy él, és a hossza, hogy útvonal a súlyát, hogy a szélén.

Írj be egy*. Alapján szerkesztett diagram (használjon adjency mátrix vagy lista csomópontok), akkor az A * algoritmus, hogy megtalálják a legrövidebb utat. Más algoritmusok Dijkstra. És sokan mások! De először meg kell keret a probléma szempontjából grafikon, majd Játék hogyan kívánja megy csomópont (pacman) a B csomópont (szellem).

Remélem segít!

Válaszolt 08/03/2009 06:55
a forrás felhasználó

szavazat
0

Azt hiszem, megy a legrövidebb út algoritmust minden lépést tett pacman. Egy nagyon jó végrehajtás Dijkstra-algoritmus .

Csak összefoglalni: Képzeld el a labirintus, mint egy gráfot, melynek csúcsai és élei. Minden vég egy várakozás (az Ön esetében minden az élek azonos súly). Az algoritmus megkeresi a legrövidebb út a forrástól a cél vertice vertice mozgatásával egy lépéssel le minden egyes közvetlen megközelíthető szélét. Aztán a következő vertice akkor nem ugyanaz, és a rosszat, amíg a kap a cél. Az első pálya elérte a legrövidebb utat. Nem lehet sok optimalizáció tenni ezt az algoritmust, hogy gyorsítsák fel a dolgokat, mint a figyelembevételével, ha a pacman volt korábbi álláspontját, és milyen irányba mozdult el, hogy lehet kapni néhány heiristics az algoritmus. Azt javasoljuk, megtalálni a legrövidebb utat minden szellem pacman minden mozgását, és mozgassa a szellem ebben az irányban. Végül a távolságot csökkenteni fogja, és akkor képes lesz arra, hogy utolérjék pacman.

Tovább heurisztikus, hogy lehet használni, hogy megtalálja az összes azonnali élek megközelíthető pacman és próbálja fedezni, mint sok ilyen csúcsok a lehető szellemek. Tehát ahelyett, hogy beállítása pacman, mint a cél vertice mi meg a csúcsokat immediatetly megközelíthető pacman, mint cél, az eredmény az lesz, hogy a rendelkezésre álló szellemek megpróbálja eltussolni themajor menekülési útvonalakat pacman elfogni.

Válaszolt 08/03/2009 08:26
a forrás felhasználó

szavazat
3

Ez egy nagyon hosszú idő, de a memóriából a kísértetek Pac-Man nem sokat, ahogy az útkereső. Úgy tenne meglehetősen szabványos randomizált labirintus bejárása, amíg „foltos” te, amely az érintett megállapító akadálytalan utat tengelye mentén egy folyosó felé, és akkor is mozog közvetlenül maga felé, amíg el nem tűnt el látómezejében, mire azok öltene véletlenszerű mintát. A magasabb szintű Pac-Man hagyná láthatatlan nyomvonalak mögötte egy darabig, hogy a szellemek is „szaga”, és néha követni.

Amikor a Pac-Man kapott egy bekapcsolás, az egyetlen különbség az algoritmus, hogy amikor észrevette te, a szellemek lenne elmenekülni, ahelyett, hogy meg felé.

Tehát, egy autentikus élményt, akkor valószínűleg nem kell nagyon kifinomult útkereső algoritmus egyáltalán. Ha azt szeretnénk, hogy divatos, persze, akkor végre A *.

Válaszolt 10/03/2009 09:11
a forrás felhasználó

szavazat
2

Séta közvetlenül felé az ellenséget, csak a kezdet, de ha hozzá labirintus akkor szeretnénk hozzáadni egy kicsit okosabb útkereső így a szellemek ne ragadjon a kanyarokban, zsákutcák.

A következő bemutató remek könnyű útmutató elkezdeni az A *, a letölthető példákat.

Path megtalálása a cserép alapú Maps

Válaszolt 12/03/2009 13:42
a forrás felhasználó

szavazat
1

A Pacman minden a szellem más volt kergeti algoritmus

  • Blinky -> Üldözés. Általában a legrövidebb úton az Ön számára, és igyekszik követni.
  • Pinky -> Ambushes. Hajlamos arra, hogy egy nagyobb kerülő úton a Pac-Man. Halálos. (Pinky és Blinky inkább, hogy más választás, amikor kiválasztják egy irányba, gyakran ketrecbe a játékos egy sarokban)
  • Tintás -> Freak. Ez a csávó jár furcsán. Úgy mozog a fórumon meglehetősen véletlenszerűen, de néha kerget, amikor megkapja szoros.
  • Clyde -> Idiot. Mozgatja véletlenszerűen. Nem nagy veszélyt.

A szellemek van egy érdekes mintát beprogramozott mozgásuk: alkalmanként, akkor egyszerre hagyjon a törekvés Pac-Man és visszatérnek saját sarkából a labirintus, beírja a „szórás üzemmód”.

van egy teljes leírását algo meg a pacman dosszié

Üdvözlettel

Guillaume

Válaszolt 10/04/2009 15:59
a forrás felhasználó

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