diff --git a/doc/sprint-2/.gitkeep b/doc/sprint-2/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/doc/sprint-2/README.md b/doc/sprint-2/README.md new file mode 100644 index 0000000000000000000000000000000000000000..2f280214ec38a9fc7b078f1184b2da36bd3e7b43 --- /dev/null +++ b/doc/sprint-2/README.md @@ -0,0 +1,25 @@ +# Sprint 2 + +### Ce que nous avons fait durant ce sprint +- Résoudre des conflits dans git +- Enregistrer et partager mon travail dans git + +### Ce que nous allons faire durant le prochain sprint +- Connaître et appliquer les interfaces +- Gérer l'affichage du menu principal +- Créer techniques de défense +- Plusieurs attaques +- Créer différents niveaux +- Mettre en place une condition de fin de jeu +- Créer un compteur + +## Rétrospective +- Meilleure communication +- Bonne répartition des tâches + +### Sur quoi avons nous butté ? +* Nous aurions du nous rassembler plus tôt +* Nous avons entamé trop d'US + +### PDCA +* N/A, sprint 2 \ No newline at end of file diff --git a/doc/sprint-2/radiateur-2.heic b/doc/sprint-2/radiateur-2.heic new file mode 100644 index 0000000000000000000000000000000000000000..fa6a73a53e9d22bf2d99228388454a80c4771576 Binary files /dev/null and b/doc/sprint-2/radiateur-2.heic differ diff --git a/src/main/java/bitFight/Action.java b/src/main/java/bitFight/Action.java index 49434d8b99c7fb5cdcce5208c9b9f9de7e37ff4b..3dbfbace10f235714fec2bda4108bb0225dab94e 100644 --- a/src/main/java/bitFight/Action.java +++ b/src/main/java/bitFight/Action.java @@ -1,5 +1,5 @@ package bitFight; public interface Action { - public Action getActionType(); + public String getAction(); } diff --git a/src/main/java/bitFight/Attack.java b/src/main/java/bitFight/Attack.java index 748b03cd0ef4fd84ac4f5f114aceb06ed942763a..3921dcbf69e176136d580b3310bc70dedd8ab479 100644 --- a/src/main/java/bitFight/Attack.java +++ b/src/main/java/bitFight/Attack.java @@ -1,21 +1,26 @@ package bitFight; public enum Attack implements Action { - PUNCH(10); + PUNCH(10, "punch"), + KICK(20, "kick"), + SUPERMANPUNCH(50,"supermanpunch"), + DOUBLEKICK(60, "doublekick") + ; private int damage; + private String name; - Attack(int damage) { + Attack(int damage, String name) { this.damage = damage; + this.name = name; } public int getDamage() { return damage; } - - public Action getActionType() { - return this; - } - public String getActionTypeToString() { + public String getAction() { return "Attack"; } + public String getName() { + return name; + } } \ No newline at end of file diff --git a/src/main/java/bitFight/Character.java b/src/main/java/bitFight/Character.java index cc6a0970faacefdac353ede8558478b9839395de..22d4d03f5feae4e6ae8d795779d59bccfe365a4b 100644 --- a/src/main/java/bitFight/Character.java +++ b/src/main/java/bitFight/Character.java @@ -1,9 +1,10 @@ package bitFight; public class Character { - protected double maxHealth = 100; - protected double currentHealth = 100; - protected double attackMultiplier = 1; + protected String name; + protected double maxHealth; + protected double currentHealth; + protected double attackMultiplier; protected int level; public Character(double maxHealth, double currentHealth, double attackMultiplier, int level) { @@ -14,13 +15,17 @@ public class Character { } public Character(){ - this.level = 1; + this(100,100,1,1); } public Character(int level) { this(); this.level = level; } + public String getName() { + return name; + } + public double getMaxHealth() { return maxHealth; } @@ -45,5 +50,20 @@ public class Character { public void setLevel(int level) { this.level = level; } + + public boolean isDead(){ + return this.currentHealth <= 0; + } + + public void levelUp() { + level++; + maxHealth = maxHealth * 1.2; + currentHealth = currentHealth * 1.2; + attackMultiplier = attackMultiplier * 1.2; + } + + public void damage(int damage){ + this.currentHealth -= damage; + } } diff --git a/src/main/java/bitFight/Defense.java b/src/main/java/bitFight/Defense.java index b6571186c5a7842479c4c0b32cdcf64feb56fb74..2bcd673ec56d02cd6d72979ba6790dd1848a19a4 100644 --- a/src/main/java/bitFight/Defense.java +++ b/src/main/java/bitFight/Defense.java @@ -1,11 +1,7 @@ package bitFight; public class Defense implements Action { - public Action getActionType() { - return this; - } - - public String getActionTypeToString() { + public String getAction() { return "Defense"; } } diff --git a/src/main/java/bitFight/Enemy.java b/src/main/java/bitFight/Enemy.java index 2aceeec5f23fb79166344bf0c1d1a96e66e6cbb7..0572985ca85a4492d99c33a653f3954759d9a442 100644 --- a/src/main/java/bitFight/Enemy.java +++ b/src/main/java/bitFight/Enemy.java @@ -2,18 +2,15 @@ package bitFight; import java.util.Random; public class Enemy extends Character{ - // private double maxHealth; - // private double currentHealth; - // private double attackMultiplier; - // private int level; - public Enemy(int level) { + public Enemy(String name, int level) { super(level); - super.maxHealth = super.maxHealth * Math.pow(1.2, (level-1)); - super.maxHealth = statVariation(super.maxHealth); - super.attackMultiplier = super.attackMultiplier * Math.pow(1.2, level); - super.attackMultiplier = statVariation(super.attackMultiplier); - super.currentHealth = super.maxHealth; + super.name = name; + maxHealth = maxHealth * Math.pow(1.2, (level-1)); + maxHealth = statVariation(maxHealth); + attackMultiplier = attackMultiplier * Math.pow(1.2, level); + attackMultiplier = statVariation(attackMultiplier); + currentHealth = maxHealth; } private double statVariation(double stat){ @@ -21,47 +18,8 @@ public class Enemy extends Character{ return stat + (r.nextDouble() * (stat * 0.2) - (stat * 0.1)); } - public double getMaxHealth() { - return maxHealth; - } - - public void setMaxHealth(double maxHealth) { - this.maxHealth = maxHealth; - } - - public double getCurrentHealth() { - return currentHealth; - } - - public void setCurrentHealth(double currentHealth) { - this.currentHealth = currentHealth; - } - - public double getAttackMultiplier() { - return attackMultiplier; - } - - public void setAttackMultiplier(double attackMultiplier) { - this.attackMultiplier = attackMultiplier; - } - - public int getLevel() { - return level; - } - - public void setLevel(int level) { - this.level = level; - } - - public void damage(int damage){ - this.currentHealth -= damage; - } - - public boolean isDead(){ - return this.currentHealth <= 0; - } - + public String toString() { - return "Ennemy : level " + this.level + " - Current life level : " + this.currentHealth; + return name + " : level " + this.level + " - Current life level : " + this.currentHealth; } } diff --git a/src/main/java/bitFight/GameDisplay.java b/src/main/java/bitFight/GameDisplay.java index 9d4888fae9196133080a0f33a2ead3efaea5badd..84d1b2f67b5c9b10b17813c5d122ef0d70c94a4e 100644 --- a/src/main/java/bitFight/GameDisplay.java +++ b/src/main/java/bitFight/GameDisplay.java @@ -6,7 +6,7 @@ import java.io.InputStreamReader; import java.util.Scanner; -public class GameDisplay implements Display{ +public class GameDisplay { String texte; @@ -14,7 +14,6 @@ public class GameDisplay implements Display{ this.texte=texte; } - @Override public void display() { System.out.println(this.texte); } diff --git a/src/main/java/bitFight/Level.java b/src/main/java/bitFight/Level.java index 7d340bc07c272d0f6c041c36f7fa6f7dcb982b92..58308cc5f6c81c47ad6dfbb694ecf027a3861012 100644 --- a/src/main/java/bitFight/Level.java +++ b/src/main/java/bitFight/Level.java @@ -1,5 +1,7 @@ package bitFight; +import java.util.Scanner; + public class Level{ int nbLevel; @@ -26,5 +28,42 @@ public class Level{ this.difficulty = difficulty; } + public void display() { + System.out.println("Level " + this.nbLevel); + System.out.println("Difficulty = " + this.difficulty); + } + + public boolean check() { + Scanner sc = new Scanner(System.in); + String c = sc.nextLine(); + if (c == null) { + sc.close(); + return false; + } + sc.close(); + return true; + } + + public void ennemyShowing(Enemy ennemy) { + System.out.println("An ennemy just appeared : " + ennemy.toString()); + } + + public void ennemyDying() { + System.out.println("The ennemy is dead!"); + } + + public void playerDying() { + + } + + public void fighting(Player p, Enemy ennemy) { + System.out.println(p.getName() + "'s life : " + p.getCurrentHealth()); + this.ennemyShowing(ennemy); + System.out.println("Press any key to attack and press enter"); + if (this.check()) { + this.ennemyDying(); + } + } + } diff --git a/src/main/java/bitFight/LevelDisplay.java b/src/main/java/bitFight/LevelDisplay.java deleted file mode 100644 index 37e6b01b834bc1dd213ec5f9b1b08c12922d6801..0000000000000000000000000000000000000000 --- a/src/main/java/bitFight/LevelDisplay.java +++ /dev/null @@ -1,47 +0,0 @@ -package bitFight; - - -import java.util.Scanner; - -public class LevelDisplay implements Display { - private int levelNb = 1; - private String levelText = "New level : prepare to fight!"; - - public int getLevelNb() { - return levelNb; - } - - public void display() { - System.out.println("Niveau " + this.levelNb); - System.out.println(this.levelText); - } - - public boolean validate() { - Scanner sc = new Scanner(System.in); - String c = sc.nextLine(); - if (c == null) { - sc.close(); - return false; - } - sc.close(); - return true; - } - - public void ennemyShowing(Enemy ennemy) { - System.out.println("An ennemy just appeared : " + ennemy.toString()); - } - - public void ennemyDying() { - System.out.println("The ennemy is dead!"); - } - - public void fighting(Player p, Enemy ennemy) { - System.out.println(p.getName() + "'s life : " + p.getCurrentHealth()); - this.ennemyShowing(ennemy); - System.out.println("Press any key to attack and press enter"); - this.validate(); - if (this.validate()) { - this.ennemyDying(); - } - } -} diff --git a/src/main/java/bitFight/Main.java b/src/main/java/bitFight/Main.java index 5ef2944b8db89fec795e18bdfd2ad76e13cbedbe..58da8a643f3430b890bb724cf0dda3a64c589908 100644 --- a/src/main/java/bitFight/Main.java +++ b/src/main/java/bitFight/Main.java @@ -4,34 +4,32 @@ package bitFight; import java.io.IOException; import java.time.Duration; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.Random; import java.util.Scanner; class Main { - public static void main(String[] args) throws IOException{ - - Menu menu= new Menu(" "," "); - menu.display(); - menu.validate(); - - - - Scanner in = new Scanner(System.in); + public static void main(String[] args) { + Scanner in = new Scanner(System.in); Random rand = new Random(); - LocalDateTime timeBeforeAttack = LocalDateTime.now(); - int attackTime = 8 - (int)(5 * rand.nextDouble()); //A garder au début de la boucle Input input = new Input(); input.setInput(in.nextLine()); - Enemy JoueurEnnemi = new Enemy(2); + Enemy enemy = new Enemy("BAD PAUL", 2); - System.out.println(JoueurEnnemi.getCurrentHealth()); + Player player = new Player("play"); - while (!input.getInput().equals("q") && !JoueurEnnemi.isDead()) { + System.out.println(enemy.getCurrentHealth()); + + while (!input.getInput().equals("q") && !enemy.isDead() && !player.isDead()) { System.out.println("départ"); + LocalDateTime timeBeforeAttack = LocalDateTime.now(); + int attackTime = 8 - (int)(5 * rand.nextDouble()); //A garder au début de la boucle + + // Affiche un message lors d'un input non répertorié if(!input.validInput()){ System.out.println("Error input invalid"); input.setInput(in.nextLine()); @@ -39,14 +37,31 @@ class Main { System.out.println("input valide"); if (input.getInput().equals("a")) { - JoueurEnnemi.damage(Attack.PUNCH.getDamage()); - System.out.println("Ennemi" + " health : " + JoueurEnnemi.getCurrentHealth()); + enemy.damage(Attack.PUNCH.getDamage()); + System.out.println(enemy.toString()); + System.out.println(player.toString()); input.setInput(in.nextLine()); } - if(Duration.between(timeBeforeAttack, LocalDateTime.now()).toSeconds() > attackTime){ //TODO, code pour joueur qui vient de se faire attaquer, FIN DE BOUCLE - System.out.println("attaque"); + System.out.println("Attaque de l'ennemi (Trop lent!!!!!!!!!!!!!!!!!!!!!)"); + } else if (input.getInput().equals("a")) { + input.setInput(in.nextLine()); + // Boucle tant que le joueur n'a pas taper de nom d'une attaque valide + while (!attacksNames.contains(input.getInput())) { + if (!attacksNames.contains(input.getInput())){ + System.out.println("WARNING ! : Choose an attack in the list"); + input.setInput(in.nextLine()); + } + } + String attack = attacksNames.get(attacksNames.indexOf(input.getInput())).toUpperCase(); + enemy.damage(Attack.valueOf(attack).getDamage()); + + System.out.println(enemy.toString()); + input.setInput(in.nextLine()); + + }else{ + System.out.println("cette attaque n'est pas disponible :( \n les attaques disponible sont : \n \t punch , kick , double kikck , superman punch . "); } } diff --git a/src/main/java/bitFight/Player.java b/src/main/java/bitFight/Player.java index ad9554339faa1d28b69a7c368f00d6b9d490a1e2..22a2d9d55a0bc0110efd5cb7b6b6efa7c7fd704c 100644 --- a/src/main/java/bitFight/Player.java +++ b/src/main/java/bitFight/Player.java @@ -1,52 +1,13 @@ package bitFight; public class Player extends Character{ - private String name; - private double maxHealth; - private double currentHealth; - private double attackMultiplier; - private int level; - Player (String name){ super(); - this.name = name; - } - - - public String getName() { - return name; - } - - - public double getMaxHealth() { - return maxHealth; + super.name = name; } - - public double getCurrentHealth() { - return currentHealth; + public String toString() { + return name + " : level " + level + " - Current life level : " + currentHealth; } - - - public double getAttackMultiplier() { - return attackMultiplier; - } - - - public int getLevel() { - return level; - } - - public void levelUp() { - level++; - maxHealth = maxHealth * 1.2; - currentHealth = currentHealth * 1.2; - attackMultiplier = attackMultiplier * 1.2; - } - - public void damage(int damage){ - this.currentHealth -= damage; - } - } diff --git a/src/main/java/bitFight/UseGame.java b/src/main/java/bitFight/UseGame.java index 81752bbc152834cadfc0ea65f53ca5940b51d5a2..22a1b153e4bcb7ac11f9db621a49182368762829 100644 --- a/src/main/java/bitFight/UseGame.java +++ b/src/main/java/bitFight/UseGame.java @@ -4,7 +4,7 @@ public class UseGame { public static void main(String[] args) { boolean gameIsGoing = true; Player player = new Player("newPlayer"); - Enemy enemy = new Enemy(5); + Enemy enemy = new Enemy("tt",5); while (gameIsGoing) { GameDisplay game = new GameDisplay("BitFight"); diff --git a/src/test/java/attackTest.java b/src/test/java/attackTest.java index 9e3b2ce51ed2727b1b8b125345ed57da5c64d255..96beb0d5651462964080507a640ac0511dfd9477 100644 --- a/src/test/java/attackTest.java +++ b/src/test/java/attackTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; public class attackTest { @Test void testGetDamage() { - assertEquals(attack.PUNCH.getDamage(),10); + assertEquals(Attack.PUNCH.getDamage(),10); } }