diff --git a/travail_de_groupe/chef_oeuvre/Res/character_tileset.png b/travail_de_groupe/chef_oeuvre/Res/character_tileset.png
new file mode 100755
index 0000000000000000000000000000000000000000..10a2a7345a6109a55c646a6dddca2ddbb6ee1cf5
Binary files /dev/null and b/travail_de_groupe/chef_oeuvre/Res/character_tileset.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 caad8317dca7bb341842856eba8c5e14dff9a70a..92749b566d57083cf004fb92a5d554e70ce79845 100644
--- a/travail_de_groupe/chef_oeuvre/src/gest_event.c
+++ b/travail_de_groupe/chef_oeuvre/src/gest_event.c
@@ -128,7 +128,12 @@ void manageGame(){
                     continue;
 
                 case SDL_MOUSEBUTTONDOWN:
-                    pourWater(mousePosition.x, mousePosition.y);
+                    //clic on water
+                    if(2 == map[mousePosition.y][mousePosition.x]){
+                        fillWater(mousePosition.x, mousePosition.y);
+                    }else{
+                        pourWater(mousePosition.x, mousePosition.y);
+                    }                    
                     break;
 
                 default:
diff --git a/travail_de_groupe/chef_oeuvre/src/player.c b/travail_de_groupe/chef_oeuvre/src/player.c
index cc5135b7b723da9287fb87cca4890714b0933639..622717bb2c8d3520eb05bc00fbb341cad3b96541 100644
--- a/travail_de_groupe/chef_oeuvre/src/player.c
+++ b/travail_de_groupe/chef_oeuvre/src/player.c
@@ -32,7 +32,10 @@ int collisionsLeftPlayer(){
     if(dotTopLeft==1 || dotDownLeft==1){
         collision = 1;
     }
-
+    //collision water
+    if(dotTopLeft==2 || dotDownLeft==2){
+        collision = 1;
+    }
     return collision;
 }
 
@@ -48,6 +51,10 @@ int collisionsRightPlayer(){
     if(dotTopRight==1 || dotDownRight==1){
         collision = 1;
     }
+    //collision water
+    if(dotTopRight==2 || dotDownRight==2){
+        collision = 1;
+    }
     return collision;
 }
 
@@ -63,6 +70,10 @@ int collisionsUpPlayer(){
     if(dotTopRight==1 || dotTopLeft==1){
         collision = 1;
     }
+    //collision water
+    if(dotTopRight==2 || dotTopLeft==2){
+        collision = 1;
+    }
     return collision;
 }
 
@@ -78,6 +89,10 @@ int collisionsDownPlayer(){
     if(dotDownRight==1 || dotDownLeft==1){
         collision = 1;
     }
+    //collision water
+    if(dotDownRight==2 || dotDownLeft==2){
+        collision = 1;
+    }
     return collision;
 }
 
@@ -109,18 +124,22 @@ void manageMovement(){
     if(keys[PLAYER_UP]){
         moveUpPlayer();
         player.isMoving = 1;
+        player.direction = PLAYER_UP;
     }
     if(keys[PLAYER_DOWN]){
         moveDownPlayer();
         player.isMoving = 1;
+        player.direction = PLAYER_DOWN;
     }
     if(keys[PLAYER_LEFT]){
         moveLeftPlayer();
         player.isMoving = 1;
+        player.direction = PLAYER_LEFT;
     }
     if(keys[PLAYER_RIGHT]){
         moveRightPlayer();
         player.isMoving = 1;
+        player.direction = PLAYER_RIGHT;
     }
     player.isMoving = 0;
 }
@@ -146,4 +165,10 @@ void pourWater(int x, int y){
     }
 }
 
+void fillWater(int x, int y){    
+    if(player.currentWater<player.waterMax && selectStateHover() == 1){
+        player.currentWater = player.currentWater + 1;
+    }
+}
+
 
diff --git a/travail_de_groupe/chef_oeuvre/src/player.h b/travail_de_groupe/chef_oeuvre/src/player.h
index a8bcffb7d67bb15d6dfa6feaa4b19ef23b0a90f1..387cf001c1dcde003a376e123739a23e158ebbbe 100644
--- a/travail_de_groupe/chef_oeuvre/src/player.h
+++ b/travail_de_groupe/chef_oeuvre/src/player.h
@@ -18,6 +18,7 @@ typedef struct player{
     int waterMax;
     int speed;
     int isMoving;
+    int direction;
 } player_t;
 
 extern player_t player;
@@ -26,5 +27,7 @@ void initPlayer();
 void manageMovement();
 int selectStateHover();
 void pourWater(int, int);
+void fillWater(int, int);
+int giveCaseBelowPosition(int, int);
 
 #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 37ac7a4045789c634ec275ef2e8f32c2eecd0296..eafdaabb174150c383ffe7f237ef76480de2c294 100644
--- a/travail_de_groupe/chef_oeuvre/src/render.c
+++ b/travail_de_groupe/chef_oeuvre/src/render.c
@@ -152,8 +152,10 @@ void drawPlayer(){
     rect.w = CELLSIZE;
     rect.x = player.x  + (screenDimension.w - (MAPSIZE * CELLSIZE)) / 2;
     rect.y = player.y ;
-    SDL_Rect destRect = {32 * (SDL_GetTicks()/200%4), 0, 32, 32};
-    SDL_RenderCopyEx(renderer, playerTexture, &destRect, &rect, 0, NULL, SDL_FLIP_NONE);
+    SDL_Rect destRect = {32 * (SDL_GetTicks()/200%6), 0, 32, 32};
+    SDL_Texture * drawTexture = (player.isMoving) ? (playerTexture):(playerIdleTexture);
+    int flip = (player.direction == PLAYER_LEFT) ? (SDL_FLIP_HORIZONTAL) : (SDL_FLIP_NONE);
+    SDL_RenderCopyEx(renderer, playerTexture, &destRect, &rect, 0, NULL, flip);
 }
 
 void drawBackgroundSides(){
@@ -224,7 +226,7 @@ void mainLoop(){
     noHoverSurface = IMG_Load("Res/noHover.png");
     noHoverTexture = SDL_CreateTextureFromSurface(renderer, noHoverSurface);
 
-    playerSurface = IMG_Load("Res/character_spritesheet.png");
+    playerSurface = IMG_Load("Res/character_tileset.png");
     playerTexture = SDL_CreateTextureFromSurface(renderer, playerSurface);
 
     playerIdleSurface = IMG_Load("Res/character_idle_spritesheet.png");