From ff0e8121e1766ced6018e4824880616cf7acf4c9 Mon Sep 17 00:00:00 2001 From: Paul Gross Date: Sat, 18 Apr 2020 14:05:53 +0200 Subject: [PATCH] WinCondition Allie --- src/carte/CarteCondition.java | 6 +++ src/condition/ConditionClass.java | 4 +- src/condition/ConditionStatistiques.java | 67 ++++++++++++++++++++++++ src/main/Joueur.java | 5 ++ src/main/Plateau.java | 15 ++++++ src/personnage/Allie.java | 23 ++++++-- src/personnage/Bob.java | 6 +-- src/personnage/CartePersonnage.java | 7 ++- src/personnage/Unique.java | 4 +- src/personnage/Vampire.java | 2 +- 10 files changed, 120 insertions(+), 19 deletions(-) create mode 100644 src/condition/ConditionStatistiques.java diff --git a/src/carte/CarteCondition.java b/src/carte/CarteCondition.java index cdc655f..a36b4cf 100644 --- a/src/carte/CarteCondition.java +++ b/src/carte/CarteCondition.java @@ -14,4 +14,10 @@ public abstract class CarteCondition extends CarteEffet{ public Condition getCondition() { return condition; } + + public void setCondition(Condition condition) { + this.condition = condition; + } + + } diff --git a/src/condition/ConditionClass.java b/src/condition/ConditionClass.java index 7630b20..d699266 100644 --- a/src/condition/ConditionClass.java +++ b/src/condition/ConditionClass.java @@ -5,8 +5,6 @@ import java.util.Arrays; import java.util.List; import main.Joueur; -import carte.CartePersonnage; -import carte.Type; public class ConditionClass extends Condition{ @@ -37,7 +35,7 @@ public class ConditionClass extends Condition{ public boolean isTrue(Joueur joueur) { Class ccp = (Class) joueur.getCartePersonnage().getClass(); - Class cct = (Class) joueur.getType().getClass(); + Class cct = (Class) joueur.getEquipe().getClass(); for(Class classe : classes) { diff --git a/src/condition/ConditionStatistiques.java b/src/condition/ConditionStatistiques.java new file mode 100644 index 0000000..1b05b99 --- /dev/null +++ b/src/condition/ConditionStatistiques.java @@ -0,0 +1,67 @@ +package condition; + +import main.Joueur; + +public class ConditionStatistiques extends Condition { + + public static final boolean PLATEAU = false; + public static final boolean JOUEUR = true; + + public static final int EQUAL = 0; + public static final int MORE = 1; + public static final int LESS = 2; + + + private boolean plateauJoueur; + private String key; + private int value; + private int equalMoreLess; + + + /** + * + * @param plateauJoueur + * @param key + * @param value + * @param equalMoreLess + */ + public ConditionStatistiques(boolean plateauJoueur,String key,int value,int equalMoreLess) { + + if(equalMoreLess >= 0 && equalMoreLess <= 2) this.equalMoreLess = equalMoreLess; + else // TODO exception + + this.key = key; + this.value = value; + + this.plateauJoueur = plateauJoueur; + } + + /** + * @param joueur sur lequel on vérifie la condition + * + */ + @Override + public boolean isTrue(Joueur joueur) { + + int valeur; + if(this.plateauJoueur) + { + valeur = joueur.getPlateau().getStat(key); + + }else { + valeur = joueur.getStat(key); + } + + switch(this.equalMoreLess) { + case EQUAL: + return this.value == valeur; + case MORE: + return this.value <= valeur; + case LESS: + return this.value >= valeur; + default: + // TODO exception + return false; + } + } +} diff --git a/src/main/Joueur.java b/src/main/Joueur.java index 038eab0..06f6a10 100644 --- a/src/main/Joueur.java +++ b/src/main/Joueur.java @@ -110,4 +110,9 @@ public class Joueur { return this.revele; } + public Object getCartePersonnage() { + // TODO Auto-generated method stub + return null; + } + } diff --git a/src/main/Plateau.java b/src/main/Plateau.java index fecc282..2446d2a 100644 --- a/src/main/Plateau.java +++ b/src/main/Plateau.java @@ -16,6 +16,7 @@ public class Plateau { 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"; private Map stats; @@ -37,6 +38,8 @@ public class Plateau { 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); + } public int rollDices() { @@ -85,4 +88,16 @@ public class Plateau { public List getJoueurs() { return this.joueurs; } + + public int getStat(String key) { + if(this.stats.containsKey(key)) + { + return this.getStat(key); + }else { + + //TODO Exception + return -1; + } + + } } diff --git a/src/personnage/Allie.java b/src/personnage/Allie.java index ca9eb7d..b7a81cc 100644 --- a/src/personnage/Allie.java +++ b/src/personnage/Allie.java @@ -1,24 +1,39 @@ package personnage; import condition.Condition; +import condition.ConditionMultiple; +import condition.ConditionStatistiques; import effet.Action; import effet.ActionAltererStatistiquesJoueur; import effet.Effet; import effet.EffetSelf; import main.Joueur; +import main.Plateau; public class Allie extends Unique{ - public Allie(String nom, int hp, Joueur joueur, Condition condition,boolean capaciteUsed) { - super(nom, hp, joueur, condition, capaciteUsed); - + public Allie(String nom, int hp, Joueur joueur,boolean capaciteUsed) { + super(nom, hp, joueur, capaciteUsed); Action action = new ActionAltererStatistiquesJoueur("HP",this.getPv(),false); Effet effet = new EffetSelf(action); this.setEffet(effet); + + Condition condition = new ConditionMultiple( + + new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.PLATEAU_PARTIE_FINIE, 1, ConditionStatistiques.EQUAL) + , new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 0, ConditionStatistiques.MORE) + ); + + this.setCondition(condition); } - + /** + * Lance l'effet d'Allie + *
Effet : Soin total + * @param j + * @return void + */ public void utiliser(Joueur j) { if(!this.isCapaciteUsed()) { diff --git a/src/personnage/Bob.java b/src/personnage/Bob.java index f965721..56e209f 100644 --- a/src/personnage/Bob.java +++ b/src/personnage/Bob.java @@ -4,16 +4,12 @@ import condition.Condition; import main.Joueur; public class Bob extends CartePersonnage{ - //attributs - private boolean capaciteUsed; - //constructeur public Bob(String nom, int hp, Joueur joueur, Condition condition,boolean capaciteUsed) { super(nom, hp, joueur, condition); - this.capaciteUsed=capaciteUsed; } - //méthode + public void attaquer(Joueur j) { } diff --git a/src/personnage/CartePersonnage.java b/src/personnage/CartePersonnage.java index 71cd874..362362c 100644 --- a/src/personnage/CartePersonnage.java +++ b/src/personnage/CartePersonnage.java @@ -4,7 +4,7 @@ import carte.CarteCondition; import condition.Condition; import main.Joueur; -public class CartePersonnage extends CarteCondition { +public abstract class CartePersonnage extends CarteCondition { //attributs private String nom; private int pv; @@ -12,11 +12,10 @@ public class CartePersonnage extends CarteCondition { private Condition condition; //constructeurs - public CartePersonnage(String nom, int pv, Joueur joueur,Condition condition){ + public CartePersonnage(String nom, int pv, Joueur joueur){ this.nom=nom; - this.setPv(pv); + this.pv = pv; this.joueur=joueur; - this.condition=condition; } //méthodes diff --git a/src/personnage/Unique.java b/src/personnage/Unique.java index 76a6785..aa66828 100644 --- a/src/personnage/Unique.java +++ b/src/personnage/Unique.java @@ -7,8 +7,8 @@ public class Unique extends CartePersonnage{ private boolean capaciteUsed; - public Unique(String nom, int hp, Joueur joueur,Condition condition,boolean capaciteUsed) { - super(nom, hp, joueur, condition); + public Unique(String nom, int hp, Joueur joueur,boolean capaciteUsed) { + super(nom, hp, joueur); this.setCapaciteUsed(capaciteUsed); } diff --git a/src/personnage/Vampire.java b/src/personnage/Vampire.java index 7ef722b..16ede40 100644 --- a/src/personnage/Vampire.java +++ b/src/personnage/Vampire.java @@ -25,7 +25,7 @@ public class Vampire extends CartePersonnage{ /** * Lance l'action d'attaquer de Vampire - *

Efffet : + *

Effet : * @param j Le joueur qui subit l'attaque * @return void */