diff --git a/Makefile b/Makefile
index 738a3180ac0ea25ad2367fe9538ad6feb9822b84..39dab1ee2711ef7afb80d7fa7c4ac5f50671f34a 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 CFLAGS=$(shell pkg-config --cflags sdl2 SDL2_image SDL2_ttf) -std=c99 -Wall -Wextra -pedantic -g -O0
 CPPFLAGS=-MMD -MF $*.d # Generate dependency files
 LDLIBS=$(shell pkg-config --libs sdl2 SDL2_image SDL2_ttf) -lm 
-OBJ=output.o map.o rows.o auto.o charac.o main.o init.o gameLoop.o menu2.o title_screen.o file_own.o
+OBJ=output.o map.o rows.o auto.o charac.o main.o init.o gameLoop.o menu2.o title_screen.o file_own.o bird.o
 CC=gcc 
 
 all: main 
diff --git a/auto.c b/auto.c
index 236f746604116a3ea39656e1319750b02ba8fb36..8ed62665f4ecd01bc8de9b52881c8bb71797ba4c 100644
--- a/auto.c
+++ b/auto.c
@@ -1,7 +1,7 @@
 #include "hDateien/auto.h"
 
 // Vorbedinung: 
-//      0 < |speed| < 10, 0 < width < 500, 0 < height < 100, 
+//      0 < |speed| < 10,
 //      -5000 <= pred_pos < 5000 <- Position des Vorgängerautos
 //      0 <= pred_width < 500 
 
@@ -35,6 +35,8 @@ struct Car* init_race_car(int speed,int pred_pos,int pred_width){
         }
     }
 
+    b->color = none;
+
     return(b);
 }
 
@@ -65,6 +67,9 @@ struct Car* init_train(int speed,int pred_pos,int pred_width){
             b->x_pos = pred_pos - b->width - distance;
         }
     }
+
+    b->color = none;
+
     return(b);
 }
 
@@ -78,7 +83,9 @@ struct Car* init_boat(int speed,int pred_pos,int pred_width){
     int min_distance;
     int distance;
 
-    b->width = 200;
+    int p = (rand() % 2) + 2;
+
+    b->width = 100 * p;
     b->height = 60;
     b->type = boat;
 
@@ -86,7 +93,7 @@ struct Car* init_boat(int speed,int pred_pos,int pred_width){
         b->x_pos = pred_pos;
 
     }else{
-        min_distance = 50 * abs(speed);
+        min_distance = 50 * abs(speed)+(b->width/3);
         distance = (rand() % 300) + min_distance;
 
         if (speed < 0){
@@ -97,6 +104,8 @@ struct Car* init_boat(int speed,int pred_pos,int pred_width){
     }
     return(b);
 
+    b->color = none;
+
 }
 
 struct Car* init_coin(int speed,int pred_pos,int pred_width){
@@ -124,6 +133,8 @@ struct Car* init_coin(int speed,int pred_pos,int pred_width){
         b->x_pos = pred_pos - b->width - distance;
     }
 
+    b->color = none;
+
     return(b);
 }
 
@@ -157,12 +168,21 @@ struct Car* init_car(int speed,int pred_pos,int pred_width){
         }
     }
 
+    int p = rand() % 3;
+    if (p == 0){
+        b->color = red;
+    }else if(p == 1){
+        b->color = blue;
+    }else{
+        b->color = green;
+    }
+
 
     return(b);
 }
 
 // Vorbedinung: 
-//      0 < |speed| < 10, 0 < width  < 500, 0 < height < 100, 
+//      0 < |speed| < 10, 
 //      0 <= start_pos <= 900
 
 // Nachbedingung: Initialisierte LinkedList von Autos, abhängig von den Parametern
@@ -260,7 +280,7 @@ int move_car(SDL_Renderer* renderer,struct Row *n){
 
             }else if (cur -> type == boat){
                 onBoat = true;
-
+                center_water(cur->x_pos,cur->width);
             }else if(cur ->type == coin){
 
                 playerscore += 5;
@@ -272,7 +292,7 @@ int move_car(SDL_Renderer* renderer,struct Row *n){
         }
 
         cur->x_pos += n->speed;
-        paste_car(renderer,cur->x_pos,n->y_pos,cur->width,cur->height,n->speed,cur->type);
+        paste_car(renderer,cur->x_pos,n->y_pos,cur->width,cur->height,n->speed,cur->type,cur->color);
         
         if (cur->next == NULL){
             break;
diff --git a/bird.c b/bird.c
new file mode 100644
index 0000000000000000000000000000000000000000..f0a8cd55784c76b6a6c23e610141dd53786ec3c0
--- /dev/null
+++ b/bird.c
@@ -0,0 +1,35 @@
+#include "hDateien/bird.h"
+
+
+struct bird* init_bird(int x_pos,int y_pos){
+    struct bird *b = malloc(sizeof(*b));
+    if(b == NULL){
+        perror("kein Speicheeplatz");
+    }
+
+    b->speed = -3;//(((rand() % 2)*2) -1)*3
+    b->x_pos = x_pos;
+    b->y_pos = y_pos;//(rand() % 10) * ROW_SIZE
+    
+    b->height = 80;
+    b->width = 80 ;
+    b->anim = 0;
+
+    return(b);
+}
+
+bool move_bird(SDL_Renderer* renderer,struct bird *b,int speed){
+    if (b->anim) 
+        b->x_pos += b->speed;
+    b->y_pos += speed;
+    paste_bird(renderer,b->x_pos+10,b->y_pos+10,b->height,b->width,b->anim);
+    if (b->anim){
+        b->anim = (b->anim + 1) % 16;
+        if (b->anim == 0)
+            b->anim++;
+    }
+    if ((b->x_pos < -b->width && b->speed < 0) || (b->x_pos > 1000 && b->speed > 0) ){
+        return(true);
+    }
+    return(false);
+}
\ No newline at end of file
diff --git a/charac.c b/charac.c
index 40905f08a13274ccc6ec5e7f55b81d0081d33077..1ce23b1d4aabb96a4a7932dbedc028907dffa423 100644
--- a/charac.c
+++ b/charac.c
@@ -108,3 +108,14 @@ void recenter_player(void){
 	player->x = (i-50) + 8*ROW_SIZE; // Spieler steht ganz rechts, dann verschiebe um 20 nach links mit Offset von 8 Kästen 
 }
 
+
+void center_water(int x_pos,int x_width){
+	int i = 70;
+	for(int j = 0;j<x_width/ROW_SIZE;j++){
+		if (player->x < x_pos +i+ j * ROW_SIZE){
+			player->x = x_pos + (i-50) + j * ROW_SIZE ;
+			return;
+		}
+	}
+	player->x = x_pos +(i-50)+ (x_width-ROW_SIZE) ;
+}
\ No newline at end of file
diff --git a/gameLoop.c b/gameLoop.c
index 42573151d3d619c7fbd7781db40e304a39d0fb15..5cb97f2d8ebb26bbef063c0f40eef6de26a64aa8 100644
--- a/gameLoop.c
+++ b/gameLoop.c
@@ -34,7 +34,7 @@ bool gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
     int last_move;
 
     //used to implement rows and allows to remove rows out of view
-    struct LinkedList *map = init_map(theme); 
+    struct LinkedList *map = init_map(theme);
 
     //every at least 16ms this loop is called
     while (!end_game) {
@@ -86,8 +86,11 @@ bool gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
             end_game = true;
         }
 
+
         //Position des Spielers wird aktualisiert und gezeichnet
         update_character(speed, renderer);
+
+
         //Der aktuelle Score wird oben rechts angezeigt
         paste_score (renderer);
 
diff --git a/hDateien/auto.h b/hDateien/auto.h
index 84cb9e1872ca37aff4a9e5efc03455686b2fd76e..d4af8296d7d00e25428fcd01c22f8272c98e3a02 100644
--- a/hDateien/auto.h
+++ b/hDateien/auto.h
@@ -7,6 +7,7 @@
 #include <stdbool.h>
 #include "output.h"
 #include "header.h"
+#include "charac.h"
 
 //Declarations of functions
 
diff --git a/hDateien/bird.h b/hDateien/bird.h
new file mode 100644
index 0000000000000000000000000000000000000000..21e90e60af346c8c07e97a90595cdf4772933a2b
--- /dev/null
+++ b/hDateien/bird.h
@@ -0,0 +1,15 @@
+#ifndef BiRD_H
+#define BIRD_H
+
+#include <stdlib.h>
+#include "main.h"
+#include "output.h"
+#include <SDL_render.h>
+#include "header.h"
+#include "stdbool.h"
+
+struct bird* init_bird(int,int);
+
+bool move_bird(SDL_Renderer* renderer,struct bird *b,int);
+
+#endif
\ No newline at end of file
diff --git a/hDateien/charac.h b/hDateien/charac.h
index d2a38b0b14c0b8e551d20cb7d754df4367ea3992..ffd4a5a82ca11038c147b41f01c98134ec42b59b 100644
--- a/hDateien/charac.h
+++ b/hDateien/charac.h
@@ -28,4 +28,6 @@ int update_character(int,SDL_Renderer*);
 
 void recenter_player(void);
 
+void center_water(int,int);
+
 #endif
\ No newline at end of file
diff --git a/hDateien/gameLoop.h b/hDateien/gameLoop.h
index 4a5d9bd1fc82e4942c611def5732ba42910f0a97..4b3e885d5144ced95236c6d305f112d3c65d4530 100644
--- a/hDateien/gameLoop.h
+++ b/hDateien/gameLoop.h
@@ -13,6 +13,7 @@
 #include "file_own.h"
 #include "header.h"
 #include "charac.h"
+#include "bird.h"
 
 
 
diff --git a/hDateien/header.h b/hDateien/header.h
index f41ae3d073c2e620aaf89981d10a19b96bef5032..28a3a974b971d6bddac8992cfb21c9d426272228 100644
--- a/hDateien/header.h
+++ b/hDateien/header.h
@@ -9,6 +9,22 @@ extern SDL_Rect *player;
 extern int playerscore;
 extern int playerhighscore;
 
+enum color{
+    red,
+    blue,
+    green,
+    none
+};
+
+struct bird{
+    int x_pos;
+    int y_pos;
+    int speed;
+    int height;
+    int width;
+    int anim;
+};
+
 enum row{
     grassBright,
     grassDark,
@@ -34,6 +50,7 @@ struct Car{
     int x_pos;
     int width;
     int height;
+    enum color color;
     struct Car *next;
 };
 
@@ -46,6 +63,7 @@ struct Row{
     int y_pos;
     int speed;
     int stone;
+    struct bird *bird;
     struct LinkedList_car *cars;
 
 };
diff --git a/hDateien/init.h b/hDateien/init.h
index 709518da7b4030bed9fdda50b71bf0ac3e2561f9..ace8f6f1e86b8a2b04c46e7651e978486df62162 100644
--- a/hDateien/init.h
+++ b/hDateien/init.h
@@ -40,5 +40,24 @@ extern SDL_Texture *img_stone;
 extern SDL_Texture *img_race_street;
 extern SDL_Texture *img_race_carL;
 extern SDL_Texture *img_race_carR;
+extern SDL_Texture *img_car_blueR;
+extern SDL_Texture *img_car_blueL;
+extern SDL_Texture *img_car_greenR;
+extern SDL_Texture *img_car_greenL;
+extern SDL_Texture *img_bird0;
+extern SDL_Texture *img_bird1;
+extern SDL_Texture *img_bird2;
+extern SDL_Texture *img_bird3;
+extern SDL_Texture *img_bird4;
+extern SDL_Texture *img_bird5;
+extern SDL_Texture *img_bird6;
+extern SDL_Texture *img_bird7;
+extern SDL_Texture *img_bird_sit0;
+extern SDL_Texture *img_bird_sit1;
+extern SDL_Texture *img_bird_sit2;
+extern SDL_Texture *img_bird_sit3;
+extern SDL_Texture *img_bird_sit4;
+
+
 
 #endif
\ No newline at end of file
diff --git a/hDateien/map.h b/hDateien/map.h
index 3618715a84cb6c52cbade8ec1e6814fead3e7add..d16bd8285cbe9a977620bbeb2414bf3e128f0009 100644
--- a/hDateien/map.h
+++ b/hDateien/map.h
@@ -11,7 +11,7 @@
 //#include "gameLoop.h"
 #include "output.h"
 #include "charac.h"
-
+#include "bird.h"
 #include "header.h"
 
 //Declaration of functions
diff --git a/hDateien/output.h b/hDateien/output.h
index 1910ed21dbc0e46e2b2f00f8d47c95808e9733c0..b3fe993cfbb17eb4fac5d9a88ad1f1e2daf07db1 100644
--- a/hDateien/output.h
+++ b/hDateien/output.h
@@ -19,8 +19,8 @@
 //Declaration of functions
 int paste_stone(SDL_Renderer*,int,int);
 int paste_row(SDL_Renderer*, int , enum row);
-int paste_car(SDL_Renderer*, int, int, int, int,int,enum vehicle);
+int paste_car(SDL_Renderer*, int, int, int, int,int,enum vehicle,enum color);
 int paste_score (SDL_Renderer*);
-
+int paste_bird(SDL_Renderer*,int,int,int,int,int);
 
 #endif
diff --git a/hDateien/rows.h b/hDateien/rows.h
index 07d2a7c721a6252aebfd19eae21ea6d675d8a203..b637cbbd08e5e6553212ef6f873294ae58615816 100644
--- a/hDateien/rows.h
+++ b/hDateien/rows.h
@@ -8,9 +8,10 @@
 //#include "gameLoop.h"
 #include "auto.h"
 //#include "main.h"
-
+#include "bird.h"
 #include "header.h"
 
+
 //Declaration of functions
 
 int gen_stone();
diff --git a/images/bird0.png b/images/bird0.png
new file mode 100644
index 0000000000000000000000000000000000000000..c567b18d30bbf01d0ad04534102d304d40b2c764
Binary files /dev/null and b/images/bird0.png differ
diff --git a/images/bird1.png b/images/bird1.png
new file mode 100644
index 0000000000000000000000000000000000000000..8a4cf79cc92373aff1c95b0e4a075e81cbb25c0c
Binary files /dev/null and b/images/bird1.png differ
diff --git a/images/bird2.png b/images/bird2.png
new file mode 100644
index 0000000000000000000000000000000000000000..1565e39d0adc01579700786013307d6aff6d9175
Binary files /dev/null and b/images/bird2.png differ
diff --git a/images/bird3.png b/images/bird3.png
new file mode 100644
index 0000000000000000000000000000000000000000..d4d1c0a8cdd039a48c62beccc8f689b20fa30494
Binary files /dev/null and b/images/bird3.png differ
diff --git a/images/bird4.png b/images/bird4.png
new file mode 100644
index 0000000000000000000000000000000000000000..7dbf85bd92dc10d5b44a249e64454722239945a2
Binary files /dev/null and b/images/bird4.png differ
diff --git a/images/bird5.png b/images/bird5.png
new file mode 100644
index 0000000000000000000000000000000000000000..56d7a3fde3a89b3c6da35eebb47768e51de5b8f4
Binary files /dev/null and b/images/bird5.png differ
diff --git a/images/bird6.png b/images/bird6.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d0dca61ee3e3ce17f47bf3854badef1730c925d
Binary files /dev/null and b/images/bird6.png differ
diff --git a/images/bird7.png b/images/bird7.png
new file mode 100644
index 0000000000000000000000000000000000000000..95b47567b0f8df31521bde8a943fa064d9c432ac
Binary files /dev/null and b/images/bird7.png differ
diff --git a/images/bird_sit0.png b/images/bird_sit0.png
new file mode 100644
index 0000000000000000000000000000000000000000..4806e16e8421b6b6f2b07971576dfd0bab9553cf
Binary files /dev/null and b/images/bird_sit0.png differ
diff --git a/images/bird_sit1.png b/images/bird_sit1.png
new file mode 100644
index 0000000000000000000000000000000000000000..259c057ffa81a39bff7f26ed90b257c9d93b2796
Binary files /dev/null and b/images/bird_sit1.png differ
diff --git a/images/bird_sit2.png b/images/bird_sit2.png
new file mode 100644
index 0000000000000000000000000000000000000000..e43fea08f6772384063471021d9ec6015dd0f34a
Binary files /dev/null and b/images/bird_sit2.png differ
diff --git a/images/bird_sit3.png b/images/bird_sit3.png
new file mode 100644
index 0000000000000000000000000000000000000000..d5b3691d036a85e4be476131ff0681a8bb97caaf
Binary files /dev/null and b/images/bird_sit3.png differ
diff --git a/images/bird_sit4.png b/images/bird_sit4.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ed1eb26dd7de73f3d0514e2a45245f957854c5e
Binary files /dev/null and b/images/bird_sit4.png differ
diff --git a/images/carLeft_blue.png b/images/carLeft_blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..c46b734853e1fee682e2bcd54d5070e556670f16
Binary files /dev/null and b/images/carLeft_blue.png differ
diff --git a/images/carLeft_green.png b/images/carLeft_green.png
new file mode 100644
index 0000000000000000000000000000000000000000..f0946bdfc02836bf39d641d3742c680a90116f62
Binary files /dev/null and b/images/carLeft_green.png differ
diff --git a/images/carRight_blue.png b/images/carRight_blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..22de8a910cf72dc7bb942f3dcbc9cfb0c8354e78
Binary files /dev/null and b/images/carRight_blue.png differ
diff --git a/images/carRight_green.png b/images/carRight_green.png
new file mode 100644
index 0000000000000000000000000000000000000000..a8b9ff3a2c32c2cbc942de53334d630b474ba1c0
Binary files /dev/null and b/images/carRight_green.png differ
diff --git a/init.c b/init.c
index 9b79a4f43e5c3060ccfa8262c9a006b9203fecd4..11f1d59546a3d562d75bca70f329ee5bf580def5 100644
--- a/init.c
+++ b/init.c
@@ -25,6 +25,24 @@ SDL_Texture *img_stone;
 SDL_Texture *img_race_street;
 SDL_Texture *img_race_carL;
 SDL_Texture *img_race_carR;
+SDL_Texture *img_car_blueR; // Quelle: https://www.clipartmax.com/max/m2H7G6d3m2N4i8G6/
+SDL_Texture *img_car_blueL;
+SDL_Texture *img_car_greenR;
+SDL_Texture *img_car_greenL;
+SDL_Texture *img_bird0; // Quelle: https://ma9ici4n.itch.io/pixel-art-bird-16x16
+SDL_Texture *img_bird1;
+SDL_Texture *img_bird2;
+SDL_Texture *img_bird3;
+SDL_Texture *img_bird4;
+SDL_Texture *img_bird5;
+SDL_Texture *img_bird6;
+SDL_Texture *img_bird7;
+SDL_Texture *img_bird_sit0;
+SDL_Texture *img_bird_sit1;
+SDL_Texture *img_bird_sit2;
+SDL_Texture *img_bird_sit3;
+SDL_Texture *img_bird_sit4;
+
 TTF_Font* font;
 
 SDL_Window* init_window(){
@@ -93,10 +111,28 @@ int init_images(SDL_Renderer* renderer) {
     img_plank = IMG_LoadTexture(renderer,"images/plank.png"); // Quelle: https://www.craiyon.com/image/_XEsXKthRYqpK8Vn6ZixAg
     img_duck = IMG_LoadTexture(renderer,"images/duck.png"); 
     img_3D_Duck = IMG_LoadTexture(renderer,"images/3D_Duck.png");
-    img_stone = IMG_LoadTexture(renderer,"images/stone.png");
+    img_stone = IMG_LoadTexture(renderer,"images/stone.png"); // Quelle: https://www.vecteezy.com/vector-art/22285554-stones-in-pixel-art-style
     img_race_street = IMG_LoadTexture(renderer,"images/race_street.jpg");
-    img_race_carL = IMG_LoadTexture(renderer,"images/race_carL.png");
+    img_race_carL = IMG_LoadTexture(renderer,"images/race_carL.png"); // Quelle: https://www.vecteezy.com/vector-art/33530269-pixel-art-illustration-f1-car-pixelated-race-f1-car-f1-car-race-vehicle-pixelated-for-the-pixel-art-game-and-icon-for-website-and-video-game-old-school-retro
     img_race_carR = IMG_LoadTexture(renderer,"images/race_carR.png");
+    img_car_blueL = IMG_LoadTexture(renderer,"images/carLeft_blue.png");
+    img_car_blueR = IMG_LoadTexture(renderer,"images/carRight_blue.png");
+    img_car_greenR = IMG_LoadTexture(renderer,"images/carRight_green.png");
+    img_car_greenL = IMG_LoadTexture(renderer,"images/carLeft_green.png");
+    img_bird0 = IMG_LoadTexture(renderer,"images/bird0.png");
+    img_bird1 = IMG_LoadTexture(renderer,"images/bird1.png");
+    img_bird2 = IMG_LoadTexture(renderer,"images/bird2.png");
+    img_bird3 = IMG_LoadTexture(renderer,"images/bird3.png");
+    img_bird4 = IMG_LoadTexture(renderer,"images/bird4.png");
+    img_bird5 = IMG_LoadTexture(renderer,"images/bird5.png");
+    img_bird6 = IMG_LoadTexture(renderer,"images/bird6.png");
+    img_bird7 = IMG_LoadTexture(renderer,"images/bird7.png");
+    img_bird_sit0 = IMG_LoadTexture(renderer,"images/bird_sit0.png");
+    img_bird_sit1 = IMG_LoadTexture(renderer,"images/bird_sit1.png");
+    img_bird_sit2 = IMG_LoadTexture(renderer,"images/bird_sit2.png");
+    img_bird_sit3 = IMG_LoadTexture(renderer,"images/bird_sit3.png");
+    img_bird_sit4 = IMG_LoadTexture(renderer,"images/bird_sit4.png");
+
 
      //Initiierung der Bilder
     int flags = IMG_INIT_PNG | IMG_INIT_JPG;
@@ -148,6 +184,23 @@ int exitGame(SDL_Renderer* renderer, SDL_Window* window) {
     SDL_DestroyTexture(img_race_street);
     SDL_DestroyTexture(img_race_carL);
     SDL_DestroyTexture(img_race_carR);
+    SDL_DestroyTexture(img_car_blueL);
+    SDL_DestroyTexture(img_car_blueR);
+    SDL_DestroyTexture(img_car_greenR);
+    SDL_DestroyTexture(img_car_greenL);
+    SDL_DestroyTexture(img_bird0);
+    SDL_DestroyTexture(img_bird1);
+    SDL_DestroyTexture(img_bird2);
+    SDL_DestroyTexture(img_bird3);
+    SDL_DestroyTexture(img_bird4);
+    SDL_DestroyTexture(img_bird5);
+    SDL_DestroyTexture(img_bird6);
+    SDL_DestroyTexture(img_bird7);
+    SDL_DestroyTexture(img_bird_sit0);
+    SDL_DestroyTexture(img_bird_sit1);
+    SDL_DestroyTexture(img_bird_sit2);
+    SDL_DestroyTexture(img_bird_sit3);
+    SDL_DestroyTexture(img_bird_sit4);
     TTF_CloseFont(font);
 
     SDL_Quit();
diff --git a/map.c b/map.c
index a1df89b491fe9c6bafe8dcaddee24f44f4a6e68d..fa66bcfe890b45b76330af15ca52da6d2df2d83e 100644
--- a/map.c
+++ b/map.c
@@ -124,17 +124,24 @@ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list, SDL_Rendere
                     playerscore--;
                 }else if(last_move == 5){
                     player->y += ROW_SIZE;
-			        player->x += ROW_SIZE;
+                    player->x += ROW_SIZE;
                     playerscore--;
                 }else if(last_move == 6){
                     player->y += ROW_SIZE;
-			        player->x -= ROW_SIZE;
+                    player->x -= ROW_SIZE;
                     playerscore--;
                 }
-                
             }
         }
 
+        if (cur->bird != NULL){
+            if (cur->bird->anim == 0 && ((abs(player->y - cur->bird->y_pos) < 2*ROW_SIZE) && (abs(player->x - cur->bird->x_pos) < 2*ROW_SIZE))) 
+                cur->bird->anim++;
+            move_bird(renderer,cur->bird,delta_y);
+            //paste_bird(renderer,cur->bird->x_pos,cur->bird->y_pos,cur->bird->height,cur->width,cur->bird->anim);
+            
+        }
+
         if (cur->y_pos <= player->y && player->y <= cur->y_pos + ROW_SIZE 
             && (cur->row_type == waterBrightSingle || cur->row_type == waterBrightMultiple ||
                 cur->row_type == waterDarkSingle || cur->row_type == waterDarkMultiple)){
@@ -203,6 +210,9 @@ void free_map(struct LinkedList *map){
         if (temp->cars != NULL){
             free_car(temp);
         }
+        if (temp->bird != NULL){
+            free(temp->bird);
+        }
         free(temp);
     }
 
diff --git a/output.c b/output.c
index 41fe92540f6b36954114dd467a2c0e8d9827d2af..74e50d92e2e163eda2a6a4948fade04588c28ed5 100644
--- a/output.c
+++ b/output.c
@@ -82,7 +82,7 @@ int paste_row(SDL_Renderer* renderer, int y, enum row row_type){
 
 //V renderer exists, correct x, y coordinates and width and height and speed and type of car is passed on
 //N: car is set to correct variables and displayed in renderer with correct image and direction 
-int paste_car(SDL_Renderer* renderer, int x, int y, int width, int height,int speed,enum vehicle type) {
+int paste_car(SDL_Renderer* renderer, int x, int y, int width, int height,int speed,enum vehicle type,enum color color) {
     //Prevents cars from being displayed at the wrong position 
     int offset = 20;
 
@@ -109,20 +109,48 @@ int paste_car(SDL_Renderer* renderer, int x, int y, int width, int height,int sp
             }
             return(0);
     }else if(type == car){
-        if (speed > 0) {
-            if (SDL_RenderCopy(renderer, img_car_trans, NULL, &rect) != 0) {
-                SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
-                return(1);
-            }  
-            return(0);  
-        }else {    
-            if (SDL_RenderCopy(renderer, img_carLeft_trans, NULL, &rect) != 0) {
-                SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
-                return(1);
-            } 
+        if (color == red){
+            if (speed > 0) {
+                if (SDL_RenderCopy(renderer, img_car_trans, NULL, &rect) != 0) {
+                    SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                    return(1);
+                }  
+                return(0);  
+            }else {    
+                if (SDL_RenderCopy(renderer, img_carLeft_trans, NULL, &rect) != 0) {
+                    SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                    return(1);
+                } 
+            }
+        }else if (color == blue){
+            if (speed > 0) {
+                if (SDL_RenderCopy(renderer, img_car_blueR, NULL, &rect) != 0) {
+                    SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                    return(1);
+                }  
+                return(0);  
+            }else {    
+                if (SDL_RenderCopy(renderer, img_car_blueL, NULL, &rect) != 0) {
+                    SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                    return(1);
+                } 
+            }
+
             return(0);
+        }else if (color == green){
+            if (speed > 0) {
+                if (SDL_RenderCopy(renderer, img_car_greenR, NULL, &rect) != 0) {
+                    SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                    return(1);
+                }  
+                return(0);  
+            }else {    
+                if (SDL_RenderCopy(renderer, img_car_greenL, NULL, &rect) != 0) {
+                    SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                    return(1);
+                } 
+            }return(0);
         }
-
     }else if(type == race_car){
 
         if (speed > 0){
@@ -223,3 +251,67 @@ int paste_score (SDL_Renderer* renderer) {
     SDL_DestroyTexture(Message);
     return 0;    
 }
+
+
+int paste_bird(SDL_Renderer* renderer,int x_pos,int y_pos,int height,int width,int anim){
+
+    SDL_Rect rect = {
+                .x = x_pos,
+                .y = y_pos, 
+                .w = height,
+                .h = width};
+    if (anim == 0){
+        if (SDL_RenderCopy(renderer, img_bird_sit0, NULL, &rect) != 0) {
+                SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                return(1);
+            }
+    }else if (anim <= 1){
+
+        if (SDL_RenderCopy(renderer, img_bird0, NULL, &rect) != 0) {
+                SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                return(1);
+            }
+    }else if (anim <= 3){
+        if (SDL_RenderCopy(renderer, img_bird1, NULL, &rect) != 0) {
+                SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                return(1);
+            }
+    }else if (anim <= 5){
+        if (SDL_RenderCopy(renderer, img_bird2, NULL, &rect) != 0) {
+                SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                return(1);
+            }
+    }else if (anim <= 7){
+        if (SDL_RenderCopy(renderer, img_bird3, NULL, &rect) != 0) {
+                SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                return(1);
+            }
+    }else if (anim <= 9){
+        if (SDL_RenderCopy(renderer, img_bird4, NULL, &rect) != 0) {
+                SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                return(1);
+            }
+    }else if(anim <= 11){
+        if (SDL_RenderCopy(renderer, img_bird5, NULL, &rect) != 0) {
+                SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                return(1);
+            }
+    }else if(anim <= 13){
+        if (SDL_RenderCopy(renderer, img_bird6, NULL, &rect) != 0) {
+                SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                return(1);
+            }
+    }else if(anim <= 15){
+        if (SDL_RenderCopy(renderer, img_bird7, NULL, &rect) != 0) {
+                SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                return(1);
+            }
+    }else if(anim <= 17){
+        if (SDL_RenderCopy(renderer, img_bird_sit0, NULL, &rect) != 0) {
+                SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError());
+                return(1);
+            }
+    }
+
+    return(0);
+}
\ No newline at end of file
diff --git a/rows.c b/rows.c
index 11b7d323e81186ab0b99df0baeb16fec318936d7..5186ed1ff3126549847870dff7dfd227df4478aa 100644
--- a/rows.c
+++ b/rows.c
@@ -17,7 +17,7 @@ struct Row *race(int y_pos){
     n->speed =  (((rand()%2) * 2) -1) * 16;
     n->cars = init_car_list(n->speed,(900-n->speed) % 900,race_car);
     n->stone = -1;
-
+    n->bird = NULL;
     return(n);
 }
 
@@ -38,13 +38,23 @@ struct Row* grass(bool dark,bool gold,int y_pos){
             n->row_type = grassDark;      
         }
         n->stone = -1;
+        n->bird = NULL;
     }else{
         if (dark){
             n->row_type = grassDark;  
         }else{
             n->row_type = grassBright;
         }
-        n->stone = gen_stone();
+
+        int p = rand() % 10;
+        if (p < 5){
+            n->stone = gen_stone();
+            n->bird = NULL;
+        }else{
+            p = (rand() % 10) * ROW_SIZE;
+            n->bird = init_bird(p,y_pos);
+            n->stone = -1;
+        }
     }
     n->y_pos = y_pos;
     n->cars = NULL;
@@ -71,6 +81,7 @@ struct Row* street(bool first,int y_pos){
     n->speed =  (((rand()%2) * 2) -1) * ((rand()%3)+2);
     n->cars = init_car_list(n->speed,(900-n->speed) % 900,car);
     n->stone = -1;
+    n->bird = NULL;
     return(n);
 }
 //Vorbedingung: -200<=y_pos<=1000
@@ -88,6 +99,7 @@ struct Row* track(int y_pos){
     n->speed = 7 *(((rand()%2)*2)-1);
     n->cars = init_car_list(n->speed,(SCREEN_WIDTH-n->speed) % SCREEN_WIDTH,train);
     n->stone = -1;
+    n->bird = NULL;
     return(n);
 }
 
@@ -119,6 +131,7 @@ struct Row* water(bool first,bool dark,int y_pos){
     n->speed = 2 *(((rand()%2)*2)-1);
     n->cars = init_car_list(n->speed,(SCREEN_WIDTH-n->speed)%SCREEN_WIDTH,boat);
     n->stone = -1;
+    n->bird = NULL;
 
     return(n);
 }
@@ -205,7 +218,7 @@ struct Row* init_row(struct Row *m){
         }
 
     // Nach einer Straße kommt mit einer Wahrschinlichkeit von:
-    // 2/3 => Gras
+    // 2/5 => Gras
     // 3/5 => Straße
     }else if (m->row_type == streetSingle || m->row_type == streetMultiple){