diff --git a/charac.c b/charac.c
index f7bd49794083c6da66af7c5d1f9a9aeb35b1b121..518fc22a5682490794820fcde2e6e2008ada5863 100644
--- a/charac.c
+++ b/charac.c
@@ -6,31 +6,36 @@ Vorbedingung: Es wurde eine Taste gedrückt
 Nachbedingung: Position des Characters hat sich je nach Tasteneingabe verändert. Wenn keine Steuertaste gedrückt wird, dann passiert nichts.
 */
 
+// playerscore = interne Darstellung der ingesamt gelaufenen Schritte minus der zurückgelaufenen Schritte
+// playerhighscore = externe Darstellung; höchste Anzahl an nach oben gelaufenen Schritten
+// ROW_SIZE = 100
+// SDL_SCANCODE_X = MACRO von SDL anstall "magic numbers" zu verwenden
+
 void jump(int input){
     switch(input) {
 	case SDL_SCANCODE_D:		//right
-		if(player->x < 770){
-			player->x += ROW_SIZE;			//ROW_SIZE == 100
+		if(player->x < 770){ // Überprüfe Grenzen
+			player->x += ROW_SIZE;
 		}
 		break;
 
 	case SDL_SCANCODE_A:		//left
-		if(player->x > 30){
+		if(player->x > 30){ // Überprüfe Grenzen
 			player->x -= ROW_SIZE;
 		}
 		break;
 
 	case SDL_SCANCODE_S:		//down
-		if(player->y < 820){
+		if(player->y < 820){ // Überprüfe Grenzen
 			playerscore--;
 			player->y += ROW_SIZE;
 		}
 		break;
 
 	case SDL_SCANCODE_W:		//up
-		if(player->y >120){
+		if(player->y >120){ // Überprüfe Grenzen
 			playerscore++;
-			if(playerscore > playerhighscore){
+			if(playerscore > playerhighscore){ // Überprüfe, ob Spieler weiter gelaufen ist als vorheriger Highscore
 				playerhighscore = playerscore;
 			}
 			player->y -= ROW_SIZE;
@@ -38,9 +43,9 @@ void jump(int input){
 		break;
 
 	case SDL_SCANCODE_Q: // Taste q => gehe nach oben links
-		if(player->y >120 && player->x > 30){
+		if(player->y >120 && player->x > 30){ // Überprüfe Grenezen
 			playerscore++;
-			if(playerscore > playerhighscore){
+			if(playerscore > playerhighscore){ // Überprüfe, ob Spieler weiter gelaufen ist als vorheriger Highscore
 				playerhighscore = playerscore;
 			}
 			player->y -= ROW_SIZE;
@@ -49,10 +54,10 @@ void jump(int input){
 		break;
 
 	case SDL_SCANCODE_E: // Taste e => gehe nach oben rechts
-		if(player->y >120 && player->x < 770){
+		if(player->y >120 && player->x < 770){ // Überprüfe Grenzen
 			playerscore++;
-			if(playerscore > playerhighscore){
-				playerhighscore = playerscore;
+			if(playerscore > playerhighscore){ // Überprüfe, ob Spieler weiter gelaufen ist als vorheriger Highscore
+				playerhighscore = playerscore; // Update playerhighscore, wenn playerscore größer ist
 			}
 			player->y -= ROW_SIZE;
 			player->x += ROW_SIZE;
@@ -71,9 +76,10 @@ Nachbedingung: Der Character bewegt sich mit der Map mit.
 */
 
 int update_character(int speed, SDL_Renderer *renderer){
-	// Bewege die Spielfigur um speed Pixel nach unten
-	player->y +=speed;
+	
+	player->y +=speed; // Bewege den Spieler um speed pixel nach unten
 
+  // Fehlerbehandlung
 	if (SDL_RenderCopy(renderer, img_duck, NULL,player) != 0) {
                 SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
                 return(1);
diff --git a/gameLoop.c b/gameLoop.c
index a9acf3b3eccafd3fb2d1abad476c318f305bb703..6303bb7f02741b384795ddfc16b41ab123525319 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;
 }
diff --git a/menu2.c b/menu2.c
index 8784362247b24b945fe28c257b47487a0947834e..ff31ea71d2b4b59ff3d7e22b1b7c85a364cd5416 100644
--- a/menu2.c
+++ b/menu2.c
@@ -1,7 +1,7 @@
 #include "menu2.h"
 
-// Die Funktion zeigt die möglichen Reihen des Spiels
-// Wenn man auf eine Reihe klickt, dann wir das Spiel mit einer bestimmten 
+// Vorb.: Die Funktion zeigt die möglichen Reihen des Spiels
+// Nachb.: Wenn man auf eine Reihe klickt, dann wir das Spiel mit einer bestimmten 
 // Konfiguration gestartet
 enum vehicle startscreen(SDL_Renderer* renderer){
     // Definiere rect
@@ -203,7 +203,8 @@ 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) {
 
@@ -241,76 +242,8 @@ bool end_screen(SDL_Renderer* renderer) {
 
   SDL_Texture* Message = SDL_CreateTextureFromSurface(renderer, surfaceMessage);
 
-  SDL_RenderCopy(renderer, Message, NULL, &rect);
-
-/*
-  // Ausgabe Highscore der entsprechenden Karte
-  
-  int map = theme;
-  FILE *my_file;
-  //FILE *my_wfile = fopen("Highscore2.txt","w");
-  
-  switch(map) { // Öffne die entsprechende Datei für den Highscore der Karte theme
-  case coin:
-    my_file = fopen("HighscoreCoin.txt","r+");
-    break;
-  case car:
-    my_file = fopen("HighscoreCar.txt","r+");
-    break;
-  case boat:
-    my_file = fopen("HighscoreBoat.txt","r+");
-    break;
-  case train: 
-    my_file = fopen("HighscoreTrain.txt","r+");
-    break;
-  }
-
-  bool notEOF = true;
-  
-  while (notEOF) { // Lese bis Datei leer
-
-	  char buf[64]; // initialise buffer
-
-	  size_t n = fread(buf,sizeof buf[0], sizeof buf, my_file);
-    //printf("n = %zu\n",n);
-	  
-    if (n == 0) {
-      
-      notEOF = false;
-
-    } else {
-    
-      //printf("Read text: \n %s\n",buf);
-      //fwrite(buf,sizeof buf[0], n, my_file);
-        // Definiere rect
-    
-    // Erstelle Rechteck für das Schreiben des Highscores
-    SDL_Rect rect2 = {
-	          .x = 0,
-	          .y = 900,
-	          .w = 600,
-	          .h = 200 };
-  
-    if (SDL_RenderFillRect(renderer,&rect2)!=0) {
-      SDL_Log("Malen des Rechtecks fehlgeschlagen! SDL_Error %s\n",SDL_GetError());
-      return(-1);
-    }
-
-    SDL_Surface* surfaceMessage2 = TTF_RenderText_Blended_Wrapped (font, buf, (SDL_Color) {255, 255, 255, 255}, 200);
-    
-    if (surfaceMessage2 == NULL) 
-      printf("Text Surface loading failed: %s\n", TTF_GetError());
-    
-    SDL_Texture* Message2 = SDL_CreateTextureFromSurface(renderer, surfaceMessage2);
-    
-    SDL_RenderCopy(renderer, Message2, NULL, &rect2);
-
-    }
-
-  }
+  SDL_RenderCopy(renderer, Message, NULL, &rect);  
 
-  //fclose(my_file);
-    */
   SDL_Event e;
   int input;
   bool quit = false;
@@ -343,7 +276,6 @@ bool end_screen(SDL_Renderer* renderer) {
       }
     }
   }
-  //fclose(my_file);
   return(true);
 }