|
Platform játék
3D-s megjelenítés, véletlenszerű pályagenerálás, jutalmazó játékélmény
|
#include "floaters.h"Macros | |
| #define | enemyMinSize 0.75 |
| #define | enemyMaxSize 4 |
| #define | enemyVelocity 0.006 |
| #define | enemySlowing 0.15 |
| #define | slownessDebuffDuration 2000 |
| #define | projectileSize 0.2 |
| #define | projectileVelocity 0.03 |
| #define | projectileVelocityYMax 0.035 |
| #define | floaterColor (colors) { (color) {229, 22, 22, 255}, (color) {200, 20, 20, 255}, (color) {168, 16, 16, 255} } |
Functions | |
| floater * | addToFloaterList () |
| Lista elejére beszúr. More... | |
| void | freeFloaterList () |
| Felszabadítja az ellenségek és lövedékek listáját. More... | |
| void | createEnemy () |
| A játékos közelében elhelyez egy új ellenséget. More... | |
| void | createProjectile (vector3D playerPosition, vector3D playerSize, vector2D *playerVelocity, mousePos mouse) |
| Lövedék létrehozása. A megadott paraméterek függvényében a létrehozott lövedék az egér irányafele indul el. More... | |
| void | destroyFloater (floater *floaterToDestroy) |
| Listából kiszed. More... | |
| void | moveFloaters (int deltaTime) |
| Minden floaterre meghívja a szükséges mozgatási műveletet. More... | |
| void | getFloatersRenderObject (int x, int y, renderObject *renderMap, int renderObjectsPerCube) |
| Visszaadja az adott térfogatban lévő floater testeket. A sorrend nem elhanyagolható 3D-s testek rajzolásakor. Figyelni kell, melyik melyik másikat takarja el. Ezért kell "feldarabolni" őket. Itt még csak az egy adott m^3-ben lévő testek adatait adja oda a rajzoló függvénynek. Maga a feldarabolás már nem ennek a függvénynek a dolga. More... | |
Variables | |
| floater * | floaterList = NULL |
| #define enemyMaxSize 4 |
Az ellenségek, ha összeérnek, összetapadnak, de ennél ne lehetnek nagyobbak [m].
| #define enemyMinSize 0.75 |
Ellenségek oldalhosszának kezdeti értéke [m].
| #define enemySlowing 0.15 |
Ha az ellenség nekiütközik valaminek, akkor a sebessége ennyiszeresére csökken.
| #define enemyVelocity 0.006 |
[m/ms]
| #define floaterColor (colors) { (color) {229, 22, 22, 255}, (color) {200, 20, 20, 255}, (color) {168, 16, 16, 255} } |
A lövedék és az ellenség ugyanolyan színű
| #define projectileSize 0.2 |
A játékos által lőtt lövedék oldalhossza [m].
| #define projectileVelocity 0.03 |
A játékos által lőtt lövedék kezdő sebessége [m/ms]
| #define projectileVelocityYMax 0.035 |
A lövedék sebességét befolyásolja a játékos sebessége (a kiulövés pillanatában), illetve a gravitációs gyorsulás, viszont sosem lehet gyorsabb.
| #define slownessDebuffDuration 2000 |
Ha az ellenség nekiütközik valaminek, akkor a sebessége ennyi ideig lesz alacsnyabb. [ms]
| floater* addToFloaterList | ( | ) |
Lista elejére beszúr.
| void createEnemy | ( | ) |
A játékos közelében elhelyez egy új ellenséget.
| void createProjectile | ( | vector3D | playerPosition, |
| vector3D | playerSize, | ||
| vector2D * | playerVelocity, | ||
| mousePos | mouse | ||
| ) |
Lövedék létrehozása. A megadott paraméterek függvényében a létrehozott lövedék az egér irányafele indul el.
| helyvektor | a játékoshoz |
| térvektor | a játékos méretéhez |
| síkvektor* | játékos sebesség (ezt Newton III. értelmében megváltoztatja |
| koordinátája | az egérnek A játékost ellenkező irányba elmozdítja. A lövedék kezdősebbességéhez hozzáadódik a játékos sebessége. |
| void destroyFloater | ( | floater * | floaterToDestroy | ) |
Listából kiszed.
| void freeFloaterList | ( | ) |
Felszabadítja az ellenségek és lövedékek listáját.
| void getFloatersRenderObject | ( | int | x, |
| int | y, | ||
| renderObject * | renderMap, | ||
| int | renderObjectsPerCube | ||
| ) |
Visszaadja az adott térfogatban lévő floater testeket. A sorrend nem elhanyagolható 3D-s testek rajzolásakor. Figyelni kell, melyik melyik másikat takarja el. Ezért kell "feldarabolni" őket. Itt még csak az egy adott m^3-ben lévő testek adatait adja oda a rajzoló függvénynek. Maga a feldarabolás már nem ennek a függvénynek a dolga.
| koord | x |
| koord | y |
| Hova | kell írnia a testeket |
| Max | mennyit adhat vissza A feldarabolásról részletesebben a camera.c modulban. |
| void moveFloaters | ( | int | deltaTime | ) |
Minden floaterre meghívja a szükséges mozgatási műveletet.
| floater* floaterList = NULL |
Láncolt lista, ami az ellenségeket és lövedékeket is tartalmazza. Nagyon hasonló a kettő, ezért célszerű közösen kezelni őket.
1.8.13