From 238488fbf472765cc8e69e3de57c8c82db709ff7 Mon Sep 17 00:00:00 2001 From: Janos <janol55@zedat.fu-berlin.de> Date: Thu, 21 Mar 2024 14:08:46 +0100 Subject: [PATCH] Korrekte Fehlerbehandlung und das Spiel wird immer richtig verlassen --- main.c | 10 ++++++++-- menu2.c | 11 +++++------ menu2.h | 2 +- title_screen.c | 2 +- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/main.c b/main.c index 6a97d0f..41919d0 100644 --- a/main.c +++ b/main.c @@ -48,10 +48,13 @@ int main(void) { } //Lädt den Titelbildschirm - title_screen(renderer); + if (title_screen(renderer)){ + exitGame(renderer,window); + return(0); + } int theme; - bool change_Map = true; + int change_Map = 1; while (true) { if (change_Map){ @@ -63,6 +66,9 @@ int main(void) { if (gameLoop(theme,renderer)) break; change_Map = end_screen(renderer); + if (change_Map == 2 || change_Map == -1){ + break; + } } diff --git a/menu2.c b/menu2.c index 5724d76..3a1df1a 100644 --- a/menu2.c +++ b/menu2.c @@ -206,7 +206,7 @@ enum vehicle startscreen(SDL_Renderer* renderer){ Vorb.: Das Spiel ist angehalten und es wird "Nochmal (y)/(n)" angezeigt Nachb.: Das Spiel wird erneut gestartet, wenn y gedrückt wird. Wenn n gedrückt wird, wird die Levelauswahl geöffnet */ -bool end_screen(SDL_Renderer* renderer) { +int end_screen(SDL_Renderer* renderer) { //Schriftart, -farbe und -groesse festesetzen @@ -258,24 +258,23 @@ bool end_screen(SDL_Renderer* renderer) { switch (e.type) { //fclose(my_file); case SDL_QUIT: - exit(0); + return(2); // Spiel wird geschlossen case SDL_KEYDOWN: input = e.key.keysym.scancode; if (input == y) { SDL_FreeSurface(surfaceMessage); SDL_DestroyTexture(Message); - quit = true; - return(false); + return(0); } if (input == n) { SDL_FreeSurface(surfaceMessage); SDL_DestroyTexture(Message); - return(true); + return(1); } } } } - return(true); + return(1); } diff --git a/menu2.h b/menu2.h index a7c9e28..f5a679d 100644 --- a/menu2.h +++ b/menu2.h @@ -15,7 +15,7 @@ //Declaration of functions -bool end_screen(SDL_Renderer*); +int end_screen(SDL_Renderer*); enum vehicle startscreen(SDL_Renderer*); diff --git a/title_screen.c b/title_screen.c index 89f6873..206acda 100644 --- a/title_screen.c +++ b/title_screen.c @@ -100,7 +100,7 @@ int title_screen(SDL_Renderer* renderer){ while (SDL_PollEvent(&e)) { switch (e.type) { case SDL_QUIT: - exit(0); + return(1); case SDL_KEYDOWN: return(0); } -- GitLab