diff --git a/travail_de_groupe/chef_oeuvre/Res/buttonPlayAgain.png b/travail_de_groupe/chef_oeuvre/Res/buttonPlayAgain.png
new file mode 100755
index 0000000000000000000000000000000000000000..4e1a604f96562b6bca91838ac1883635d48bf792
Binary files /dev/null and b/travail_de_groupe/chef_oeuvre/Res/buttonPlayAgain.png differ
diff --git a/travail_de_groupe/chef_oeuvre/Res/buttonPlayAgainHover.png b/travail_de_groupe/chef_oeuvre/Res/buttonPlayAgainHover.png
new file mode 100755
index 0000000000000000000000000000000000000000..46d7bcfee768adfcd777e6ca100a7ac1b319cd0c
Binary files /dev/null and b/travail_de_groupe/chef_oeuvre/Res/buttonPlayAgainHover.png differ
diff --git a/travail_de_groupe/chef_oeuvre/Res/buttonQuit.png b/travail_de_groupe/chef_oeuvre/Res/buttonQuit.png
new file mode 100755
index 0000000000000000000000000000000000000000..8f9dc4f7b4ad18067cebd082f37e13f28128efb1
Binary files /dev/null and b/travail_de_groupe/chef_oeuvre/Res/buttonQuit.png differ
diff --git a/travail_de_groupe/chef_oeuvre/Res/buttonQuitHover.png b/travail_de_groupe/chef_oeuvre/Res/buttonQuitHover.png
new file mode 100755
index 0000000000000000000000000000000000000000..3e9b2abd467c6f9b804cd0b07b190f7b901a4f7b
Binary files /dev/null and b/travail_de_groupe/chef_oeuvre/Res/buttonQuitHover.png differ
diff --git a/travail_de_groupe/chef_oeuvre/Res/heart_spritesheet.png b/travail_de_groupe/chef_oeuvre/Res/heart_spritesheet.png
new file mode 100755
index 0000000000000000000000000000000000000000..b243a9e50a45d451682c1eaaaa598817e528ded9
Binary files /dev/null and b/travail_de_groupe/chef_oeuvre/Res/heart_spritesheet.png differ
diff --git a/travail_de_groupe/chef_oeuvre/Res/lostScreen.png b/travail_de_groupe/chef_oeuvre/Res/lostScreen.png
new file mode 100755
index 0000000000000000000000000000000000000000..bf802aa8b51dca40a8ac3daa9057f6e9be10ef28
Binary files /dev/null and b/travail_de_groupe/chef_oeuvre/Res/lostScreen.png differ
diff --git a/travail_de_groupe/chef_oeuvre/src/gest_event.c b/travail_de_groupe/chef_oeuvre/src/gest_event.c
index 92749b566d57083cf004fb92a5d554e70ce79845..3be92ab575620bc0026087a20c9d7a5250657cc2 100644
--- a/travail_de_groupe/chef_oeuvre/src/gest_event.c
+++ b/travail_de_groupe/chef_oeuvre/src/gest_event.c
@@ -53,7 +53,62 @@ void manageMenu(){
                     continue;
             }
     }
-    manageMovement();
+    SDL_Delay(5);
+}
+
+void manageLost(){
+    SDL_Event event;
+    while (SDL_PollEvent(&event)){
+            switch(event.type)
+            {   
+                case SDL_QUIT:
+                    running = 0;
+                    break;
+
+                case SDL_KEYUP:
+                    switch (event.key.keysym.sym)
+                    {
+                    case SDLK_ESCAPE:
+                        running = 0;
+                        continue;
+
+                    default:
+                        continue;
+                    }
+                    break;
+                
+                case SDL_KEYDOWN:
+                    switch (event.key.keysym.sym)
+                    {
+                    case SDLK_ESCAPE:
+                        running = 0;
+                        continue;
+
+                    default:
+                        continue;
+                    }
+                    break;
+                
+                case SDL_MOUSEMOTION:
+                    mousePosition.x = event.motion.x;
+                    mousePosition.y = event.motion.y;
+                    continue;
+
+
+                case SDL_MOUSEBUTTONDOWN:
+                    if (SDL_PointInRect(&mousePosition, &playAgainButtonRect)){
+                        initAll();
+                        gameState = GAME;
+                    }
+                    if (SDL_PointInRect(&mousePosition, &quitButtonRect)){
+                        running = 0;
+                    }
+                    break;
+
+                default:
+                    continue;
+            }
+    }
     SDL_Delay(5);
 }
 
@@ -140,7 +195,7 @@ void manageGame(){
                     continue;
             }
     }
-    manageMovement();
+    updatePlayer();
     SDL_Delay(5);
 }
 
@@ -149,6 +204,7 @@ void *eventLoop(void *arg){
         switch(gameState){
             case MENU : manageMenu();break;
             case GAME : manageGame();break;
+            case LOSE : manageLost();break;
             default:printf("game state fault");break;
         }
     }
diff --git a/travail_de_groupe/chef_oeuvre/src/main.h b/travail_de_groupe/chef_oeuvre/src/main.h
index a898cd4a75c5e164e4781f6a28deec163f31c3b1..3604248fe8252e88ac6148f5c29f5e03f17cfe1c 100644
--- a/travail_de_groupe/chef_oeuvre/src/main.h
+++ b/travail_de_groupe/chef_oeuvre/src/main.h
@@ -23,6 +23,7 @@
 
 #define MENU 0
 #define GAME 1
+#define LOSE 2
 
 extern int running;
 extern int gameState;
diff --git a/travail_de_groupe/chef_oeuvre/src/player.c b/travail_de_groupe/chef_oeuvre/src/player.c
index a722ebbb7dbefb4a4dd61dd59757a50e20193d90..5143e876b36472dabfc7b207a4a37cc9bae88bb9 100644
--- a/travail_de_groupe/chef_oeuvre/src/player.c
+++ b/travail_de_groupe/chef_oeuvre/src/player.c
@@ -200,4 +200,16 @@ void fillWater(int x, int y){
     }
 }
 
+void updatePlayer(){
+    if (player.currentHP <= 0){
+        gameState = LOSE;
+    }
+    manageMovement();
+}
+
+void initAll(){
+    initFire();
+    initPlayer();
+}
+
 
diff --git a/travail_de_groupe/chef_oeuvre/src/player.h b/travail_de_groupe/chef_oeuvre/src/player.h
index b0b2253d9de191eb31765e0829459949a217cfc4..31e3e59271ea6a999caa92e5a7a3d0d9e7229f7a 100644
--- a/travail_de_groupe/chef_oeuvre/src/player.h
+++ b/travail_de_groupe/chef_oeuvre/src/player.h
@@ -34,5 +34,7 @@ int selectStateHover();
 void pourWater(int, int);
 void fillWater(int, int);
 int giveCaseBelowPosition(int, int);
+void updatePlayer();
+void initAll();
 
 #endif
\ No newline at end of file
diff --git a/travail_de_groupe/chef_oeuvre/src/render.c b/travail_de_groupe/chef_oeuvre/src/render.c
index b633e43b7b8aa4b64aa6db6fcc7ce424accbeae7..2654af017b237092a4e354031184085121f0d28c 100644
--- a/travail_de_groupe/chef_oeuvre/src/render.c
+++ b/travail_de_groupe/chef_oeuvre/src/render.c
@@ -10,6 +10,8 @@ TTF_Font *robotoFont;
 SDL_DisplayMode screenDimension;
 
 SDL_Rect buttonRect;
+SDL_Rect playAgainButtonRect;
+SDL_Rect quitButtonRect;
 
 SDL_Surface * grassSurface;
 SDL_Texture * grassTexture;
@@ -35,12 +37,27 @@ SDL_Texture * backgroundTexture;
 SDL_Surface * backgroundSidesSurface;
 SDL_Texture * backgroundSidesTexture;
 
+SDL_Surface * backgroundLostSurface;
+SDL_Texture * backgroundLostTexture;
+
 SDL_Surface * playButtonSurface;
 SDL_Texture * playButtonTexture;
 
 SDL_Surface * playButtonHoverSurface;
 SDL_Texture * playButtonHoverTexture;
 
+SDL_Surface * playAgainButtonSurface;
+SDL_Texture * playAgainButtonTexture;
+
+SDL_Surface * playAgainButtonHoverSurface;
+SDL_Texture * playAgainButtonHoverTexture;
+
+SDL_Surface * quitButtonSurface;
+SDL_Texture * quitButtonTexture;
+
+SDL_Surface * quitButtonHoverSurface;
+SDL_Texture * quitButtonHoverTexture;
+
 SDL_Surface * fireSurface;
 SDL_Texture * fireTexture;
 
@@ -53,6 +70,9 @@ SDL_Texture * emptyBucketTexture;
 SDL_Surface * filledBucketSurface;
 SDL_Texture * filledBucketTexture;
 
+SDL_Surface * heartSurface;
+SDL_Texture * heartTexture;
+
 SDL_Surface * scoreSurface;
 SDL_Texture * scoreTexture;
 
@@ -65,7 +85,7 @@ void createWindow(){
 
     SDL_GetCurrentDisplayMode(0, &screenDimension);
 
-    window = SDL_CreateWindow("Game Of Life", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, screenDimension.w, screenDimension.h, SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_SHOWN | SDL_WINDOW_FULLSCREEN_DESKTOP);
+    window = SDL_CreateWindow("Mat the Firefighter", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, screenDimension.w, screenDimension.h, SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_SHOWN | SDL_WINDOW_FULLSCREEN_DESKTOP);
 
     if (window == NULL){
         printf("Couldn't create window");
@@ -246,16 +266,24 @@ void drawPlayerHP(){
     SDL_Rect rect;
     rect.h = borderWidth/player.HPMax;
     rect.w = rect.h;
+    SDL_Rect destRect;
+    destRect.w = 1024;
+    destRect.h = 1024;
+    destRect.x = destRect.w * (SDL_GetTicks()/200 % 4);
+    destRect.y = 0;
     int count = player.currentHP;
     for (int i=0; i<player.HPMax; i++){
         rect.x = (i*rect.h);
         rect.y = screenDimension.h - 3 * rect.h;
         if (count){
             count--;
-            SDL_RenderCopy(renderer, filledBucketTexture, NULL, &rect);
+            SDL_RenderCopy(renderer, heartTexture, &destRect, &rect);
         }
         else {
-            SDL_RenderCopy(renderer, emptyBucketTexture, NULL, &rect);
+            SDL_SetTextureColorMod( heartTexture,0,0,0);
+            SDL_RenderCopy(renderer, heartTexture, &destRect, &rect);
+            SDL_SetTextureColorMod( heartTexture,255,255,255);
+
         }
     }
 }
@@ -306,6 +334,20 @@ void drawGame(){
     SDL_RenderPresent(renderer);
 }
 
+
+void drawLost(){
+    SDL_Rect rect;
+    rect.h = screenDimension.h;
+    rect.w = screenDimension.w;
+    rect.x = 0;
+    rect.y = 0;
+    SDL_RenderCopy(renderer, backgroundLostTexture, NULL, &rect);
+    SDL_RenderCopy(renderer, playAgainButtonHoverTexture, NULL, &rect);
+    SDL_RenderCopy(renderer, quitButtonHoverTexture, NULL, &rect);
+    SDL_RenderCopy(renderer, playAgainButtonHoverTexture, NULL, &rect);
+    SDL_RenderPresent(renderer);
+}
+
 void mainLoop(){
     createWindow();
     initPlayer();
@@ -334,12 +376,27 @@ void mainLoop(){
     backgroundSidesSurface = IMG_Load("Res/background_sides.png");
     backgroundSidesTexture = SDL_CreateTextureFromSurface(renderer, backgroundSidesSurface);
 
+    backgroundLostSurface = IMG_Load("Res/lostScreen.png");
+    backgroundLostTexture = SDL_CreateTextureFromSurface(renderer, backgroundLostSurface);
+
     playButtonSurface = IMG_Load("Res/play_button.png");
     playButtonTexture = SDL_CreateTextureFromSurface(renderer, playButtonSurface);
 
     playButtonHoverSurface = IMG_Load("Res/play_button_hover.png");
     playButtonHoverTexture = SDL_CreateTextureFromSurface(renderer, playButtonHoverSurface);
 
+    quitButtonSurface = IMG_Load("Res/buttonQuit.png");
+    quitButtonTexture = SDL_CreateTextureFromSurface(renderer, quitButtonSurface);
+
+    quitButtonHoverSurface = IMG_Load("Res/buttonQuitHover.png");
+    quitButtonHoverTexture = SDL_CreateTextureFromSurface(renderer, quitButtonHoverSurface);
+
+    playAgainButtonSurface = IMG_Load("Res/buttonPlayAgain.png");
+    playAgainButtonTexture = SDL_CreateTextureFromSurface(renderer, playAgainButtonSurface);
+
+    playAgainButtonHoverSurface = IMG_Load("Res/buttonPlayAgainHover.png");
+    playAgainButtonHoverTexture = SDL_CreateTextureFromSurface(renderer, playAgainButtonHoverSurface);
+
     fireSurface = IMG_Load("Res/fire_spritesheet.png");
     fireTexture = SDL_CreateTextureFromSurface(renderer, fireSurface);
 
@@ -355,6 +412,11 @@ void mainLoop(){
     scoreSurface = IMG_Load("Res/score.png");
     scoreTexture = SDL_CreateTextureFromSurface(renderer, scoreSurface);
 
+    heartSurface = IMG_Load("Res/heart_spritesheet.png");
+    heartTexture = SDL_CreateTextureFromSurface(renderer, heartSurface);
+    
+
+
     SDL_FreeSurface(grassSurface);
     SDL_FreeSurface(treeSurface);
     SDL_FreeSurface(hoverSurface);
@@ -369,7 +431,22 @@ void mainLoop(){
     SDL_FreeSurface(emptyBucketSurface);
     SDL_FreeSurface(filledBucketSurface);
     SDL_FreeSurface(scoreSurface);
-
+    SDL_FreeSurface(backgroundLostSurface);
+    SDL_FreeSurface(playAgainButtonSurface);
+    SDL_FreeSurface(quitButtonSurface);
+    SDL_FreeSurface(quitButtonHoverSurface);
+    SDL_FreeSurface(playAgainButtonHoverSurface);
+    SDL_FreeSurface(heartSurface);
+
+    playAgainButtonRect.x = (screenDimension.w * 700)/1920;
+    playAgainButtonRect.y = (screenDimension.h * 615)/1080;
+    playAgainButtonRect.w = (screenDimension.w * 400)/1920;
+    playAgainButtonRect.h = (screenDimension.h * 130)/1080;
+
+    quitButtonRect.x = playAgainButtonRect.x;
+    quitButtonRect.w = playAgainButtonRect.w;
+    quitButtonRect.y = (screenDimension.h * 887)/1080;
+    quitButtonRect.h = playAgainButtonRect.h;
 
     unsigned int a = SDL_GetTicks();
     unsigned int b = SDL_GetTicks();
@@ -399,6 +476,10 @@ void mainLoop(){
                     }
                     drawGame();
                     break;
+
+                case LOSE:
+                    drawLost();
+                    break;
             }
         }
         else {
diff --git a/travail_de_groupe/chef_oeuvre/src/render.h b/travail_de_groupe/chef_oeuvre/src/render.h
index e48f6490fda5bab38584450152ee9c86df4130fd..a66e4e72c449a86699f7d63a720b45ca6bbfec39 100644
--- a/travail_de_groupe/chef_oeuvre/src/render.h
+++ b/travail_de_groupe/chef_oeuvre/src/render.h
@@ -12,6 +12,8 @@ extern SDL_Window *window;
 extern SDL_Renderer *renderer;
 extern SDL_DisplayMode screenDimension;
 extern SDL_Rect buttonRect;
+extern SDL_Rect playAgainButtonRect;
+extern SDL_Rect quitButtonRect;
 extern float timer;
 
 void drawHover(int x, int y);