WinCondition Allie

This commit is contained in:
Paul Gross 2020-04-18 14:05:53 +02:00
parent 61e3e64f08
commit ff0e8121e1
10 changed files with 120 additions and 19 deletions

View File

@ -14,4 +14,10 @@ public abstract class CarteCondition extends CarteEffet{
public Condition getCondition() { public Condition getCondition() {
return condition; return condition;
} }
public void setCondition(Condition condition) {
this.condition = condition;
}
} }

View File

@ -5,8 +5,6 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import main.Joueur; import main.Joueur;
import carte.CartePersonnage;
import carte.Type;
public class ConditionClass<T> extends Condition{ public class ConditionClass<T> extends Condition{
@ -37,7 +35,7 @@ public class ConditionClass<T> extends Condition{
public boolean isTrue(Joueur joueur) public boolean isTrue(Joueur joueur)
{ {
Class<? extends T> ccp = (Class<? extends T>) joueur.getCartePersonnage().getClass(); Class<? extends T> ccp = (Class<? extends T>) joueur.getCartePersonnage().getClass();
Class<? extends T> cct = (Class<? extends T>) joueur.getType().getClass(); Class<? extends T> cct = (Class<? extends T>) joueur.getEquipe().getClass();
for(Class<? extends T> classe : classes) { for(Class<? extends T> classe : classes) {

View File

@ -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;
}
}
}

View File

@ -110,4 +110,9 @@ public class Joueur {
return this.revele; return this.revele;
} }
public Object getCartePersonnage() {
// TODO Auto-generated method stub
return null;
}
} }

View File

@ -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_NEUTRAL = "nb_morts_neutral";
public static final String PLATEAU_NB_MORTS_HUNTER = "nb_morts_hunter"; 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_NB_MORTS_SHADOW = "nb_morts_shadow";
public static final String PLATEAU_PARTIE_FINIE = "partie_finie";
private Map<String, Integer> stats; private Map<String, Integer> stats;
@ -37,6 +38,8 @@ public class Plateau {
stats.put(PLATEAU_NB_MORTS_NEUTRAL, 0); stats.put(PLATEAU_NB_MORTS_NEUTRAL, 0);
stats.put(PLATEAU_NB_MORTS_HUNTER, 0); stats.put(PLATEAU_NB_MORTS_HUNTER, 0);
stats.put(PLATEAU_NB_MORTS_SHADOW, 0); stats.put(PLATEAU_NB_MORTS_SHADOW, 0);
stats.put(PLATEAU_PARTIE_FINIE, 0);
} }
public int rollDices() { public int rollDices() {
@ -85,4 +88,16 @@ public class Plateau {
public List<Joueur> getJoueurs() { public List<Joueur> getJoueurs() {
return this.joueurs; return this.joueurs;
} }
public int getStat(String key) {
if(this.stats.containsKey(key))
{
return this.getStat(key);
}else {
//TODO Exception
return -1;
}
}
} }

View File

@ -1,24 +1,39 @@
package personnage; package personnage;
import condition.Condition; import condition.Condition;
import condition.ConditionMultiple;
import condition.ConditionStatistiques;
import effet.Action; import effet.Action;
import effet.ActionAltererStatistiquesJoueur; import effet.ActionAltererStatistiquesJoueur;
import effet.Effet; import effet.Effet;
import effet.EffetSelf; import effet.EffetSelf;
import main.Joueur; import main.Joueur;
import main.Plateau;
public class Allie extends Unique{ public class Allie extends Unique{
public Allie(String nom, int hp, Joueur joueur, Condition condition,boolean capaciteUsed) { public Allie(String nom, int hp, Joueur joueur,boolean capaciteUsed) {
super(nom, hp, joueur, condition, capaciteUsed); super(nom, hp, joueur, capaciteUsed);
Action action = new ActionAltererStatistiquesJoueur("HP",this.getPv(),false); Action action = new ActionAltererStatistiquesJoueur("HP",this.getPv(),false);
Effet effet = new EffetSelf(action); Effet effet = new EffetSelf(action);
this.setEffet(effet); 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
* <br> Effet : Soin total
* @param j
* @return void
*/
public void utiliser(Joueur j) { public void utiliser(Joueur j) {
if(!this.isCapaciteUsed()) { if(!this.isCapaciteUsed()) {

View File

@ -4,16 +4,12 @@ import condition.Condition;
import main.Joueur; import main.Joueur;
public class Bob extends CartePersonnage{ public class Bob extends CartePersonnage{
//attributs
private boolean capaciteUsed;
//constructeur
public Bob(String nom, int hp, Joueur joueur, Condition condition,boolean capaciteUsed) { public Bob(String nom, int hp, Joueur joueur, Condition condition,boolean capaciteUsed) {
super(nom, hp, joueur, condition); super(nom, hp, joueur, condition);
this.capaciteUsed=capaciteUsed;
} }
//méthode
public void attaquer(Joueur j) { public void attaquer(Joueur j) {
} }

View File

@ -4,7 +4,7 @@ import carte.CarteCondition;
import condition.Condition; import condition.Condition;
import main.Joueur; import main.Joueur;
public class CartePersonnage extends CarteCondition { public abstract class CartePersonnage extends CarteCondition {
//attributs //attributs
private String nom; private String nom;
private int pv; private int pv;
@ -12,11 +12,10 @@ public class CartePersonnage extends CarteCondition {
private Condition condition; private Condition condition;
//constructeurs //constructeurs
public CartePersonnage(String nom, int pv, Joueur joueur,Condition condition){ public CartePersonnage(String nom, int pv, Joueur joueur){
this.nom=nom; this.nom=nom;
this.setPv(pv); this.pv = pv;
this.joueur=joueur; this.joueur=joueur;
this.condition=condition;
} }
//méthodes //méthodes

View File

@ -7,8 +7,8 @@ public class Unique extends CartePersonnage{
private boolean capaciteUsed; private boolean capaciteUsed;
public Unique(String nom, int hp, Joueur joueur,Condition condition,boolean capaciteUsed) { public Unique(String nom, int hp, Joueur joueur,boolean capaciteUsed) {
super(nom, hp, joueur, condition); super(nom, hp, joueur);
this.setCapaciteUsed(capaciteUsed); this.setCapaciteUsed(capaciteUsed);
} }

View File

@ -25,7 +25,7 @@ public class Vampire extends CartePersonnage{
/** /**
* Lance l'action d'attaquer de Vampire * Lance l'action d'attaquer de Vampire
* <br><br> Efffet : * <br><br> Effet :
* @param j Le joueur qui subit l'attaque * @param j Le joueur qui subit l'attaque
* @return void * @return void
*/ */