diff --git a/gameLoop.c b/gameLoop.c index 81e278f8b1e02ef02a2b594088f35b9216d034d3..4debc323a1c5f5f8421e4765431fcba57cbbee74 100644 --- a/gameLoop.c +++ b/gameLoop.c @@ -5,11 +5,15 @@ SDL_Rect *player; int playerscore; int playerhighscore; +//V: enum vehicle exists with 4 correct themes, Renderer exists +//N: renderer still exists, all objects are still exist or have been correctly removed +//E: game has been played for one round, which was at least 16ms long void gameLoop(enum vehicle theme,SDL_Renderer* renderer) { SDL_Event e; int speed = 0; + // Character wird in der Mitte des vorletzten Feldes gestartet SDL_Rect character = { .x = 420, .y = 810, @@ -22,23 +26,30 @@ void gameLoop(enum vehicle theme,SDL_Renderer* renderer) { playerscore = 0; playerhighscore = 0; + //start_game prevents game start before player input has been received bool start_game = false; + //ends game if game over criteria have been met bool end_game = false; + //used to implement rows and allows to remove rows out of view struct LinkedList *map = init_map(theme); + //every at least 16ms this loop is called while (!end_game) { + //prevents overlap of menu and game SDL_RenderClear(renderer); + //used to standardize time to at least 16ms per tick Uint32 start_time = SDL_GetTicks(); while (SDL_PollEvent(&e)) { - + switch (e.type){ - + // if user closes window exit frees all used space case SDL_QUIT: exit(0); + // any key input starts game and takes player input case SDL_KEYDOWN: start_game = true; jump(e.key.keysym.scancode); @@ -70,17 +81,22 @@ void gameLoop(enum vehicle theme,SDL_Renderer* renderer) { //Position des Spielers wird aktualisiert und gezeichnet update_character(speed, renderer); + //Der aktuelle Score wird oben rechts angezeigt paste_score (renderer); + //Hier wird der aktuelle Stand des Spiels dem Spieler angezeigt SDL_RenderPresent(renderer); // Spiel bekommt eine feste Aktuallisierungsrate von ~60 fps + // Tick dauert mindestens 16ms Uint32 end_time = SDL_GetTicks(); while (end_time - start_time < 16) { end_time = SDL_GetTicks(); } } + //Wenn das Spiel game over ist schreiben wir den aktuellen Score in die score.txt write_table(theme); + //wir löschen die map free_map(map); return; }