62 lines
1.4 KiB
C
62 lines
1.4 KiB
C
#include <stdbool.h>
|
|
|
|
#include "snake.h"
|
|
#include "config.h"
|
|
|
|
typedef enum gameState_t
|
|
{
|
|
PAUSED = 0,
|
|
MENU,
|
|
RUNNING
|
|
} gameState_t;
|
|
|
|
typedef struct portal_t
|
|
{
|
|
int posX, posY;
|
|
int targetX, targetY;
|
|
|
|
char * color;
|
|
} portal_t;
|
|
|
|
typedef struct gameData_t
|
|
{
|
|
snake_t snake;
|
|
int mapCollisions[MAX_MAP_SIZE][MAX_MAP_SIZE]; // Position der Wände
|
|
portal_t mapPortals[MAX_PORTALS];
|
|
int mapPortalCount; // Anzahl der Portale
|
|
|
|
int foodX, foodY; // Positon des Futters (es gibt immer nur 1 Futter)
|
|
int lifesRemaining; // implementieren wir nicht!!
|
|
int timestampLastRun;
|
|
bool isPaused;
|
|
gameState_t gameState;
|
|
} gameData_t;
|
|
|
|
// global struct for storing all game data (defined in game.c)
|
|
extern gameData_t game;
|
|
|
|
void gameInit();
|
|
// berechnet BlockSizePx: windowSize/mapWidth
|
|
// ruft snakeInit auf
|
|
// ruft placeFood auf
|
|
// platziert Wände
|
|
|
|
bool checkIsCollided();
|
|
// Überprüft, ob Snake mit Gegenstand/Wand kollidiert ist
|
|
// if true -> gibt 1 an runGameCycle zurück
|
|
|
|
|
|
void handlePortals(); // optional
|
|
// Prüft, ob Snake sich auf einem Portal befindet
|
|
//if true: snakeSetHeadPos auf
|
|
|
|
void runGameCycle();
|
|
// macht immer: handleKeyboardEvents();
|
|
// optional: ruft checkCollision() auf
|
|
// ruft placeFood() auf
|
|
// ruft checkEaten() auf
|
|
// if checkEaten then snakeGrow()
|
|
// if TickDue: Snakemove(), TickTimerReset
|
|
// ruft snakeMove() auf
|
|
//ruft am Ende vom gameCycle renderGame() auf
|