diff --git a/MAVENProject/PlanUML.puml b/MAVENProject/PlanUML.puml
index 48d37f180add1e2b3e063d8db3ecafd388bb96c9..c16d686b7cfdece0675b9c2be9ac2629c0e111c3 100644
--- a/MAVENProject/PlanUML.puml
+++ b/MAVENProject/PlanUML.puml
@@ -68,6 +68,7 @@ class entity.Character {
 - double impulsionSaut
 - HashMap tableCommand
 - int alpha
+- int nbLifePoints
 - double entityWIDTH
 - double entityHEIGHT
 - double vitesseActuX
@@ -77,10 +78,15 @@ class entity.Character {
 + void getGameCommand()
 + void attaque()
 + void evolveCharacter()
++ void collisionsGestion()
++ int getNbLifePoints()
++ void setNbLifePoints(int)
++ int getAlpha()
++ double getM()
++ double getVitesseActuX()
++ double getVitesseActuZ()
 }
 class entity.Monster{
-+ Coordonnees positions
-+ int vmax
 + void deplacements()
 + void attaque()
 }
diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java
index f99230016c105ac8b6f4b742ad2c59fc0c2397dd..a44fe55592270cb0ecf2774329eab1ed14995d6f 100644
--- a/MAVENProject/src/main/java/entity/Character.java
+++ b/MAVENProject/src/main/java/entity/Character.java
@@ -15,6 +15,7 @@ public class Character extends Entity{
     private double vitesseActuX = 0; // vitesse actuelle supposée nulle au départ
     private double vitesseActuZ = 0;
     private final double impulsionSaut;
+    private int nbLifePoints = 3;
     private double masse;
     private int alpha = 1; // gere les collisions avec le sol
     private int beta = 1; // gere les collisions avec les murs
@@ -38,7 +39,7 @@ public class Character extends Entity{
         
     }
     @Override
-    public void deplacements(){ // alpha indique si il est au sol ou non, il vaut 0 ou 1 en fonction
+    public void deplacements(){ // alpha indique si il est au sol ou non, il vaut 0 (en l'air) ou 1 (au sol) en fonction
         if (this.getCoord().getZ()>= 700 ) {
             alpha = 1;
         }
@@ -103,8 +104,8 @@ public class Character extends Entity{
 
     public void evolveCharacter(){
         getGameCommand();
-        collisionGestion();
         deplacements();
+        collisionGestion();
         resetCommand();
         this.setHitBox(new HitBox(this.getCoord(),entityHEIGHT,entityWIDTH)); // mise à jour moins crade pour l'instant
     }
@@ -138,5 +139,11 @@ public class Character extends Entity{
     public int getAlpha() {
         return alpha;
     }
+    public int getNbLifePoints() {
+        return nbLifePoints;
+    }
+    public void setNbLifePoints(int nbLifePoints) {
+        this.nbLifePoints = nbLifePoints;
+    }
     
 }
diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java
index ee9b09b8c98c8d3606289ed2ff5c0c1385bcc5c8..bb72e5b58a28278bd3950193df49d1214026d42c 100644
--- a/MAVENProject/src/main/java/jeu/Jeu.java
+++ b/MAVENProject/src/main/java/jeu/Jeu.java
@@ -115,7 +115,6 @@ public class Jeu implements Game{
         directionJeu.replace("Attack",command.get("Attack"));
         boolean Right = command.get("Right");
         boolean Left = command.get("Left");
-        boolean Jump = command.get("Jump");
         boolean Attack = command.get("Attack");
 
 
@@ -124,6 +123,30 @@ public class Jeu implements Game{
         gameCharacter.evolveCharacter();
 
         //animation du perso dans le jeu (definir la bonne frame a cet instant)
+        animation(Attack, Right, Left);
+        
+    }
+
+    @Override
+    public boolean isFinished() {
+        // le jeu n'est jamais fini
+        return false;
+    }
+
+
+    public static Map<String, Boolean> getDirectionJeu() {
+        return directionJeu;
+    }
+
+    public static Obstacle getSol() {
+        return sol;
+    }
+
+    public static List<Obstacle> getObstacleTable() {
+        return obstacleTable;
+    }
+
+    private void animation(Boolean Attack,Boolean Right,Boolean Left){
         if (Attack) {
             movement = "character_attack";
             characterAttacking = true;
@@ -172,26 +195,6 @@ public class Jeu implements Game{
         characterSkinPath = beginPath + movement + numberOfMovement + ".png";
         gameCharacterLoader.setSkinPath(characterSkinPath);
         gameCharacterLoader.refreshImage();
-        
-    }
-
-    @Override
-    public boolean isFinished() {
-        // le jeu n'est jamais fini
-        return false;
-    }
-
-
-    public static Map<String, Boolean> getDirectionJeu() {
-        return directionJeu;
-    }
-
-    public static Obstacle getSol() {
-        return sol;
-    }
-
-    public static List<Obstacle> getObstacleTable() {
-        return obstacleTable;
     }
     
 }
\ No newline at end of file
diff --git a/MAVENProject/src/main/java/jeu/Painter.java b/MAVENProject/src/main/java/jeu/Painter.java
index b1747a09465db53aaf2131e8662517bf451d7108..8c8fe705124000e37c4a4b6a7d00312ab790644b 100644
--- a/MAVENProject/src/main/java/jeu/Painter.java
+++ b/MAVENProject/src/main/java/jeu/Painter.java
@@ -10,6 +10,10 @@ import java.awt.*;
 import java.awt.image.BufferedImage;
 import java.util.HashMap;
 
+import javax.swing.ImageIcon;
+
+import java.net.URL;
+
 import static environnement.HitBox.collision;
 import static jeu.Jeu.*;
 
@@ -42,18 +46,11 @@ public class Painter implements GamePainter{
         drawMap(crayon);
         drawSol(crayon);
         drawObstacleBis(crayon,test,"plateforme.png");
+        drawLifePoints(crayon);
     }
 
 
-    @Override
-    public int getWidth() {
-        return WIDTH;
-    }
-
-    @Override
-    public int getHeight() {
-        return HEIGHT;
-    }
+    
 
     private void drawCharacter(Graphics2D crayon,Image imageCharac){
         int x = (int) gameCharacter.getCoord().getX();
@@ -63,6 +60,18 @@ public class Painter implements GamePainter{
 
     }
 
+    private void drawLifePoints(Graphics2D crayon){
+        String fn = "Frames_perso";
+        URL url = Jeu.class.getClassLoader().getResource(fn);
+        assert url != null;
+        String beginPath = url.toString().substring(6)+"/";
+        Image filledHeart = new ImageIcon(beginPath+"character_health2.png").getImage();
+        Image emptyHeart = new ImageIcon(beginPath+"character_health1.png").getImage();
+        for (int i=1;i<=gameCharacter.getNbLifePoints();i++){
+            crayon.drawImage(filledHeart, 45*i-10, 10, null, null);
+        }
+    }
+
     private void drawObstacle(Graphics2D crayon, Obstacle obstacle){
         HashMap<String, Coordonnees> extremites = obstacle.getHitbox().getExtremites();
         Coordonnees hd = extremites.get("HautDroite");
@@ -104,4 +113,14 @@ public class Painter implements GamePainter{
         crayon.drawImage(loader.getImageObstacle(), x - (int) hitBox.getWidth()/2,z - (int) hitBox.getHeight()/2,null,null);
     }
 
+    @Override
+    public int getWidth() {
+        return WIDTH;
+    }
+
+    @Override
+    public int getHeight() {
+        return HEIGHT;
+    }
+
 }