Útvonalválaszt-O
utvonalkereso.h
Ugrás a fájl dokumentációjához.
1 #ifndef NHF_UTVONALKERESO_H
2 #define NHF_UTVONALKERESO_H
3 
4 #include <stdbool.h>
5 #include "szintek.h"
6 
7 typedef struct Csucs Csucs;
8 
12 typedef struct {
13  int suly;
15 } El;
16 
20 struct Csucs{
21  int x;
22  int y;
23  int tavolsag;
26  bool vizsgalt;
27  int elozo;
31  El elek[4];
32  bool cel;
33  bool rajt;
34 };
35 
39 typedef enum {
40  fel = 0,
41  jobb = 1,
42  le = 2,
43  bal = 3,
44  egyikse = 4
50 bool **legrovidebb(Szintek meretek, int *idealis);
51 
52 static void graf_epit(Csucs* uj, Csucs ***vizsgalt, Szintek meretek, int *meret);
53 static void graf_kilapit(Csucs *cs, Csucs ***lista, int *n, bool **vizsgalt, int hossz);
54 static void dijkstra(Csucs **lista, int meret);
55 static void laposgraf_szabadit(Csucs ***lista, int meret);
56 
57 static bool utca_teszt(Pozicio p, Szintek meretek);
58 static int utak_szama(Pozicio p, Szintek meretek);
59 static void kovi_utca(Pozicio *regi, Pozicio *uj, Szintek meretek);
60 static Irany irany_hataroz(Pozicio p);
61 static void csucs_init(Csucs *cs, Pozicio p, Szintek meretek);
62 
63 static bool van_nem_latogatott(Csucs **lista, int meret);
64 static int legkozelebbi(Csucs **lista, int meret);
65 static bool **matrix_letrehoz(Csucs **lista, int meret, Szintek meretek, int *idealis);
66 
70 #endif
matrix_letrehoz
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,...
Definition: utvonalkereso.c:324
legkozelebbi
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 ke...
Definition: utvonalkereso.c:303
Csucs::elozo
int elozo
Az elek[elozo] adja meg azt az élt, amivel eljuthatunk az előző csúcshoz, ha a legrövidebb úton akaru...
Definition: utvonalkereso.h:27
El::suly
int suly
Az él súlya, azaz a két csúcs távolsága (mezőkben)
Definition: utvonalkereso.h:13
csucs_init
static void csucs_init(Csucs *cs, Pozicio p, Szintek meretek)
Kezdeti állapotba állít egy csúcsot.
Definition: utvonalkereso.c:269
legrovidebb
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ít...
Definition: utvonalkereso.c:24
graf_epit
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.
Definition: utvonalkereso.c:64
kovi_utca
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...
Definition: utvonalkereso.c:221
Pozicio
Egy jelenlegi pozíció a cellák mátrixában.
Definition: szintek.h:18
bal
@ bal
Definition: utvonalkereso.h:43
utca_teszt
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.
Definition: utvonalkereso.c:185
szintek.h
Csucs
Egy csúcsot reprezentáló struktúra.
Definition: utvonalkereso.h:20
Csucs::vizsgalt
bool vizsgalt
Vizsgáltuk-e már a csúcsot a Dijkstra-algoritmusban?
Definition: utvonalkereso.h:26
fel
@ fel
Definition: utvonalkereso.h:40
laposgraf_szabadit
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.
Definition: utvonalkereso.c:172
Csucs::x
int x
A csúcs x koordinátája.
Definition: utvonalkereso.h:21
Szintek
A szintek tömbjét és méreteit tartalmazó struktúra.
Definition: szintek.h:32
Csucs::y
int y
A csúcs y koordinátája.
Definition: utvonalkereso.h:22
le
@ le
Definition: utvonalkereso.h:42
dijkstra
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.
Definition: utvonalkereso.c:138
jobb
@ jobb
Definition: utvonalkereso.h:41
Csucs::elek
El elek[4]
A csúcsból kiinduló élek tömbje.
Definition: utvonalkereso.h:31
El::csucs
Csucs * csucs
Pointer a csúcsra, ahova az él mutat.
Definition: utvonalkereso.h:14
Irany
Irany
A négy lehetséges irány a játékban.
Definition: utvonalkereso.h:39
egyikse
@ egyikse
Definition: utvonalkereso.h:44
El
Egy csúcs egy élét reprezentáló struktúra.
Definition: utvonalkereso.h:12
van_nem_latogatott
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.
Definition: utvonalkereso.c:288
utak_szama
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 utc...
Definition: utvonalkereso.c:197
Csucs::cel
bool cel
Ez a csúcs a cél-e?
Definition: utvonalkereso.h:32
graf_kilapit
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 muta...
Definition: utvonalkereso.c:120
Csucs::rajt
bool rajt
Ez a csúcs a rajt-e?
Definition: utvonalkereso.h:33
irany_hataroz
static Irany irany_hataroz(Pozicio p)
Függvény, ami meghatározza, hogy az adott x-y elmozdulással melyik irányba haladunk.
Definition: utvonalkereso.c:250
Csucs::tavolsag
int tavolsag
A csúcs távolsága a kezdő csúcstól.
Definition: utvonalkereso.h:23