diff --git a/assets/DialogBox.text b/assets/DialogBox.text
index 3824c2cfa6d57ed073ec9ad88effe88f20d33bf0..2882879bc05263cc3ac838d5c349e4c50e053252 100644
--- a/assets/DialogBox.text
+++ b/assets/DialogBox.text
@@ -1,4 +1,4 @@
-________________________________________________________________________________________________________________________
+
 
 
 
@@ -13,7 +13,7 @@ ________________________________________________________________________________
 
 Commandes :
 
-    a - Attaquer
-    q - Quitter
+                                                a - Action
+                                                q - Quitter
 
 ________________________________________________________________________________________________________________________
\ No newline at end of file
diff --git a/src/main/java/bitFight/Display.java b/src/main/java/bitFight/Display.java
index 77173399f160548dac6e55a4e453e390d134e0ff..5d47f5c96155f82bd4434c39f6a31042d05225ce 100644
--- a/src/main/java/bitFight/Display.java
+++ b/src/main/java/bitFight/Display.java
@@ -31,20 +31,27 @@ public class Display {
     }
 
     public static void goToDialogBox(){
-        setCursorPos(row+7,0);
+        setCursorPos(1,0);
+        //System.out.flush();
     }
 
     
-    public static void clearDialogBox() throws IOException{
+    public static void clearDialogBox(){
         clearScreen();
         setCursorPos(row, 0);
         printDialogBox();
         goToDialogBox();
     }
 
-    public static void printDialogBox() throws IOException{
-        setCursorPos(50, 0);
-        String dialogBox = loadTextFile("assets/DialogBox.text");
+    public static void printDialogBox(){
+        setCursorPos(100, 0);
+        String dialogBox = "";
+        try {
+            dialogBox = loadTextFile("assets/DialogBox.text");
+        } catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
         System.out.println(dialogBox);
     }
 
@@ -52,7 +59,7 @@ public class Display {
         setCursorPos(50, 0);
     }
 
-    public static void newPrintln(String text) throws IOException{
+    public static void newPrintln(String text){
         clearDialogBox();
         System.out.println(text);
         goToUserInput();
diff --git a/src/main/java/bitFight/Input.java b/src/main/java/bitFight/Input.java
index 3cef9023bb2af38d8286e5c9d0f231f29dbab4d3..62d37f08a893c0e84a83d90db6d64c1a51e669c4 100644
--- a/src/main/java/bitFight/Input.java
+++ b/src/main/java/bitFight/Input.java
@@ -37,11 +37,7 @@ public class Input {
                     e.printStackTrace();
                 }     
             } catch (InvalidInputException e) {
-                try {
-                    Display.newPrintln(e.getMessage());
-                } catch (IOException e1) {
-                    e1.printStackTrace();
-                }
+                Display.newPrintln(e.getMessage());
             }
         }
         while (!validInput());
diff --git a/src/main/java/bitFight/Level.java b/src/main/java/bitFight/Level.java
index b7b150e8537a2dee539936e8df81e93e3f35c5d1..5cf0541c217f441fc1c446627ca2a9b92b2f4e63 100644
--- a/src/main/java/bitFight/Level.java
+++ b/src/main/java/bitFight/Level.java
@@ -59,13 +59,16 @@ public class Level{
     // annonce un nouvel ennemi
     public void ennemyShowing() {
         System.out.println("An ennemy just appeared : " + this.ennemy.toString());
+        System.out.println();
     }
 
     public void ennemyFaster(Attack attack) {
+        Display.clearDialogBox();
         System.out.println("The ennemy attacks before you can !");
         player.setCurrentHealth(player.getCurrentHealth() - attack.getDamage() * this.ennemy.getAttackMultiplier()); //Récupère une attaque aléatoire dans l'enum
         System.out.println(attack.getName() + "!! You're getting " + (int) attack.getDamage() * this.ennemy.getAttackMultiplier() + " of damage!");
         System.out.println(this.player.getName() + "'s life' : " + this.displayPlayerHealth());
+        Display.goToUserInput();
     }
 
     // affiche la jauge de vie de l'ennemi
@@ -109,14 +112,18 @@ public class Level{
     // méthodes de combats
     // liste des attaques et défenses possibles pour le joueur
     public void possibleActions() {
+        Display.clearDialogBox();
         System.out.println("Possible attacks are : \n \t punch, kick, double kick, supermanpunch. \"");
         System.out.println("Possible defenses are : \n \t lowblock, highblock\"");
+        Display.goToUserInput();
     }
 
     // quand l'utilisateur choisit une action qui n'existe pas
     public void invalidActionChoice() {
+        Display.clearDialogBox();
         System.out.println("This action is not available.");
         possibleActions();
+        Display.goToUserInput();
     }
 
     // méthodes de paramètrages
diff --git a/src/main/java/bitFight/Main.java b/src/main/java/bitFight/Main.java
index 74a651dd045f8d7011025139451bc5c768a63352..f32490746950db1e95cad57fda14ba4b2d490217 100644
--- a/src/main/java/bitFight/Main.java
+++ b/src/main/java/bitFight/Main.java
@@ -46,9 +46,11 @@ class Main {
 
         Display.goToDialogBox();
 
-        Display.newPrintln(Terminal.RED_BACKGROUND + "ATTAQUEZ" + Terminal.RESET + " ou " + Terminal.PURPLE_BACKGROUND + "QUITTEZ" + Terminal.RESET);
+        // arrivée de l'ennemi
+        level.ennemyShowing();
 
-        level.displayGameRules();
+        Display.newPrintln(enemy.toString());
+        Display.newPrintln(Terminal.RED_BACKGROUND + "ATTAQUEZ" + Terminal.RESET + " ou " + Terminal.PURPLE_BACKGROUND + "QUITTEZ" + Terminal.RESET);
 
         Display.goToUserInput();
 
@@ -68,15 +70,13 @@ class Main {
 
         if (input.getInput().equals("a")) {
 
-            while (!input.getInput().equals("q") && !enemy.isDead() && !player.isDead()) {
-                
-                //A garder au début de la boucle, mesure le temps que le joueur à pris d'écrire
-                LocalDateTime timeBeforeAttack = LocalDateTime.now();
-                int attackTime = 5 - (int)(5 * rand.nextDouble());
-                
-                // arrivée de l'ennemi
-                level.ennemyShowing();
-                
+        while (!input.getInput().equals("q") && !enemy.isDead() && !player.isDead()) {
+
+            //A garder au début de la boucle, mesure le temps que le joueur à pris d'écrire
+            LocalDateTime timeBeforeAttack = LocalDateTime.now();
+            int attackTime = 5 - (int)(5 * rand.nextDouble());
+
+            if (input.getInput().equals("a")) {
                 level.possibleActions();
                 input.newInput();
                 
@@ -94,9 +94,7 @@ class Main {
                     if (!actionNames.contains(input.getInput())){
                         Display.clearDialogBox();
                         level.invalidActionChoice();                        
-                        input.newInput();
-                        System.out.println(actionNames.toString());
-                        System.out.println(input.getInput());
+                        input.newInput(in.readLine());
                     }
                 }
                 
@@ -112,7 +110,9 @@ class Main {
                 Display.newPrintln(enemy.toString());
                 
                 //Display.clearDialogBox();
-                
+
+                input.newInput(in.readLine());
+
                 if (enemy.isDead()){
                     level.ennemyDying();
                     player.revive();