From 461c38ba1b7c448ef590dac95300bd60e49f38e1 Mon Sep 17 00:00:00 2001 From: Paul Gross Date: Tue, 21 Apr 2020 11:46:41 +0200 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20de=20la=20m=C3=A9thode=20attaqu?= =?UTF-8?q?er=20de=20plateau=20et=20de=20joueur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/condition/ConditionClass.java | 50 ---------------- src/effet/EffetTarget.java | 5 ++ src/effet/action/ActionAttaquer.java | 6 +- src/main/Joueur.java | 30 +++++++++- src/main/Plateau.java | 18 ++++-- src/personnage/Allie.java | 9 +-- src/personnage/Bob.java | 10 ++-- src/personnage/CartePersonnage.java | 2 +- src/personnage/Charles.java | 6 ++ src/personnage/Daniel.java | 5 ++ src/personnage/Emi.java | 6 ++ src/personnage/LoupGarou.java | 6 ++ src/personnage/Metamorphe.java | 6 ++ src/personnage/Unique.java | 6 ++ src/personnage/Vampire.java | 7 ++- .../ConditionClassPersonnageTest.java | 4 +- tests/condition/ConditionClassTest.java | 14 ----- .../condition/ConditionStatistiquesTest.java | 3 +- tests/personnage/AllieTest.java | 57 +++++++++++++++++++ 19 files changed, 163 insertions(+), 87 deletions(-) delete mode 100644 src/condition/ConditionClass.java delete mode 100644 tests/condition/ConditionClassTest.java create mode 100644 tests/personnage/AllieTest.java diff --git a/src/condition/ConditionClass.java b/src/condition/ConditionClass.java deleted file mode 100644 index 7630b20..0000000 --- a/src/condition/ConditionClass.java +++ /dev/null @@ -1,50 +0,0 @@ -package condition; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import main.Joueur; -import carte.CartePersonnage; -import carte.Type; - - -public class ConditionClass extends Condition{ - - private List> classes; - - - public ConditionClass(Class ... classes){ - // TODO - this.classes = new ArrayList>(); - this.classes.addAll(Arrays.asList(classes)); - } - - - /** - * Vérifie qu'il existe au moins une classe qui correspond soit au Type soit au Personnage du Joueur. - *

- * exemple : - * - * classes = { Emi.class, Metamorphe.class, ... etc } ou classes = { Hunter.class, Shadow.class, Neutre.class } - *
- * Si la class de la carte du joueur correspond à un des élements dans classes alors on renvoie vrai, même chose pour les types. - * - * @param joueur Le joueur sur lequel on vérifie les conditions. - * @return boolean - */ - @Override - public boolean isTrue(Joueur joueur) - { - Class ccp = (Class) joueur.getCartePersonnage().getClass(); - Class cct = (Class) joueur.getType().getClass(); - - for(Class classe : classes) { - - - if(ccp.getClass() == classe.getClass() || cct.getClass() == classe.getClass() ) return true; - } - return false; - } - -} diff --git a/src/effet/EffetTarget.java b/src/effet/EffetTarget.java index 69fa41b..51badc9 100644 --- a/src/effet/EffetTarget.java +++ b/src/effet/EffetTarget.java @@ -1,9 +1,14 @@ package effet; +import effet.action.Action; import main.Joueur; public abstract class EffetTarget extends Effet{ + public EffetTarget(Action action) { + super(action); + } + public abstract void utiliser(Joueur joueur); } diff --git a/src/effet/action/ActionAttaquer.java b/src/effet/action/ActionAttaquer.java index eff36de..70d6925 100644 --- a/src/effet/action/ActionAttaquer.java +++ b/src/effet/action/ActionAttaquer.java @@ -1,6 +1,7 @@ package effet.action; import main.Joueur; +import main.Plateau; public class ActionAttaquer extends Action { @@ -12,7 +13,10 @@ public class ActionAttaquer extends Action { */ @Override public void affecte(Joueur j1, Joueur j2) { - j1.attaquer(j2); + + Plateau p = j1.getPlateau(); + p.attaquer(j1, j2); + } } diff --git a/src/main/Joueur.java b/src/main/Joueur.java index fd55311..a0891e0 100644 --- a/src/main/Joueur.java +++ b/src/main/Joueur.java @@ -59,6 +59,8 @@ public class Joueur { } public void setStat(String key, int valeur) { + + // TODO Il faut créer des observers de mort this.stats.put(key, valeur); } @@ -101,10 +103,34 @@ public class Joueur { } - public void attaquer(Joueur j2) { - // TODO Auto-generated method stub + public void attaquer(Joueur j2, int attaqueDice) { + int blessure = evaluerImmunite(j2)*(this.evaluerAttaque(j2) + attaqueDice); + + if(blessure > 0) + { + j2.addStat(PLAYER_HP, -blessure); + } } + + private int evaluerAttaque(Joueur j2) { + + return this.getStat(PLAYER_DAMAGE)-j2.getStat(PLAYER_RESISTANCE); + } + + private int evaluerImmunite(Joueur j2) { + + int nbToursImmune = j2.getStat(PLAYER_IMMUNITY); + + return nbToursImmune > 0 ? 0 : 1; + } + + private void addStat(String key, int valeur) + { + int valeurBase = this.getStat(key); + this.setStat(Joueur.PLAYER_HP,valeurBase+valeur); + } + public Plateau getPlateau() { return this.plateau; diff --git a/src/main/Plateau.java b/src/main/Plateau.java index 977f36f..e0e5bf0 100644 --- a/src/main/Plateau.java +++ b/src/main/Plateau.java @@ -64,6 +64,13 @@ public class Plateau { public void attaquer(Joueur joueur1, Joueur joueur2) { + int attaque = diffRolls(); + + if(attaque != 0) { + + joueur1.attaquer(joueur2,attaque); + } + } @@ -71,15 +78,16 @@ public class Plateau { return new Joueur("0"); } - public int sumRolls() { - //pas necessaire? - return 0; + public int diffRolls() { + return Math.abs(roll6()-roll4()); } public int roll4() { return (int) Math.floor(Math.random() * 3)+1; } - + + + public int rollDices4() { return Math.abs(roll4() - roll4()); } @@ -91,7 +99,7 @@ public class Plateau { public int roll6() { return (int) Math.floor(Math.random() * 5)+1; } - + public List getJoueurs() { return this.joueurs; } diff --git a/src/personnage/Allie.java b/src/personnage/Allie.java index 5c41728..47ff64e 100644 --- a/src/personnage/Allie.java +++ b/src/personnage/Allie.java @@ -15,8 +15,8 @@ import main.Plateau; public class Allie extends Unique{ - public Allie(String nom, int hp, Joueur joueur) throws Exception { - super(nom, hp, joueur); + public Allie(Joueur joueur) { + super("ALLIE", 8, joueur); Action action = new ActionAltererStatistiquesJoueur("HP",this.getPv(),false); Effet effet = new EffetSelf(action); @@ -38,10 +38,11 @@ public class Allie extends Unique{ * @param j * @return void */ - public void utiliser(Joueur j) { + public void utiliser() { if(!this.isCapaciteUsed()) { - this.getEffet().utiliser(j); + this.getEffet().utiliser(this.getJoueur()); + this.setCapaciteUsed(true); } } diff --git a/src/personnage/Bob.java b/src/personnage/Bob.java index 4d3b6d4..04f6fa8 100644 --- a/src/personnage/Bob.java +++ b/src/personnage/Bob.java @@ -12,12 +12,14 @@ public class Bob extends CartePersonnage{ this.setCondition(condition); } - @Override - public void utiliser(Joueur j){ - - } public void attaquer(Joueur j) { } + + @Override + public void utiliser() { + // TODO Auto-generated method stub + + } } diff --git a/src/personnage/CartePersonnage.java b/src/personnage/CartePersonnage.java index 362362c..0e17532 100644 --- a/src/personnage/CartePersonnage.java +++ b/src/personnage/CartePersonnage.java @@ -20,7 +20,7 @@ public abstract class CartePersonnage extends CarteCondition { //méthodes - public void utiliser() {}; + public abstract void utiliser(); public void attaquer(Joueur j) {}; diff --git a/src/personnage/Charles.java b/src/personnage/Charles.java index 37263f1..6f656bb 100644 --- a/src/personnage/Charles.java +++ b/src/personnage/Charles.java @@ -13,4 +13,10 @@ public class Charles extends CartePersonnage{ public void attaquer(Joueur j) { } + + @Override + public void utiliser() { + // TODO Auto-generated method stub + + } } diff --git a/src/personnage/Daniel.java b/src/personnage/Daniel.java index 8d9c95e..d579033 100644 --- a/src/personnage/Daniel.java +++ b/src/personnage/Daniel.java @@ -34,4 +34,9 @@ public class Daniel extends CartePersonnage{ this.setCondition(winCondition); } + @Override + public void utiliser() { + // TODO Auto-generated method stub + + } } diff --git a/src/personnage/Emi.java b/src/personnage/Emi.java index 7e8991d..603bd31 100644 --- a/src/personnage/Emi.java +++ b/src/personnage/Emi.java @@ -15,5 +15,11 @@ public class Emi extends CartePersonnage{ public void deplacer() { } + + @Override + public void utiliser() { + // TODO Auto-generated method stub + + } } diff --git a/src/personnage/LoupGarou.java b/src/personnage/LoupGarou.java index 4f97ab8..e662440 100644 --- a/src/personnage/LoupGarou.java +++ b/src/personnage/LoupGarou.java @@ -15,4 +15,10 @@ public class LoupGarou extends CartePersonnage { public void contreAttaquer(Joueur j) { } + + @Override + public void utiliser() { + // TODO Auto-generated method stub + + } } diff --git a/src/personnage/Metamorphe.java b/src/personnage/Metamorphe.java index 137deae..3a22e1e 100644 --- a/src/personnage/Metamorphe.java +++ b/src/personnage/Metamorphe.java @@ -9,5 +9,11 @@ public class Metamorphe extends CartePersonnage{ super(nom, pv, joueur); this.setCondition(new WinConditionShadow()); } + + @Override + public void utiliser() { + // TODO Auto-generated method stub + + } } diff --git a/src/personnage/Unique.java b/src/personnage/Unique.java index 99088b9..96011a8 100644 --- a/src/personnage/Unique.java +++ b/src/personnage/Unique.java @@ -20,5 +20,11 @@ public class Unique extends CartePersonnage{ public void setCapaciteUsed(boolean capaciteUsed) { this.capaciteUsed = capaciteUsed; } + + @Override + public void utiliser() { + // TODO Auto-generated method stub + + } } diff --git a/src/personnage/Vampire.java b/src/personnage/Vampire.java index 329d5d5..c69bb65 100644 --- a/src/personnage/Vampire.java +++ b/src/personnage/Vampire.java @@ -19,9 +19,10 @@ public class Vampire extends CartePersonnage{ this.setCondition(new WinConditionShadow()); } - public void utiliser(Joueur j) + @Override + public void utiliser() { - this.getEffet().utiliser(j); + this.getEffet().utiliser(this.getJoueur()); } /** @@ -38,4 +39,6 @@ public class Vampire extends CartePersonnage{ utiliser(this.getJoueur()); } } + + } diff --git a/tests/condition/ConditionClassPersonnageTest.java b/tests/condition/ConditionClassPersonnageTest.java index cac4434..0d2cf00 100644 --- a/tests/condition/ConditionClassPersonnageTest.java +++ b/tests/condition/ConditionClassPersonnageTest.java @@ -28,7 +28,7 @@ class ConditionClassPersonnageTest { ConditionClassPersonnage cc = new ConditionClassPersonnage(classes); Joueur j = new Joueur(null); - CartePersonnage cp1 = new Allie(null, 0, j); + CartePersonnage cp1 = new Allie(j); // Le personnage fait partie des classes. @@ -51,7 +51,7 @@ class ConditionClassPersonnageTest { ConditionClassPersonnage cc = new ConditionClassPersonnage(classes); Joueur j = new Joueur(null); - CartePersonnage cp1 = new Allie(null, 0, j); + CartePersonnage cp1 = new Allie(j); j.setCartePersonnage(cp1); assertFalse(cc.isTrue(j)); diff --git a/tests/condition/ConditionClassTest.java b/tests/condition/ConditionClassTest.java deleted file mode 100644 index 79fed1f..0000000 --- a/tests/condition/ConditionClassTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package condition; - -import static org.junit.jupiter.api.Assertions.*; - -import org.junit.jupiter.api.Test; - -class ConditionClassTest { - - @Test - void test() { - fail("Not yet implemented"); - } - -} diff --git a/tests/condition/ConditionStatistiquesTest.java b/tests/condition/ConditionStatistiquesTest.java index d093d0b..13bd5aa 100644 --- a/tests/condition/ConditionStatistiquesTest.java +++ b/tests/condition/ConditionStatistiquesTest.java @@ -61,8 +61,6 @@ class ConditionStatistiquesTest { cs = new ConditionStatistiques(false,"test",randInt2,ConditionStatistiques.LESS); assertEquals(cs.isTrue(joueur),randInt3 <= randInt2); - cs = new ConditionStatistiques(false,"test",randInt3,ConditionStatistiques.LESS); - assertEquals(cs.isTrue(joueur),randInt3 <= randInt2); } @Test @@ -79,6 +77,7 @@ class ConditionStatistiquesTest { //Valeur censée être comprise entre 0 et 2 -1); + assertFalse(cs.isTrue(joueur)); } diff --git a/tests/personnage/AllieTest.java b/tests/personnage/AllieTest.java new file mode 100644 index 0000000..bacb864 --- /dev/null +++ b/tests/personnage/AllieTest.java @@ -0,0 +1,57 @@ +package personnage; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import main.Joueur; +import main.Plateau; + +class AllieTest { + + Joueur j1; + Plateau p; + Random rand; + Allie a; + + @BeforeEach + void init() + { + rand = new Random(); + List joueurs = new ArrayList(); + j1 = new Joueur("Michel"); + + joueurs.add(j1); + + p = new Plateau(joueurs); + + a = new Allie(j1); + j1.setPlateau(p); + j1.setCartePersonnage(a); + + } + + @Test + void utiliser_SoinTotal() { + + j1.setStat("HP", 0); + j1.getCartePersonnage().utiliser(); + + int pvAllie = j1.getCartePersonnage().getPv(); + + assertEquals(pvAllie,j1.getStat("HP")); + + j1.setStat("HP", 0); + j1.getCartePersonnage().utiliser(); + + // Le soin n'a fonctionné qu'une seule fois + assertEquals(0,j1.getStat("HP")); + + } + +}