diff --git a/src/condition/ConditionClass.java b/src/condition/ConditionClass.java deleted file mode 100644 index d699266..0000000 --- a/src/condition/ConditionClass.java +++ /dev/null @@ -1,48 +0,0 @@ -package condition; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import main.Joueur; - - -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.getEquipe().getClass(); - - for(Class classe : classes) { - - - if(ccp.getClass() == classe.getClass() || cct.getClass() == classe.getClass() ) return true; - } - return false; - } - -} diff --git a/src/condition/ConditionClassPersonnage.java b/src/condition/ConditionClassPersonnage.java new file mode 100644 index 0000000..5912d24 --- /dev/null +++ b/src/condition/ConditionClassPersonnage.java @@ -0,0 +1,49 @@ +package condition; + +import java.util.ArrayList; +import java.util.List; + +import main.Joueur; +import personnage.CartePersonnage; + + +public class ConditionClassPersonnage extends Condition{ + + private List> classes; + + public ConditionClassPersonnage(List> classes){ + + this.classes = new ArrayList>(); + this.classes.addAll(classes); + } + + + + + /** + * Vérifie qu'il existe au moins une classe qui correspond au Personnage du Joueur. + *

+ * exemple : + * + * classes = { Emi.class, Metamorphe.class, ... etc } + *
+ * Si la class de la carte du joueur correspond à un des élements dans classes alors on renvoie vrai. + * + * @param joueur Le joueur sur lequel on vérifie les conditions. + * @return boolean + */ + @Override + public boolean isTrue(Joueur joueur) + { + Class ccp = joueur.getCartePersonnage().getClass(); + + for(Class classe : classes) { + + if(ccp == classe + //|| cct.getClass() == classe.getClass() + ) return true; + } + return false; + } + +} diff --git a/src/condition/ConditionType.java b/src/condition/ConditionType.java new file mode 100644 index 0000000..74bccca --- /dev/null +++ b/src/condition/ConditionType.java @@ -0,0 +1,46 @@ +package condition; + +import java.util.ArrayList; +import java.util.List; + +import main.Joueur; + + +public class ConditionType extends Condition{ + + private List equipes; + + public ConditionType(List equipes){ + + this.equipes = new ArrayList(); + this.equipes.addAll(equipes); + } + + + + + /** + * Vérifie qu'il existe au moins une classe qui correspond à l'équipe du Joueur. + *

+ * exemple : + * + * classes = { NEUTRE,SHADOW,HUNTER } + *
+ * Si l'équipe du joueur correspond à un des élements dans la liste des équipes alors on renvoie vrai. + * + * @param joueur Le joueur sur lequel on vérifie les conditions. + * @return boolean + */ + @Override + public boolean isTrue(Joueur joueur) + { + Joueur.Equipe equipeJoueur = joueur.getEquipe(); + + for(Joueur.Equipe equipe : equipes) { + + if(equipeJoueur == equipe) return true; + } + return false; + } + +} diff --git a/src/main/ControleurIA.java b/src/main/ControleurIA.java index 50a163c..1a73666 100644 --- a/src/main/ControleurIA.java +++ b/src/main/ControleurIA.java @@ -2,6 +2,8 @@ package main; import java.util.ArrayList; import java.util.List; +import main.Joueur.Equipe; + public class ControleurIA { public static boolean choixUtiliserPouvoirLieu() { @@ -43,8 +45,8 @@ public class ControleurIA { public static List getEnnemisJoueurs(JoueurVirtuel jIA, List joueursLieu) { List res = new ArrayList<>(); - String equipejIA = jIA.getEquipe(); - if (equipejIA.equals("NEUTRE")) + Equipe equipejIA = jIA.getEquipe(); + if (equipejIA == Joueur.Equipe.NEUTRE) res = joueursLieu; else { for (Joueur j : joueursLieu) { @@ -57,7 +59,7 @@ public class ControleurIA { // loup-garou : si attaquee par joueur pas du meme camps 60%? devoilement public static boolean devoilerIALoupGarou(JoueurVirtuel jIA, Joueur jAttaquant) { - String equipejIA = jIA.getEquipe(); + Equipe equipejIA = jIA.getEquipe(); double rand = getRandomPercentage(); if (!equipejIA.equals(jAttaquant.getEquipe())) { if (rand < 60) @@ -76,7 +78,7 @@ public class ControleurIA { // vampire : si attaque joueur et propre vie<10?hp 60%? (plus vie baisse, plus // proba augmente) devoilement public static boolean devoilerIAVampire(JoueurVirtuel jIA, Joueur jAttaquee) { - String equipejIA = jIA.getEquipe(); + Equipe equipejIA = jIA.getEquipe(); double rand = getRandomPercentage(); if (!equipejIA.equals(jAttaquee.getEquipe())) { if (rand < 940 / 9 - (40 * jIA.getStat("HP"))) diff --git a/src/main/Joueur.java b/src/main/Joueur.java index 873d731..6cfd9e8 100644 --- a/src/main/Joueur.java +++ b/src/main/Joueur.java @@ -3,8 +3,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import carte.CarteLieu; import effet.Effet; +import personnage.CartePersonnage; @@ -14,6 +14,8 @@ public class Joueur { private String nom; private boolean revele; private Plateau plateau; + private CartePersonnage cartePersonnage; + private Equipe equipe; // map keys public static final String PLAYER_HP = "hp"; @@ -26,6 +28,12 @@ public class Joueur { private Map stats; + public enum Equipe{ + NEUTRE, + SHADOW, + HUNTER + } + public Joueur(String nom) { this.nom = nom; this.revele = false; @@ -46,8 +54,8 @@ public class Joueur { } //shadows, hunters ou neutre - public String getEquipe() { - return null; + public Equipe getEquipe() { + return this.equipe; } public int setStat(String key, int valeur) { @@ -111,9 +119,19 @@ public class Joueur { return this.revele; } - public Object getCartePersonnage() { - // TODO Auto-generated method stub - return null; + public CartePersonnage getCartePersonnage() { + return this.cartePersonnage; + } + + public void setCartePersonnage(CartePersonnage cp) { + + this.cartePersonnage = cp; + + } + + public void setEquipe(Equipe equipe) { + this.equipe = equipe; + } } diff --git a/tests/condition/ConditionClassPersonnageTest.java b/tests/condition/ConditionClassPersonnageTest.java new file mode 100644 index 0000000..02e6f46 --- /dev/null +++ b/tests/condition/ConditionClassPersonnageTest.java @@ -0,0 +1,62 @@ +package condition; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.Test; + +import main.Joueur; +import personnage.Allie; +import personnage.Bob; +import personnage.CartePersonnage; +import personnage.Daniel; + +class ConditionClassPersonnageTest { + + + + @Test + public void conditionClass_RenvoieAppartenancePersonnage() { + + + List> classes = new ArrayList>(); + classes.add(Allie.class); + classes.add(Daniel.class); + ConditionClassPersonnage cc = new ConditionClassPersonnage(classes); + + Joueur j = new Joueur(null); + CartePersonnage cp1 = new Allie(null, 0, j); + + + // Le personnage fait partie des classes. + j.setCartePersonnage(cp1); + assertTrue(cc.isTrue(j)); + + + CartePersonnage cp2 = new Bob(null, 0, j); + // Le personnage ne fait pas partie des classes + j.setCartePersonnage(cp2); + assertFalse(cc.isTrue(j)); + + } + + @Test + public void conditionClass_ListClassVide_RenvoieFalse() { + + + List> classes = new ArrayList>(); + + ConditionClassPersonnage cc = new ConditionClassPersonnage(classes); + Joueur j = new Joueur(null); + CartePersonnage cp1 = new Allie(null, 0, j); + j.setCartePersonnage(cp1); + assertFalse(cc.isTrue(j)); + + } + + + +} diff --git a/tests/condition/ConditionMultipleTest.java b/tests/condition/ConditionMultipleTest.java index b4816af..7e8fb58 100644 --- a/tests/condition/ConditionMultipleTest.java +++ b/tests/condition/ConditionMultipleTest.java @@ -4,9 +4,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; -import condition.Condition; -import condition.ConditionMultiple; -import condition.ConditionMultipleOR; import main.Joueur; class ConditionMultipleTest { diff --git a/tests/condition/ConditionTypeTest.java b/tests/condition/ConditionTypeTest.java new file mode 100644 index 0000000..767fd67 --- /dev/null +++ b/tests/condition/ConditionTypeTest.java @@ -0,0 +1,55 @@ +package condition; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.Test; + +import main.Joueur; +import personnage.Allie; +import personnage.Bob; +import personnage.CartePersonnage; +import personnage.Daniel; + +class ConditionTypeTest { + + + + @Test + public void conditionType_RenvoieAppartenanceEquipe() { + + + List equipes = new ArrayList(); + equipes.add(Joueur.Equipe.HUNTER); + equipes.add(Joueur.Equipe.NEUTRE); + ConditionType ct = new ConditionType(equipes); + + Joueur j = new Joueur(null); + j.setEquipe(Joueur.Equipe.NEUTRE); + + + assertTrue(ct.isTrue(j)); + + j.setEquipe(Joueur.Equipe.SHADOW); + assertFalse(ct.isTrue(j)); + + } + + @Test + public void conditionClass_ListTypeVide_RenvoieFalse() { + + + List equipes = new ArrayList(); + + ConditionType ct = new ConditionType(equipes); + Joueur j = new Joueur(null); + assertFalse(ct.isTrue(j)); + + } + + + +}