Add header file

This commit is contained in:
Julia09055x 2023-11-07 19:17:59 +01:00
parent 38e0db28c0
commit e5a66c40b4
10 changed files with 118 additions and 2 deletions

View File

@ -32,7 +32,7 @@ file(GLOB SOURCES
"*.cpp"
"*.c"
)
add_executable(Snake main.cpp)
add_executable(Snake main.cpp food.c)
target_link_libraries(Snake ${SDL2_LIBRARIES})

8
config.h Normal file
View File

@ -0,0 +1,8 @@
struct config_t{
int mapWidth; // =10 //Kartenbreite
int mapHeight; // =10 //Kartenhöhe
int cycleDurationMs; //ms between each game loop iterartion (game speed)
int difficulty; //0-3 //Schwierigkeitsgrad
int snakeDefaultLength; // = 2 //Länge der Schlange
const char *leaderboardFilename; //Dateiname des Leaderboards
}

13
food.c Normal file
View File

@ -0,0 +1,13 @@
#include "food.h"
//platziert zufällig (mit bestimmtem Algorithmus) Fressen auf dem Spielfeld
void placeFood(int count)
{
return;
}
//Überprüft, ob Snake gefressen hat
void ckeckEaten()
{
return;
}

5
food.h Normal file
View File

@ -0,0 +1,5 @@
void placeFood(int cnt);
//platziert zufällig (mit bestimmtem Algorithmus) Fressen auf dem Spielfeld
void ckeckEaten();
//Überprüft, ob Snake gefressen hat

33
game.h Normal file
View File

@ -0,0 +1,33 @@
typedef enum gameState_t {PAUSED=0, MENU, RUNNING};
struct gameData_t{
snake_t snake;
int mapCollisions[int MAX_MAP_SIZE][int MAX_MAP_SIZE]; //Position der Wände
int mapPortals [int MAX_MAP_SIZE][int MAX_MAP_SIZE]; //Position 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;
}
void gameInit();
//ruft snakeInit auf
//ruft place Food auf
void handleCollision();
//Überprüft, ob Snake mit Gegenstand/Wand kollidiert ist
void handlePortals(); //optional
//Prüft, ob Snake sich auf einem Portal befindet
void gameLoop();
//macht immer: handleKeyboardEvents();
//if TickDue: Snakemove(), TickTimerReset
//optional: ruft checkCollision auf
//ruft place food auf
//ruft checkEaten auf
//if checkEaten then snakeGrow
//ruft snakeMove auf

6
keyboard.h Normal file
View File

@ -0,0 +1,6 @@
void processInputEvent();
//wird von SDL aufgerufen, wenn Taste gedrückt wurde
//bekommt Info darüber, welche Taste gedrückt wurde
//ruft zugehörige Aktion über switch caseauf
// z.B. bei Pfeiltaste -> rufe snakeSetDir auf
// im Menü bei Settings -> rufe menuNavigate auf

View File

@ -1,5 +1,10 @@
#include "SDL.h"
//initialize SDL window
//ruft gameInit auf
//uninitialize SDL
int main(int argc, char *argv[])
{
SDL_Init(SDL_INIT_VIDEO);
@ -22,6 +27,6 @@ int main(int argc, char *argv[])
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}

12
menu.h Normal file
View File

@ -0,0 +1,12 @@
void startScreen();
//zum Starten Enter drücken
//optional: "E" eingeen für Settings
void showLeaderboard();
//zeigt die besten Spieldurchläufe inkl. Punktestand an
void menuNavigate();
//über Tastaturbefehle im Menü navigieren
void showSettings(); //optional
//Menü zum Auswählen über Tastaturbefehle

2
render.h Normal file
View File

@ -0,0 +1,2 @@
void renderGame(struct game, struct snake);
//erstellt aus Spielfeldstruktur die graphische Anzeige mit SDL-Framework

32
snake.h Normal file
View File

@ -0,0 +1,32 @@
typedef enum SnakeDirection{DOWN=0, UP, LEFT, RIGHT}; //Bewegungsrichtung
struct snake_t {
int length; //aktuelle Länge der Schlange
int headX, headY; //aktuelle Position der Schlange
snakeDirection_t direction;
int tail[512][2] ={0};
bool isAlive; //lebt die Schlange noch oder ist sie mit sich selbst kollidiert?
}
void snakeInit();
//Snake mit bestimmter Startlänge an Startposition erstellen
//Speicherbereich reservieren
void snakegrow();
//Snake wird um 1 Glied länger (nach Fressen)
void snakeMove();
//bewegt die Schlang einen Schritt in die aktuelle Richtung
//ruft lokale Variable dir von snakeSetDir auf
void snakeSetDir(enum dir); //Richtung als Übergabeparameter
//definiert aktuelle Bewegungsrichtung der Schlange
bool snakeIsAlive();
//Überprüfen, ob Schlange noch lebt
//Prüft Kollision mit sich selbst
void snakeSetHeadPos(); //optional
//für handlePortals
//generiert zufällige Zielsposition, wohin sich die Schlange nach Betreten eines Portals bewegt