Add source files, Fix header files - Compiles now
- Add empty source files for all planned modules - Add source files to CMAKE source list - Fix and extend header files so there are no errors - Create global structs in game.c and config.c
This commit is contained in:
parent
e5a66c40b4
commit
5bba3e1531
@ -26,13 +26,20 @@ include_directories(${SDL2_INCLUDE_DIRS} ./)
|
||||
|
||||
|
||||
# --- Source files ---
|
||||
# Note: When new files are added, CMake has to be re-run
|
||||
# Alternatively, list files manually here
|
||||
file(GLOB SOURCES
|
||||
"*.cpp"
|
||||
"*.c"
|
||||
# Add all used source files here:
|
||||
set(SOURCES
|
||||
main.cpp
|
||||
config.c
|
||||
food.c
|
||||
game.c
|
||||
input.c
|
||||
menu.c
|
||||
render.c
|
||||
snake.c
|
||||
)
|
||||
add_executable(Snake main.cpp food.c)
|
||||
|
||||
|
||||
add_executable(Snake ${SOURCES})
|
||||
target_link_libraries(Snake ${SDL2_LIBRARIES})
|
||||
|
||||
|
||||
|
4
config.c
Normal file
4
config.c
Normal file
@ -0,0 +1,4 @@
|
||||
#include "config.h"
|
||||
|
||||
//global config struct
|
||||
config_t config;
|
26
config.h
26
config.h
@ -1,8 +1,18 @@
|
||||
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
|
||||
}
|
||||
#pragma once
|
||||
|
||||
// global configuration macros
|
||||
#define MAX_MAP_SIZE 10
|
||||
|
||||
// struct for storing game configuration
|
||||
typedef 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
|
||||
} config_t;
|
||||
|
||||
// global config struct defined in config.c
|
||||
extern config_t config;
|
||||
|
4
food.c
4
food.c
@ -1,12 +1,12 @@
|
||||
#include "food.h"
|
||||
|
||||
//platziert zufällig (mit bestimmtem Algorithmus) Fressen auf dem Spielfeld
|
||||
// platziert zufällig (mit bestimmtem Algorithmus) Fressen auf dem Spielfeld
|
||||
void placeFood(int count)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//Überprüft, ob Snake gefressen hat
|
||||
// Überprüft, ob Snake gefressen hat
|
||||
void ckeckEaten()
|
||||
{
|
||||
return;
|
||||
|
4
food.h
4
food.h
@ -1,5 +1,5 @@
|
||||
void placeFood(int cnt);
|
||||
//platziert zufällig (mit bestimmtem Algorithmus) Fressen auf dem Spielfeld
|
||||
// platziert zufällig (mit bestimmtem Algorithmus) Fressen auf dem Spielfeld
|
||||
|
||||
void ckeckEaten();
|
||||
//Überprüft, ob Snake gefressen hat
|
||||
// Überprüft, ob Snake gefressen hat
|
4
game.c
Normal file
4
game.c
Normal file
@ -0,0 +1,4 @@
|
||||
#include "game.h"
|
||||
|
||||
// global struct for storing all game data
|
||||
gameData_t game;
|
55
game.h
55
game.h
@ -1,33 +1,46 @@
|
||||
typedef enum gameState_t {PAUSED=0, MENU, RUNNING};
|
||||
#include <stdbool.h>
|
||||
|
||||
struct gameData_t{
|
||||
#include "snake.h"
|
||||
#include "config.h"
|
||||
|
||||
typedef enum gameState_t
|
||||
{
|
||||
PAUSED = 0,
|
||||
MENU,
|
||||
RUNNING
|
||||
} gameState_t;
|
||||
|
||||
typedef 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 mapCollisions[MAX_MAP_SIZE][MAX_MAP_SIZE]; // Position der Wände
|
||||
int mapPortals[MAX_MAP_SIZE][MAX_MAP_SIZE]; // Position der Portale
|
||||
|
||||
int foodX, foodY; //Positon des Futters (es gibt immer nur 1 Futter)
|
||||
int lifesRemaining; //implementieren wir nicht!!
|
||||
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();
|
||||
//ruft snakeInit auf
|
||||
//ruft place Food auf
|
||||
// ruft snakeInit auf
|
||||
// ruft place Food auf
|
||||
|
||||
void handleCollision();
|
||||
//Überprüft, ob Snake mit Gegenstand/Wand kollidiert ist
|
||||
// Ü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
|
||||
void handlePortals(); // optional
|
||||
// Prüft, ob Snake sich auf einem Portal befindet
|
||||
|
||||
void runGameCycle();
|
||||
// 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
|
||||
|
9
main.cpp
9
main.cpp
@ -1,5 +1,9 @@
|
||||
#include "SDL.h"
|
||||
|
||||
extern "C" {
|
||||
#include "food.h"
|
||||
}
|
||||
|
||||
//initialize SDL window
|
||||
//ruft gameInit auf
|
||||
//uninitialize SDL
|
||||
@ -23,10 +27,11 @@ int main(int argc, char *argv[])
|
||||
SDL_RenderClear(renderer);
|
||||
SDL_RenderPresent(renderer);
|
||||
|
||||
SDL_Delay(3000);
|
||||
SDL_Delay(1000);
|
||||
|
||||
SDL_DestroyWindow(window);
|
||||
SDL_Quit();
|
||||
|
||||
|
||||
placeFood(3);
|
||||
return 0;
|
||||
}
|
||||
|
4
menu.h
4
menu.h
@ -1,4 +1,4 @@
|
||||
void startScreen();
|
||||
void showStartScreen();
|
||||
//zum Starten Enter drücken
|
||||
//optional: "E" eingeen für Settings
|
||||
|
||||
@ -10,3 +10,5 @@ void menuNavigate();
|
||||
|
||||
void showSettings(); //optional
|
||||
//Menü zum Auswählen über Tastaturbefehle
|
||||
|
||||
void menuHandleInput();
|
||||
|
4
render.h
4
render.h
@ -1,2 +1,4 @@
|
||||
void renderGame(struct game, struct snake);
|
||||
#include "game.h"
|
||||
#include "snake.h"
|
||||
void renderGame(gameData_t game, snake_t snake);
|
||||
//erstellt aus Spielfeldstruktur die graphische Anzeige mit SDL-Framework
|
51
snake.h
51
snake.h
@ -1,32 +1,43 @@
|
||||
|
||||
typedef enum SnakeDirection{DOWN=0, UP, LEFT, RIGHT}; //Bewegungsrichtung
|
||||
#pragma once
|
||||
#include <stdbool.h>
|
||||
|
||||
struct snake_t {
|
||||
int length; //aktuelle Länge der Schlange
|
||||
int headX, headY; //aktuelle Position der Schlange
|
||||
typedef enum snakeDirection_t
|
||||
{
|
||||
DOWN = 0,
|
||||
UP,
|
||||
LEFT,
|
||||
RIGHT
|
||||
} snakeDirection_t; // Bewegungsrichtung
|
||||
|
||||
typedef struct snake_t
|
||||
{
|
||||
int length; // aktuelle Länge der Schlange
|
||||
int headX;
|
||||
int 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?
|
||||
}
|
||||
int tail[512][2];
|
||||
bool isAlive; // lebt die Schlange noch oder ist sie mit sich selbst kollidiert?
|
||||
} snake_t;
|
||||
|
||||
void snakeInit();
|
||||
//Snake mit bestimmter Startlänge an Startposition erstellen
|
||||
//Speicherbereich reservieren
|
||||
// Snake mit bestimmter Startlänge an Startposition erstellen
|
||||
// Speicherbereich reservieren
|
||||
|
||||
void snakegrow();
|
||||
//Snake wird um 1 Glied länger (nach Fressen)
|
||||
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
|
||||
// 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
|
||||
void snakeSetDir(snakeDirection_t dir); // Richtung als Übergabeparameter
|
||||
// definiert aktuelle Bewegungsrichtung der Schlange
|
||||
|
||||
bool snakeIsAlive();
|
||||
//Überprüfen, ob Schlange noch lebt
|
||||
//Prüft Kollision mit sich selbst
|
||||
// Ü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
|
||||
void snakeSetHeadPos(); // optional
|
||||
// für handlePortals
|
||||
// generiert zufällige Zielsposition, wohin sich die Schlange nach Betreten eines Portals bewegt
|
Loading…
x
Reference in New Issue
Block a user