diff --git a/gameLoop.c b/gameLoop.c
index 6303bb7f02741b384795ddfc16b41ab123525319..96ae2e8cea1196866b582c1bf54062df7011321d 100644
--- a/gameLoop.c
+++ b/gameLoop.c
@@ -8,7 +8,7 @@ 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) {
+bool gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
 
     SDL_Event e;
     int speed = 0;
@@ -30,6 +30,7 @@ void gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
     bool start_game = false;
     //ends game if game over criteria have been met
     bool end_game = false;
+    bool quit_game = false;
 
     //used to implement rows and allows to remove rows out of view
     struct LinkedList *map = init_map(theme); 
@@ -48,7 +49,8 @@ void gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
             switch (e.type){
                 // if user closes window exit frees all used space
                 case SDL_QUIT:
-                      exit(0);
+                      end_game = true;
+                      quit_game = true;
                 // any key input starts game and takes player input
                 case SDL_KEYDOWN:
                     start_game = true;
@@ -72,7 +74,8 @@ void gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
 
         // Die Map wird bewegt und gezeichnet (inklusive Fahrzeuge)
         // Bei einer ungültigen Kollision wird das Spiel beendet
-        end_game = move_map(theme,speed,map,renderer);
+        if (!end_game) 
+            end_game = move_map(theme,speed,map,renderer);
     
         // Wenn der Spieler nicht im Fenster zu sehen ist, dann wird das Spiel beendet
         if(player->y >= SCREEN_HEIGHT || player->x >=SCREEN_WIDTH || player->x <= -60){
@@ -98,5 +101,5 @@ void gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
         write_table(theme);
         //wir löschen die map
         free_map(map);
-        return;
+        return(quit_game);
 }
diff --git a/gameLoop.h b/gameLoop.h
index 5ba487158bd1b52b07f0376af8879330ce6fb37a..4a5d9bd1fc82e4942c611def5732ba42910f0a97 100644
--- a/gameLoop.h
+++ b/gameLoop.h
@@ -22,6 +22,6 @@ extern int playerhighscore;
 
 //Declaration of functions
 
-void gameLoop(enum vehicle,SDL_Renderer*);
+bool gameLoop(enum vehicle,SDL_Renderer*);
 
 #endif
\ No newline at end of file
diff --git a/main.c b/main.c
index 56ad1bcab84c7986183d0bfc87dece39a563040c..5e0716371871faa50a965ea549bd0e702b5f9767 100644
--- a/main.c
+++ b/main.c
@@ -48,7 +48,6 @@ int main(void) {
     int theme; 
     bool change_Map = true;
 
-
     while (true) {
 
         if (change_Map){
@@ -57,7 +56,8 @@ int main(void) {
         if (theme == (-1)){ // Spiel wurde geschlossen oder es kam zu einem Fehler
             break;
         }
-        gameLoop(theme,renderer);
+        if (gameLoop(theme,renderer))
+            break;
         change_Map = end_screen(renderer);
 
     }
diff --git a/map.c b/map.c
index 56f3e287efe8f0f467e6d30cc2333b78427b4d9b..1970784a859ca58736423ab8b1155995dea1c0b3 100644
--- a/map.c
+++ b/map.c
@@ -34,7 +34,7 @@ struct LinkedList* init_map(enum vehicle theme){
     n->next = m;
     n = m;
 
-    for(int i = 0;i<10;i++){
+    for(int i = 0;i<10000;i++){
 
         struct Row *m;
 
@@ -125,7 +125,7 @@ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list, SDL_Rendere
                 return(1);
             }
         }
-        
+
         if (cur->next == NULL){
             break;
         }
diff --git a/menu2.c b/menu2.c
index ff31ea71d2b4b59ff3d7e22b1b7c85a364cd5416..5724d76f19d82677ffc0c62f1f3867f5a8a8e613 100644
--- a/menu2.c
+++ b/menu2.c
@@ -69,7 +69,7 @@ enum vehicle startscreen(SDL_Renderer* renderer){
             switch (event.type) {
 
             case SDL_QUIT:
-                exit(0);
+                return(-1);
 
             case SDL_MOUSEBUTTONDOWN:
                 if (0<=event.button.y && event.button.y<=200){