diff --git a/src/main/java/bitFight/Display.java b/src/main/java/bitFight/Display.java index c5ff29bbdb829846119944919cba7211be465368..2cf69ae911e800cc694f3d99884e06a3a79085a2 100644 --- a/src/main/java/bitFight/Display.java +++ b/src/main/java/bitFight/Display.java @@ -70,4 +70,10 @@ public class Display { System.out.println(text); goToUserInput(); } + + public static void displayNewHealthBar(){ + setCursorPos(row,0); + level.displayLifePoints(); + goToUserInput(); + } } diff --git a/src/main/java/bitFight/Input.java b/src/main/java/bitFight/Input.java index df4b2d458755089f14d3aeda09a3f0cd6b6f482d..0b7ce5c4278c83de6a17a757ba333ff1fe6830a0 100644 --- a/src/main/java/bitFight/Input.java +++ b/src/main/java/bitFight/Input.java @@ -5,10 +5,13 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.Scanner; public class Input { private String input = ""; private ArrayList<String> inputRange; + private static BufferedReader in= new BufferedReader( new InputStreamReader(System.in)); + public String getInput() { return input; @@ -27,23 +30,15 @@ public class Input { } - public void newInput() throws IOException { + public void newInput(Scanner in) throws IOException { do { - BufferedReader in= new BufferedReader( new InputStreamReader(System.in)); try { - try { - setInput(in.readLine()); - } catch (IOException e) { - // TODO Auto-generated catch block - System.err.println(e.getMessage() + ": Contact support"); - } + setInput(in.nextLine()); } catch (InvalidInputException e) { Display.newPrintln(e.getMessage()); } catch (Exception e) { System.err.println(e.getMessage()+": Contact support"); - } finally { - // in.close(); } } while (!validInput()); diff --git a/src/main/java/bitFight/Level.java b/src/main/java/bitFight/Level.java index 2c8f4732a742b6858e863e4bcfb606d599dcb4cf..8139a41adda2fe119c86b6333a8eea23aa72ee8c 100644 --- a/src/main/java/bitFight/Level.java +++ b/src/main/java/bitFight/Level.java @@ -89,7 +89,7 @@ public class Level{ } } System.out.print(" "); - System.err.println( (int) this.player.getCurrentHealth() + "/" + (int) this.player.getMaxHealth()); + System.err.println( (int) this.player.getCurrentHealth() + "/" + (int) this.player.getMaxHealth() + " "); System.out.print(Terminal.YELLOW+"\t current energy "+Terminal.RESET); for (int indice = 0; indice < (this.player.getCurrentEnergy())/2; indice ++){ System.out.print(Terminal.YELLOW +"▬"+ Terminal.RESET); @@ -100,7 +100,7 @@ public class Level{ public String displayPlayerHealth(){ - return (int )this.ennemy.getCurrentHealth() +" / " + (int) this.ennemy.getMaxHealth(); + return (int )this.player.getCurrentHealth() +" / " + (int) this.player.getMaxHealth(); } diff --git a/src/main/java/bitFight/Main.java b/src/main/java/bitFight/Main.java index ea97d2f42c43ee5a8db62a4ed7958e33caaadfb7..47331d90daec74ced8e8e8d50fe77c040a00eb06 100644 --- a/src/main/java/bitFight/Main.java +++ b/src/main/java/bitFight/Main.java @@ -7,6 +7,7 @@ import java.io.InputStreamReader; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Random; +import java.util.Scanner; class Main { @@ -27,15 +28,7 @@ class Main { level = gamedata.getLevelReached(); } - try { - menu.display(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + menu.display(); menu.validate(); Display.clearScreen(); @@ -62,7 +55,7 @@ class Main { ArrayList<String> actionNames = new ArrayList<>(); for (Action a : actionList) actionNames.add(a.getName()); - BufferedReader in= new BufferedReader( new InputStreamReader(System.in)); + Scanner in= new Scanner(System.in); Random rand = new Random(); @@ -70,7 +63,7 @@ class Main { level.ennemyShowing(); Input input = new Input(); - input.newInput(); + input.newInput(in); Display.goToDialogBox(); @@ -82,9 +75,8 @@ class Main { LocalDateTime timeBeforeAttack = LocalDateTime.now(); int attackTime = 5 - (int)(5 * rand.nextDouble()); - if (input.getInput().equals("a")) { level.possibleActions(); - input.newInput(); + input.newInput(in); // Boucle tant que le joueur n'a pas taper de nom d'une attaque valide ou tape trop tard ou tape q while ((!actionNames.contains(input.getInput()) || !Attack.attackInTime(timeBeforeAttack, attackTime)) && !input.getInput().equals("q")) { @@ -94,14 +86,15 @@ class Main { Display.clearDialogBox(); Attack randomEnemyAttack = Attack.values()[(int) rand.nextDouble()*Attack.values().length]; level.ennemyFaster(randomEnemyAttack); + Display.displayNewHealthBar(); timeBeforeAttack = LocalDateTime.now(); - input.newInput(); + input.newInput(in); } if (!actionNames.contains(input.getInput())){ Display.clearDialogBox(); level.invalidActionChoice(); - input.newInput(); + input.newInput(in); } } @@ -130,8 +123,6 @@ class Main { //Display.clearDialogBox(); - input.newInput(); - if (enemy.isDead()){ level.ennemyDying(); player.revive(); @@ -139,6 +130,10 @@ class Main { enemy.levelUp(); level.levelGoingUp(); level.displayEndOfLevel(); + } + if (player.isDead()){ + Display.clearScreen(); + level.defeat(); } if (player.isDead()) { @@ -152,6 +147,5 @@ class Main { in.close(); Save.saveObject("res/gamedata", gamedata); } - } } \ No newline at end of file