diff --git a/travail_de_groupe/chef_oeuvre/src/fire.c b/travail_de_groupe/chef_oeuvre/src/fire.c
index 61289d5cbc08e62603c62e46da4c5877bfc4b9f0..1ad72f870db3bd0d3c4d43ebbea64531f5a61115 100644
--- a/travail_de_groupe/chef_oeuvre/src/fire.c
+++ b/travail_de_groupe/chef_oeuvre/src/fire.c
@@ -55,7 +55,7 @@ listchainfire_t startFire(listchainfire_t listFire,int numberFire, int mapSize){
             xFire= rand()%mapSize;
 
             yFire= rand()%mapSize;
-            printf("xf:%d,yf:%d\n",xFire,yFire);
+            //printf("xf:%d,yf:%d\n",xFire,yFire);
             fire.x= xFire;
             fire.y= yFire; 
             fire.state=1;
@@ -132,7 +132,7 @@ void travelFire(listchainfire_t listFire){
     listchainfire_t listTemporary=listFire;
 
     while(listTemporary!=NULL){
-        printf("x:%d,y:%d\n",(listTemporary->fire).x,(listTemporary->fire).y);
+        //printf("x:%d,y:%d\n",(listTemporary->fire).x,(listTemporary->fire).y);
         listTemporary=listTemporary->next;
     }
     //freeListFire(listTemporary);
@@ -185,8 +185,8 @@ void nextFire(listchainfire_t listFire){
         else if ((pMedium<=probability)&&(probability<pStrong)){(listTemporary->fire).state=STRONG;}
         else {(listTemporary->fire).state=SPREAD;}
 
-        printf("%d %d\n", probability, state);
-        printf("%d %d %d %d\n", pDead, pSparkle, pMedium, pStrong);
+        //printf("%d %d\n", probability, state);
+        //printf("%d %d %d %d\n", pDead, pSparkle, pMedium, pStrong);
 
         listTemporary=listTemporary->next;   
     }
diff --git a/travail_de_groupe/chef_oeuvre/src/player.c b/travail_de_groupe/chef_oeuvre/src/player.c
index 865f3a155734ad29523334da798fcb11935dac56..4b31b13658baf42e3e5aa0ee0fd5b3c0cde27de4 100644
--- a/travail_de_groupe/chef_oeuvre/src/player.c
+++ b/travail_de_groupe/chef_oeuvre/src/player.c
@@ -12,6 +12,9 @@ void initPlayer(){
     player.currentWater = player.waterMax;
     player.speed = 1;
     player.isMoving = 0;
+    player.HPMax = 3;
+    player.currentHP = player.HPMax;
+    player.invisible = 0;
 }
 
 int giveCaseBelowPosition(int x, int y){
@@ -20,22 +23,45 @@ int giveCaseBelowPosition(int x, int y){
     return map[y2][x2];
 }
 
+int getPositionXInMap(int x){
+    int x2 = x/CELLSIZE;
+    return x2;
+}
+
+int getPositionYInMap(int y){
+    int y2 = y/CELLSIZE;
+    return y2;
+}
+
+int checkCollisionsTree(int dot1, int dot2){
+    int coll = 0;
+    if(dot1==1 || dot2==1){
+        coll = 1;
+    }
+    return coll;
+}
+
 int collisionsLeftPlayer(){
     int collision = 0;
     int dotTopLeft = giveCaseBelowPosition(player.x, player.y);
     int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h);
+    int fireTopLeft = searchFire(fireList, getPositionXInMap(player.x), getPositionYInMap(player.y));
+    int fireDownLeft = searchFire(fireList, getPositionXInMap(player.x), getPositionYInMap(player.y+player.h));
     //collision window
     if(player.x <= 0){
         collision = 1;
     }
     //collision tree
-    if(dotTopLeft==1 || dotDownLeft==1){
-        collision = 1;
-    }
+    collision = checkCollisionsTree(dotTopLeft, dotDownLeft);
     //collision water
     if(dotTopLeft==2 || dotDownLeft==2){
         collision = 1;
     }
+    //collision fire
+    if((fireTopLeft==1 || fireDownLeft==1) && player.invisible==0){
+        player.currentHP = player.currentHP - 1;
+        player.invisible = 1;
+    }
     return collision;
 }
 
@@ -43,18 +69,23 @@ 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);
+    int fireTopRight = searchFire(fireList, getPositionXInMap(player.x+player.w), getPositionYInMap(player.y));
+    int fireDownRight = searchFire(fireList, getPositionXInMap(player.x+player.w), getPositionYInMap(player.y+player.h));
     //collision window
     if(player.x + player.w >= MAPSIZE * CELLSIZE){
         collision = 1;
     }
     //collision tree
-    if(dotTopRight==1 || dotDownRight==1){
-        collision = 1;
-    }
+    collision = checkCollisionsTree(dotTopRight, dotDownRight);
     //collision water
     if(dotTopRight==2 || dotDownRight==2){
         collision = 1;
     }
+    //collision fire
+    if((fireTopRight==1 || fireDownRight==1) && player.invisible==0){
+        player.currentHP = player.currentHP - 1;
+        player.invisible = 1;
+    }
     return collision;
 }
 
@@ -62,6 +93,8 @@ int collisionsUpPlayer(){
     int collision = 0;
     int dotTopRight = giveCaseBelowPosition(player.x+player.w, player.y);
     int dotTopLeft = giveCaseBelowPosition(player.x, player.y);
+    int fireTopRight = searchFire(fireList, getPositionXInMap(player.x+player.w), getPositionYInMap(player.y));
+    int fireTopLeft = searchFire(fireList, getPositionXInMap(player.x), getPositionYInMap(player.y));
     //collision window
     if(player.y <= 0){
         collision = 1;
@@ -74,6 +107,11 @@ int collisionsUpPlayer(){
     if(dotTopRight==2 || dotTopLeft==2){
         collision = 1;
     }
+    //collision fire
+    if((fireTopRight==1 || fireTopLeft==1) && player.invisible==0){
+        player.currentHP = player.currentHP - 1;
+        player.invisible = 1;
+    }
     return collision;
 }
 
@@ -81,6 +119,8 @@ 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);
+    int fireDownRight = searchFire(fireList, getPositionXInMap(player.x+player.w), getPositionYInMap(player.y+player.h));
+    int fireDownLeft = searchFire(fireList, getPositionXInMap(player.x), getPositionYInMap(player.y+player.h));
     //collision window
     if(player.y + player.h >= MAPSIZE * CELLSIZE){
         collision = 1;
@@ -93,6 +133,11 @@ int collisionsDownPlayer(){
     if(dotDownRight==2 || dotDownLeft==2){
         collision = 1;
     }
+    //collision fire
+    if((fireDownRight==1 || fireDownLeft==1) && player.invisible==0){
+        player.currentHP = player.currentHP - 1;
+        player.invisible = 1;
+    }
     return collision;
 }
 
diff --git a/travail_de_groupe/chef_oeuvre/src/player.h b/travail_de_groupe/chef_oeuvre/src/player.h
index 387cf001c1dcde003a376e123739a23e158ebbbe..99afb10515bfd45c50cb4ac0bcea314d95f74cb0 100644
--- a/travail_de_groupe/chef_oeuvre/src/player.h
+++ b/travail_de_groupe/chef_oeuvre/src/player.h
@@ -19,6 +19,9 @@ typedef struct player{
     int speed;
     int isMoving;
     int direction;
+    int HPMax;
+    int currentHP;
+    int invisible;
 } 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 035f2bee00a528b99dc2fc98a4c57e85510ecd26..d2a217e5ac0498d594e0b7b9d8f149289757a097 100644
--- a/travail_de_groupe/chef_oeuvre/src/render.c
+++ b/travail_de_groupe/chef_oeuvre/src/render.c
@@ -250,7 +250,7 @@ void drawScore(){
     SDL_RenderCopy(renderer, scoreTexture, NULL, &rect);
     rect.y += rect.h;
     char str[10];
-    sprintf(str, "%d", score);
+    //sprintf(str, "%d", score);
     SDL_Color textColor = {237,222,17};
     SDL_Surface * surface = TTF_RenderText_Solid(robotoFont, str, textColor);
     SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, surface);
@@ -348,9 +348,9 @@ void mainLoop(){
         delta = (a - b);
         if (delta > 1000/FPS_TO_GET){
             timer += delta;
-            printf("timer : %f\n", timer/1000);
+            //printf("timer : %f\n", timer/1000);
             b = a;
-            printf("fps : %f", 1000/delta);
+            //printf("fps : %f", 1000/delta);
             switch (gameState){
                 case MENU:
                     drawMenu();