diff --git a/src/condition/ConditionMultipleOR.java b/src/condition/ConditionMultipleOR.java index 27a6fef..d27cf8b 100644 --- a/src/condition/ConditionMultipleOR.java +++ b/src/condition/ConditionMultipleOR.java @@ -5,6 +5,10 @@ import main.Joueur; public class ConditionMultipleOR extends ConditionMultiple{ + public ConditionMultipleOR(Condition ...conditions) { + super(conditions); + } + /** * Vérifie qu'au moins une des conditions soit vérifiée. * @param joueur Le joueur sur lequel on vérifie les conditions. diff --git a/src/main/Plateau.java b/src/main/Plateau.java index 2446d2a..3a4d6da 100644 --- a/src/main/Plateau.java +++ b/src/main/Plateau.java @@ -12,11 +12,14 @@ public class Plateau { private List lieux; - public static final String PLATEAU_NB_MORTS = "nb_morts"; - public static final String PLATEAU_NB_MORTS_NEUTRAL = "nb_morts_neutral"; - public static final String PLATEAU_NB_MORTS_HUNTER = "nb_morts_hunter"; - public static final String PLATEAU_NB_MORTS_SHADOW = "nb_morts_shadow"; - public static final String PLATEAU_PARTIE_FINIE = "partie_finie"; + public static final String NB_HUNTERS = "nb_hunters"; + public static final String NB_SHADOWS = "nb_shadows"; + public static final String NB_NEUTRES = "nb_neutres"; + public static final String NB_MORTS = "nb_morts"; + public static final String NB_MORTS_NEUTRAL = "nb_morts_neutral"; + public static final String NB_MORTS_HUNTER = "nb_morts_hunter"; + public static final String NB_MORTS_SHADOW = "nb_morts_shadow"; + public static final String PARTIE_FINIE = "partie_finie"; private Map stats; @@ -34,11 +37,14 @@ public class Plateau { stats = new HashMap<>(); // Initialisation plateau - stats.put(PLATEAU_NB_MORTS, 0); - stats.put(PLATEAU_NB_MORTS_NEUTRAL, 0); - stats.put(PLATEAU_NB_MORTS_HUNTER, 0); - stats.put(PLATEAU_NB_MORTS_SHADOW, 0); - stats.put(PLATEAU_PARTIE_FINIE, 0); + stats.put(NB_HUNTERS, 0); + stats.put(NB_SHADOWS, 0); + stats.put(NB_NEUTRES, 0); + stats.put(NB_MORTS, 0); + stats.put(NB_MORTS_NEUTRAL, 0); + stats.put(NB_MORTS_HUNTER, 0); + stats.put(NB_MORTS_SHADOW, 0); + stats.put(PARTIE_FINIE, 0); } diff --git a/src/personnage/LoupGarou.java b/src/personnage/LoupGarou.java index f918d03..c68133d 100644 --- a/src/personnage/LoupGarou.java +++ b/src/personnage/LoupGarou.java @@ -1,15 +1,26 @@ package personnage; import condition.Condition; +import condition.ConditionMultipleOR; +import condition.ConditionStatistiques; import main.Joueur; +import main.Plateau; public class LoupGarou extends CartePersonnage { //constructeur - public LoupGarou(String nom, int hp, Joueur joueur, Condition condition) { - super(nom, hp, joueur, condition); + public LoupGarou(String nom, int hp, Joueur joueur) { + super(nom, hp, joueur); + + int nbHunter = joueur.getPlateau().getStat(Plateau.NB_HUNTERS); + Condition condition = new ConditionMultipleOR( + new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.NB_MORTS_HUNTER, nbHunter, ConditionStatistiques.MORE) + , + new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.NB_MORTS_NEUTRAL, 3, ConditionStatistiques.MORE) + ); + this.setCondition(condition); } - //méthodes + //m�thodes public void contreAttaquer(Joueur j) { } diff --git a/src/personnage/Metamorphe.java b/src/personnage/Metamorphe.java new file mode 100644 index 0000000..7f41e6a --- /dev/null +++ b/src/personnage/Metamorphe.java @@ -0,0 +1,25 @@ +package personnage; + +import condition.Condition; +import condition.ConditionMultipleOR; +import condition.ConditionStatistiques; +import main.Joueur; +import main.Plateau; + +public class Metamorphe extends CartePersonnage{ + + public Metamorphe(String nom, int pv, Joueur joueur) { + super(nom, pv, joueur); + + + // WinCondition + int nbHunter = joueur.getPlateau().getStat(Plateau.NB_HUNTERS); + Condition condition = new ConditionMultipleOR( + new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.NB_MORTS_HUNTER, nbHunter, ConditionStatistiques.MORE) + , + new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.NB_MORTS_NEUTRAL, 3, ConditionStatistiques.MORE) + ); + this.setCondition(condition); + } + +} diff --git a/src/personnage/Vampire.java b/src/personnage/Vampire.java index 16ede40..d452e5e 100644 --- a/src/personnage/Vampire.java +++ b/src/personnage/Vampire.java @@ -1,21 +1,31 @@ package personnage; import condition.Condition; +import condition.ConditionMultipleOR; +import condition.ConditionStatistiques; import effet.Action; import effet.ActionAltererStatistiquesJoueur; import effet.Effet; import effet.EffetSelf; import main.Joueur; +import main.Plateau; public class Vampire extends CartePersonnage{ - public Vampire(String nom, int hp, Joueur joueur, Condition condition) { - super(nom, hp, joueur, condition); + public Vampire(String nom, int hp, Joueur joueur) { + super(nom, hp, joueur); Action action = new ActionAltererStatistiquesJoueur("HP",2,true); Effet effet = new EffetSelf(action); this.setEffet(effet); + int nbHunter = joueur.getPlateau().getStat(Plateau.NB_HUNTERS); + Condition condition = new ConditionMultipleOR( + new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.NB_MORTS_HUNTER, nbHunter, ConditionStatistiques.MORE) + , + new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.NB_MORTS_NEUTRAL, 3, ConditionStatistiques.MORE) + ); + this.setCondition(condition); } public void utiliser(Joueur j)