Ez a modul tartalmazza a legrövidebb útvonal megtalálásához szükséges függvényeket.
Részletek...
|
bool ** | legrovidebb (Szintek meretek, int *idealis) |
| Megkeresi a legrövidebb útat az aktív szinten a rajt és a cél között (a fájl többi függvényének segítségével). Részletek...
|
|
static void | graf_epit (Csucs *cs, Csucs ***vizsgalt, Szintek meretek, int *meret) |
| Rekurzív függvény, ami felépíti a gráf adatstruktúrát. Részletek...
|
|
static void | graf_kilapit (Csucs *cs, Csucs ***lista, int *n, bool **vizsgalt, int hossz) |
| Rekurzív függvény, ami csinál egy egydimneziós tömböt a gráfhoz, aminek minden eleme egy csúcsra mutat. Részletek...
|
|
static void | dijkstra (Csucs **lista, int meret) |
| Függvény, ami megvalósítja a Dijkstra algoritmust a rajt és cél között. Részletek...
|
|
static void | laposgraf_szabadit (Csucs ***lista, int meret) |
| Felszabadítja a gráf minden csúcsát, majd a tömböt amiben tároltuk őket. Részletek...
|
|
static bool | utca_teszt (Pozicio p, Szintek meretek) |
| Függvény, ami megvizsálja hogy az adott koordináta a pályán belül van-e és a mező utca-e. Részletek...
|
|
static int | utak_szama (Pozicio p, Szintek meretek) |
| Függvény, ami meghatározza, hogy az adott koordináták által meghatározott mezőnek hány szomszédja utca. Részletek...
|
|
static void | kovi_utca (Pozicio *regi, Pozicio *uj, Szintek meretek) |
| Ha egy mezőnek két szomszédja utca, akkor ez a függvény meghatározza, hogy melyik irányba kell tovább menni, hogy az utcán maradjunk. Részletek...
|
|
static Irany | irany_hataroz (Pozicio p) |
| Függvény, ami meghatározza, hogy az adott x-y elmozdulással melyik irányba haladunk. Részletek...
|
|
static void | csucs_init (Csucs *cs, Pozicio p, Szintek meretek) |
| Kezdeti állapotba állít egy csúcsot. Részletek...
|
|
static bool | van_nem_latogatott (Csucs **lista, int meret) |
| Függvény, ami meghatározza, hogy van-e még meg nem látogatott csúcs a gráfban. Részletek...
|
|
static int | legkozelebbi (Csucs **lista, int meret) |
| Függvény, ami meghatározza azt a csúcsot, ami még nem volt vizsgálva, és a távolsága a legkisebb a kezdő csúcstól. Részletek...
|
|
static bool ** | matrix_letrehoz (Csucs **lista, int meret, Szintek meretek, int *idealis) |
| Létrehoz egy dinamikusan foglalt kétdimenziós tömböt, aminek mérete megegyezik a pálya méretével, és mezői pontosan akkor igazak, ha a gráfban az ideális útvonal a rajt és a cél között átmegy az adott mezőn. Részletek...
|
|
Ez a modul tartalmazza a legrövidebb útvonal megtalálásához szükséges függvényeket.
Többek között olyan függvények, amik gráfot építenek, alkalmazzák a Dijkstra-algoritmust, és az eredményt egy kétdimenziós tömbbé alakítják, hogy könnyebben lehessen a képernyőre nyomtatni. A főbb függvények algoritmusairól az első fejezetben részletesen is írok.
Kezdeti állapotba állít egy csúcsot.
Pointereit lenullázza, megvizsgálja hogy a rajt vagy esetleg a cél-e. Ha a csúcs nem a rajt, akkor a távolságot egy olyan nagy értékre állítja, amilyen távolságok a gráfban biztos nem lesznek. (A Dijkstra-algoritmus szerint végtelenre kellene állítani, de ilyen lehetőség nincs C-ben)
- Paraméterek
-
cs | A beállítani kíívánt csúcs pointere |
p | A csúcs x és y koordinátája Pozíció struktúrában |
meretek | Betöltött szintek méretei és tömbje |
static void graf_epit |
( |
Csucs * |
cs, |
|
|
Csucs *** |
vizsgalt, |
|
|
Szintek |
meretek, |
|
|
int * |
meret |
|
) |
| |
|
static |
Rekurzív függvény, ami felépíti a gráf adatstruktúrát.
Az elágazások lesznek a gráf csúcsai, az őket összekötő utcák pedig az élek. Egy futása egy adott csúcsot köt össze szomszédjaival, majd mindegyik szomszédjára meghívja magát. Közben szémolja, hogy összesen hány csúcsot talál.
- Paraméterek
-
cs | Annak a csúcsnak a pointere, amelyiket össze szeretnénk kötni a szomszédaival. |
vizsgalt | Kétdimenziós tömb (méretei megegyeznek a szint méreteivel), aminek minden mezője NULL, ha ahhoz a mezőhöz még nem csináltunk csúcsot. Amikor egy új csúcsot készítünk, ebben a tömbben a megfelelő mezőt a csúcs pointerére állítjuk. |
meretek | Betöltött szintek méretei és tömbje Az irányok sorrendje megegyezik enum Irany-nyal. |
meret | Ebbe a változóba menti a csúcsok számát. |
Függvény, ami meghatározza, hogy az adott koordináták által meghatározott mezőnek hány szomszédja utca.
(Akkor fogunk egy mezőt csúcsnak tekinteni, ha legalább 3 utca szomszédja van). Mivel a rajtot és a célt is csúcsnak szeretnénk tekinteni (hiszen közöttük keressük a legrövidebb utat), náluk automatikusan 3-at fog visszaadni a függvény.
- Paraméterek
-
p | A pont x és y koordinátja Pozíció struktúrában |
meretek | Betöltött szintek méretei és tömbje |
- Visszatérési érték
- Szomszédos utca mezők száma