diff --git a/travail_de_groupe/chef_oeuvre/Res/fire.png b/travail_de_groupe/chef_oeuvre/Res/fire.png
new file mode 100755
index 0000000000000000000000000000000000000000..44369269dee3f3da30af668681c4613d1822b20e
Binary files /dev/null and b/travail_de_groupe/chef_oeuvre/Res/fire.png differ
diff --git a/travail_de_groupe/chef_oeuvre/map.txt b/travail_de_groupe/chef_oeuvre/map.txt
index b0f58501d0a50ef7e8b4d80d6cd5f77d734046da..cfd451b26db099bb036f41da76b8a9cb238c16d2 100644
--- a/travail_de_groupe/chef_oeuvre/map.txt
+++ b/travail_de_groupe/chef_oeuvre/map.txt
@@ -1,10 +1,10 @@
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
diff --git a/travail_de_groupe/chef_oeuvre/src/main.c b/travail_de_groupe/chef_oeuvre/src/main.c
index c94127751afde4c7a3876f34266bd451292b761b..d614bddfb4a48fd373628e8c3497125115224e9d 100644
--- a/travail_de_groupe/chef_oeuvre/src/main.c
+++ b/travail_de_groupe/chef_oeuvre/src/main.c
@@ -8,8 +8,5 @@ int main(){
     running = 1;
     gameState = MENU;
     readMapFromFile("map.txt");
-    initPlayer();
-
     mainLoop();
-
 } 
\ No newline at end of file
diff --git a/travail_de_groupe/chef_oeuvre/src/player.c b/travail_de_groupe/chef_oeuvre/src/player.c
index 4f99716c03498b4d1c1c41bc89bfbfde66924461..92e4f572490653856233d111a7ee48c3781139b5 100644
--- a/travail_de_groupe/chef_oeuvre/src/player.c
+++ b/travail_de_groupe/chef_oeuvre/src/player.c
@@ -2,42 +2,126 @@
 
 player_t player;
 
+
 void initPlayer(){
-    player.x = 0;
+    player.x = 18*32;
     player.y = 0;
+    player.w = CELLSIZE*0.8;
+    player.h = CELLSIZE*0.8;
     player.waterLevel = 0;
     player.speed = 1;
+    player.isMoving = 0;
+}
+
+int giveCaseBelowPosition(int x, int y){
+    int x2 = x/CELLSIZE;
+    int y2 = y/CELLSIZE;
+    return map[y2][x2];
+}
+
+int collisionsLeftPlayer(){
+    int collision = 0;
+    int dotTopLeft = giveCaseBelowPosition(player.x, player.y);
+    int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h);
+    //collision window
+    if(player.x <= 0){
+        collision = 1;
+    }
+    //collision tree
+    if(dotTopLeft==1 || dotDownLeft==1){
+        collision = 1;
+    }
+
+    return collision;
+}
+
+int collisionsRightPlayer(){
+    int collision = 0;
+    int dotTopRight = giveCaseBelowPosition(player.x+player.w, player.y);
+    int dotDownRight = giveCaseBelowPosition(player.x+player.w, player.y+player.h);
+    //collision window
+    if(player.x + player.w >= MAPSIZE * CELLSIZE){
+        collision = 1;
+    }
+    //collision tree
+    if(dotTopRight==1 || dotDownRight==1){
+        collision = 1;
+    }
+    return collision;
+}
+
+int collisionsUpPlayer(){
+    int collision = 0;
+    int dotTopRight = giveCaseBelowPosition(player.x+player.w, player.y);
+    int dotTopLeft = giveCaseBelowPosition(player.x, player.y);
+    //collision window
+    if(player.y <= 0){
+        collision = 1;
+    }
+    //collision tree
+    if(dotTopRight==1 || dotTopLeft==1){
+        collision = 1;
+    }
+    return collision;
+}
+
+int collisionsDownPlayer(){
+    int collision = 0;
+    int dotDownRight = giveCaseBelowPosition(player.x+player.w, player.y+player.h);
+    int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h);
+    //collision window
+    if(player.y + player.h >= MAPSIZE * CELLSIZE){
+        collision = 1;
+    }
+    //collision tree
+    if(dotDownRight==1 || dotDownLeft==1){
+        collision = 1;
+    }
+    return collision;
 }
 
 void moveRightPlayer(){
-    player.x = player.x + player.speed;
+    if(!collisionsRightPlayer()){
+        player.x = player.x + player.speed;
+    }
 }
 
 void moveLeftPlayer(){
-    player.x = player.x - player.speed;
+    if(!collisionsLeftPlayer()){
+        player.x = player.x - player.speed;
+    }
 }
 
 void moveUpPlayer(){
-    player.y = player.y - player.speed;
+    if(!collisionsUpPlayer()){
+        player.y = player.y - player.speed;
+    }
 }
 
 void moveDownPlayer(){
-    player.y = player.y + player.speed;
+    if(!collisionsDownPlayer()){
+        player.y = player.y + player.speed;
+    }
 }
 
 void manageMovement(){
     if(keys[PLAYER_UP]){
         moveUpPlayer();
+        player.isMoving = 1;
     }
-    if(keys[PLAYER_DOWN] == 1){
+    if(keys[PLAYER_DOWN]){
         moveDownPlayer();
+        player.isMoving = 1;
     }
-    if(keys[PLAYER_LEFT] == 1){
+    if(keys[PLAYER_LEFT]){
         moveLeftPlayer();
+        player.isMoving = 1;
     }
-    if(keys[PLAYER_RIGHT] == 1){
+    if(keys[PLAYER_RIGHT]){
         moveRightPlayer();
+        player.isMoving = 1;
     }
+    player.isMoving = 0;
 }
 
 int selectStateHover(){
diff --git a/travail_de_groupe/chef_oeuvre/src/player.h b/travail_de_groupe/chef_oeuvre/src/player.h
index 4f8791242356c2fac3238982e1671e11d3397982..8dda417ec6b48cac57240a0dc79a26c8748e4575 100644
--- a/travail_de_groupe/chef_oeuvre/src/player.h
+++ b/travail_de_groupe/chef_oeuvre/src/player.h
@@ -12,8 +12,11 @@
 typedef struct player{
     int x;
     int y;
+    int w;
+    int h;
     int waterLevel;
     int speed;
+    int isMoving;
 } player_t;
 
 extern player_t player;
diff --git a/travail_de_groupe/chef_oeuvre/src/render.c b/travail_de_groupe/chef_oeuvre/src/render.c
index 9f1b2f862f2e8cfa4d70395cd7ac08385a274146..0f1adc2be3369f5aa754b479c86a055ec4616a96 100644
--- a/travail_de_groupe/chef_oeuvre/src/render.c
+++ b/travail_de_groupe/chef_oeuvre/src/render.c
@@ -143,6 +143,7 @@ void drawGame(){
 
 void mainLoop(){
     createWindow();
+    initPlayer();
 
     grassSurface = IMG_Load("Res/grass.png");
     grassTexture = SDL_CreateTextureFromSurface(renderer, grassSurface);