Merge branch 'development' of https://github.com/PTE-SH/ShadowHunterGame into development

This commit is contained in:
JunkJumper 2020-05-06 13:22:09 +02:00
commit 36991016ba
58 changed files with 967 additions and 510 deletions

View File

@ -13,12 +13,19 @@ public abstract class CarteCondition extends CarteEffet implements Serializable{
*/ */
private static final long serialVersionUID = 903022795821166067L; private static final long serialVersionUID = 903022795821166067L;
public CarteCondition() {
super("","");
this.condition = new Condition();
}
public CarteCondition(String nom, String description) { public CarteCondition(String nom, String description) {
super(nom, description); super(nom, description);
} }
private Condition condition; private Condition condition;

View File

@ -14,11 +14,14 @@ public abstract class CarteEffet extends Carte implements Serializable{
private static final long serialVersionUID = -5248405395465365805L; private static final long serialVersionUID = -5248405395465365805L;
private Effet effet; private Effet effet;
public CarteEffet(String nom, String description) { public CarteEffet(String nom, String description) {
super(nom, description); super(nom, description);
} }
/* /*
* @param j Appel la méthode utiliser de effet sur le joueur j * @param j Appel la méthode utiliser de effet sur le joueur j
*/ */

View File

@ -4,10 +4,14 @@ import main.Joueur;
import main.Type; import main.Type;
public abstract class Equipement extends CartePiochable<Type>{ public abstract class CarteEquipement<T extends Type> extends CartePiochable<Type>{
/**
*
*/
private static final long serialVersionUID = 7537771209935892801L;
public Equipement(String nom, String description) { public CarteEquipement(String nom, String description) {
super(nom, description); super(nom, description);
// TODO Auto-generated constructor stub // TODO Auto-generated constructor stub
} }

View File

@ -0,0 +1,23 @@
package carte;
import main.Joueur;
import main.Type;
public class CarteEquipementEffet<T extends Type> extends CarteEquipement<Type> {
public CarteEquipementEffet(String nom, String description) {
super(nom, description);
}
/**
*
*/
private static final long serialVersionUID = -7036514419711836673L;
@Override
public void reverse(Joueur j) {
// TODO Auto-generated method stub
}
}

View File

@ -0,0 +1,37 @@
package carte;
import condition.Condition;
import effet.Effet;
import effet.action.ActionAltererStatistiquesJoueur;
import main.Joueur;
import main.Type;
public class CarteEquipementStat<T extends Type> extends CarteEquipement<Type>{
/**
*
*/
private static final long serialVersionUID = 1602387056611454284L;
public CarteEquipementStat(String nom, String description) {
super(nom, description);
}
public CarteEquipementStat(Effet effet, Condition condition) {
super("","");
this.setEffet(effet);
this.setCondition(condition);
}
public CarteEquipementStat(Effet effet) {
super("","");
this.setEffet(effet);
this.setCondition(new Condition());
}
@Override
public void reverse(Joueur j) {
ActionAltererStatistiquesJoueur action = ((ActionAltererStatistiquesJoueur) this.getEffet().getAction()).getReverseAction();
action.affecte(j, j);
}
}

View File

@ -4,6 +4,8 @@ import java.io.Serializable;
import condition.Condition; import condition.Condition;
import effet.Effet; import effet.Effet;
import effet.EffetChoisirCible;
import effet.EffetSelf;
import main.Joueur; import main.Joueur;
import main.Type; import main.Type;
@ -17,11 +19,17 @@ public class CartePiochable<T extends Type> extends CarteCondition implements Se
} }
public CartePiochable(Effet e, Condition c) { public CartePiochable(Effet e, Condition c) {
super("",""); super();
this.setEffet(e); this.setEffet(e);
this.setCondition(c); this.setCondition(c);
} }
public CartePiochable(Effet effet) {
super();
this.setEffet(effet);
this.setCondition(new Condition());
}
/* /*
* @param j Appel la méthode utiliser de effet sur le joueur j * @param j Appel la méthode utiliser de effet sur le joueur j
*/ */

View File

@ -1,17 +0,0 @@
package carte;
import effet.action.ActionAltererStatistiquesJoueur;
import main.Joueur;
public class EquipementStat extends Equipement{
public EquipementStat(String nom, String description) {
super(nom, description);
}
@Override
public void reverse(Joueur j) {
ActionAltererStatistiquesJoueur action = ((ActionAltererStatistiquesJoueur) this.getEffet().getAction()).getReverseAction();
action.affecte(j, j);
}
}

View File

@ -1,6 +1,7 @@
package condition; package condition;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import main.Joueur; import main.Joueur;
@ -9,6 +10,10 @@ import personnage.CartePersonnage;
public class ConditionClassPersonnage extends Condition{ public class ConditionClassPersonnage extends Condition{
/**
*
*/
private static final long serialVersionUID = -2298344287059138254L;
private List<Class<? extends CartePersonnage>> classes; private List<Class<? extends CartePersonnage>> classes;
@ -21,7 +26,6 @@ public class ConditionClassPersonnage extends Condition{
* @param classes Les Class des différents Personnage's. * @param classes Les Class des différents Personnage's.
*/ */
public ConditionClassPersonnage(List<Class<? extends CartePersonnage>> classes){ public ConditionClassPersonnage(List<Class<? extends CartePersonnage>> classes){
this.classes = new ArrayList<Class<? extends CartePersonnage>>(); this.classes = new ArrayList<Class<? extends CartePersonnage>>();
this.classes.addAll(classes); this.classes.addAll(classes);
} }
@ -29,6 +33,14 @@ public class ConditionClassPersonnage extends Condition{
public ConditionClassPersonnage(Class<? extends CartePersonnage>...classes) {
this.classes = new ArrayList<Class<? extends CartePersonnage>>();
this.classes.addAll(Arrays.asList(classes));
}
/** /**
* Vérifie qu'il existe au moins une classe qui correspond au Personnage du Joueur. * Vérifie qu'il existe au moins une classe qui correspond au Personnage du Joueur.
* <br><br> * <br><br>

View File

@ -1,17 +1,32 @@
package condition; package condition;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import main.Joueur; import main.Joueur;
import personnage.CartePersonnage; import personnage.CartePersonnage;
import personnage.CartePersonnage.Equipe;
public class ConditionType extends Condition{ public class ConditionEquipe extends Condition{
/**
*
*/
private static final long serialVersionUID = 8261153600401164649L;
private List<CartePersonnage.Equipe> equipes; private List<CartePersonnage.Equipe> equipes;
public ConditionType(List<CartePersonnage.Equipe> equipes){ public ConditionEquipe(Equipe e) {
this.equipes = new ArrayList<CartePersonnage.Equipe>();
this.equipes.add(e);
}
public ConditionEquipe(Equipe...equipes) {
this.equipes = Arrays.asList(equipes);
}
public ConditionEquipe(List<CartePersonnage.Equipe> equipes){
this.equipes = new ArrayList<CartePersonnage.Equipe>(); this.equipes = new ArrayList<CartePersonnage.Equipe>();
this.equipes.addAll(equipes); this.equipes.addAll(equipes);
@ -20,6 +35,11 @@ public class ConditionType extends Condition{
/** /**
* Vérifie qu'il existe au moins une classe qui correspond à l'équipe du Joueur. * Vérifie qu'il existe au moins une classe qui correspond à l'équipe du Joueur.
* <br><br> * <br><br>

View File

@ -1,6 +1,7 @@
package condition; package condition;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import main.Joueur; import main.Joueur;
@ -15,6 +16,11 @@ public class ConditionMultiple extends Condition {
this.conditions.addAll(conditions); this.conditions.addAll(conditions);
} }
public ConditionMultiple(Condition...conditions) {
this.conditions = new ArrayList<Condition>();
this.conditions.addAll(Arrays.asList(conditions));
}
/** /**
* Vérifie que toutes les conditions soient vraies * Vérifie que toutes les conditions soient vraies
* @param joueur Le joueur sur lequel on vérifie les conditions. * @param joueur Le joueur sur lequel on vérifie les conditions.

View File

@ -0,0 +1,16 @@
package condition;
import main.Joueur;
public class ConditionReveal extends Condition {
/**
*
*/
private static final long serialVersionUID = -7476657033160343165L;
public boolean isTrue(Joueur joueur) {
return joueur.getRevele();
}
}

View File

@ -0,0 +1,233 @@
package database;
import carte.CarteEquipementStat;
import carte.CartePiochable;
import condition.ConditionClassPersonnage;
import condition.ConditionEquipe;
import condition.ConditionMultiple;
import condition.ConditionReveal;
import condition.ConditionStatistiques;
import effet.EffetChoisirCible;
import effet.EffetChoisirEffet;
import effet.EffetCiblerTous;
import effet.EffetMultiple;
import effet.EffetSelf;
import effet.action.ActionAltererStatistiquesJoueur;
import effet.action.ActionAltererStatistiquesJoueurRoll;
import effet.action.ActionMultiple;
import effet.action.ActionReveal;
import effet.action.ActionVoler;
import main.Joueur;
import main.TypeLumiere;
import main.TypeTenebre;
import main.TypeVision;
import personnage.Allie;
import personnage.CartePersonnage;
import personnage.Emi;
import personnage.LoupGarou;
import personnage.Metamorphe;
import personnage.Vampire;
public class CreatingCardsTest {
public static void main(String[] args) {
// Lumière
//Ange gardien
insert(2,new CartePiochable<TypeLumiere>(
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_IMMUNITY, 1, true))));
//Avénement suprême
insert(3,new CartePiochable<TypeLumiere>(
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 20, true))
,new ConditionMultiple(new ConditionEquipe(CartePersonnage.Equipe.HUNTER), new ConditionReveal())
));
//Barre de chocolat
insert(4,new CartePiochable<TypeLumiere>(
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 20, true))
,new ConditionMultiple(new ConditionClassPersonnage(Allie.class,Emi.class,Metamorphe.class), new ConditionReveal())
));
//Bénédiction
insert(5,new CartePiochable<TypeLumiere>(new EffetChoisirCible(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP,6, true))));
// BOUSSOLE mystique
// 6
// 7
// 8
// Eau bénite
insert(9,new CartePiochable<TypeLumiere>(new EffetSelf(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP,2, true))));
insert(10,new CartePiochable<TypeLumiere>(new EffetSelf(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP,2, true))));
// Eclair purificateur
insert(11,new CartePiochable<TypeLumiere>(new EffetCiblerTous(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP, -2, true))));
// Lance de longinus
insert(12,new CarteEquipementStat<TypeLumiere>(
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 2, true))
,new ConditionMultiple(new ConditionEquipe(CartePersonnage.Equipe.HUNTER), new ConditionReveal())
));
// Miroir divin
insert(13,new CartePiochable<TypeLumiere>(new EffetSelf(new ActionReveal()),new ConditionClassPersonnage(Vampire.class,LoupGarou.class)));
// Premiers secours
insert(14, new CartePiochable<TypeLumiere>(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 7, false))));
//Savoir ancestral
insert(15, new CartePiochable<TypeLumiere>(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_TURN, 1, true))));
//Toge sainte
insert(16, new CartePiochable<TypeLumiere>(new EffetSelf(new ActionMultiple(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_RESISTANCE, 1, true),new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, -1, true)))));
// Ténèbre
// Araignée Sanguinaire
insert(17, new CartePiochable<TypeTenebre>(new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)))));
// Chauve - souris vampire
insert(18, new CartePiochable<TypeTenebre>(new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 1, true)))));
insert(19, new CartePiochable<TypeTenebre>(new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 1, true)))));
insert(20, new CartePiochable<TypeTenebre>(new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 1, true)))));
// Dynamite
// 21
// Hache tueuse
insert(22,new CarteEquipementStat<TypeTenebre>(
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 1, true))));
// Hachoir maudit
insert(23,new CarteEquipementStat<TypeTenebre>(
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 1, true))));
// Mitrailleuse funeste
// 24
// Peau de banane
// 25
// Poupé démoniaque
// 26
insert(28,new CartePiochable<TypeTenebre>(
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 20, true))
,new ConditionMultiple(new ConditionEquipe(CartePersonnage.Equipe.SHADOW), new ConditionReveal())
));
// 29
insert(30,new CartePiochable<TypeTenebre>(
new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER))));
insert(31,new CartePiochable<TypeTenebre>(
new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER))));
insert(32,new CarteEquipementStat<TypeTenebre>(
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 1, true))));
// Vision clairvoyante
insert(33, new CartePiochable<TypeVision>(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -1, true)),
new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 11, ConditionStatistiques.LESS)));
// Vision cupide
insert(34,new CartePiochable<TypeVision>(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))),
new ConditionEquipe(CartePersonnage.Equipe.NEUTRE,CartePersonnage.Equipe.SHADOW)));
insert(35,new CartePiochable<TypeVision>(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))),
new ConditionEquipe(CartePersonnage.Equipe.NEUTRE,CartePersonnage.Equipe.SHADOW)));
// Vision destructrice
insert(36, new CartePiochable<TypeVision>(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 12, ConditionStatistiques.MORE)));
// Vision divine
// Vision enivrante
insert(38,new CartePiochable<TypeVision>(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))),
new ConditionEquipe(CartePersonnage.Equipe.NEUTRE,CartePersonnage.Equipe.SHADOW)));
insert(39,new CartePiochable<TypeVision>(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))),
new ConditionEquipe(CartePersonnage.Equipe.NEUTRE,CartePersonnage.Equipe.SHADOW)));
// Vision Foudroyante
insert(40,new CartePiochable<TypeVision>(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)),
new ConditionEquipe(CartePersonnage.Equipe.SHADOW)));
// Vision furtive
insert(41,new CartePiochable<TypeVision>(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))),
new ConditionEquipe(CartePersonnage.Equipe.HUNTER,CartePersonnage.Equipe.SHADOW)));
insert(42,new CartePiochable<TypeVision>(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))),
new ConditionEquipe(CartePersonnage.Equipe.HUNTER,CartePersonnage.Equipe.SHADOW)));
// Vision Mortifère
insert(43,new CartePiochable<TypeVision>(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)),
new ConditionEquipe(CartePersonnage.Equipe.SHADOW)));
insert(44,new CartePiochable<TypeVision>(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)),
new ConditionEquipe(CartePersonnage.Equipe.SHADOW)));
// Vision lugubre
insert(46,new CartePiochable<TypeVision>(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-2,true)),
new ConditionEquipe(CartePersonnage.Equipe.SHADOW)));
// Vision réconfortante
// Vision suprême
}
public static void insert(int row, Object obj) {
}
}

View File

@ -21,12 +21,10 @@ import main.Joueur;
public class TestAddingCard { public class TestAddingCard {
private final static String url = "jdbc:postgresql://localhost:5432/ShadowHunterDatabase"; private final static String url = "jdbc:postgresql://localhost:5432/ShadowHunterDatabase";
private final static String user = "shManager"; private final static String user = "shManager";
private final static String password = "shadowhunter1234"; private final static String password = "shadowhunter1234";
public static void main(String[] args) { public static void main(String[] args) {
CartePiochable<?> instance = new CartePiochable(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 2, true)), new Condition()); CartePiochable<?> instance = new CartePiochable(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 2, true)), new Condition());
@ -35,10 +33,8 @@ public class TestAddingCard {
insertCartePiochable(instance); insertCartePiochable(instance);
System.out.println(retrieveCartePiochable(0).getEffet()); System.out.println(retrieveCartePiochable(0).getEffet());
} catch (IOException | SQLException e) { } catch (IOException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -85,6 +81,4 @@ public class TestAddingCard {
return (CartePiochable<?>) is.readObject(); return (CartePiochable<?>) is.readObject();
} }
} }

View File

@ -67,5 +67,5 @@ se.soigner=Se soigner
mode.claire=Mode clair mode.claire=Mode clair
musique=Musique musique=Musique
langue=Langue langue=Langue
parametre=Paramétre parametre=Paramètre
enregistrer=Enregistrer enregistrer=Enregistrer

View File

@ -0,0 +1,30 @@
package effet;
import java.util.Arrays;
import java.util.List;
import main.Joueur;
public class EffetMultiple extends Effet{
private List<Effet> effets;
/**
*
*/
private static final long serialVersionUID = 1936073174860639420L;
public EffetMultiple(Effet...effets) {
super(null);
this.effets = Arrays.asList(effets);
}
@Override
public void utiliser(Joueur joueur) {
for(Effet e : effets) {
e.utiliser(joueur);
}
}
}

View File

@ -2,6 +2,10 @@ package effet.action;
import main.Joueur; import main.Joueur;
public class ActionAltererStatistiquesJoueur extends Action{ public class ActionAltererStatistiquesJoueur extends Action{
/**
*
*/
private static final long serialVersionUID = 9119524110079268363L;
private String key; private String key;
private int valeur; private int valeur;
private boolean ajouter; private boolean ajouter;
@ -49,4 +53,8 @@ public class ActionAltererStatistiquesJoueur extends Action{
public ActionAltererStatistiquesJoueur getReverseAction() { public ActionAltererStatistiquesJoueur getReverseAction() {
return new ActionAltererStatistiquesJoueur(key, -valeur, true); return new ActionAltererStatistiquesJoueur(key, -valeur, true);
} }
public void setValeur(int valeur) {
this.valeur = valeur;
}
} }

View File

@ -0,0 +1,36 @@
package effet.action;
import main.Joueur;
import main.Plateau;
public class ActionAltererStatistiquesJoueurRoll extends ActionAltererStatistiquesJoueur {
/**
*
*/
private static final long serialVersionUID = -6614964982752647505L;
private int valeurRoll;
public ActionAltererStatistiquesJoueurRoll(String key, int valeurRoll, boolean ajouter) {
super(key, 0, ajouter);
this.valeurRoll = valeurRoll;
}
@Override
public void affecte(Joueur j1, Joueur j2) {
Plateau p = j1.getPlateau();
int roll;
if(this.valeurRoll == 6) {
roll = p.roll6(j1);
}else {
roll = p.roll4(j1);
}
this.setValeur(roll);
super.affecte(j1, j2);
}
}

View File

@ -1,5 +1,6 @@
package effet.action; package effet.action;
import java.util.Arrays;
import java.util.List; import java.util.List;
import main.Joueur; import main.Joueur;
@ -14,6 +15,10 @@ public class ActionMultiple extends Action{
this.actions = actions; this.actions = actions;
} }
public ActionMultiple(Action...actions) {
this.actions = Arrays.asList(actions);
}
/** /**
* Lance l'action d'activer toutes les actions contenues dans ActionMultiple. * Lance l'action d'activer toutes les actions contenues dans ActionMultiple.
* @param j1 Le joueur qui lance l'action * @param j1 Le joueur qui lance l'action

View File

@ -0,0 +1,17 @@
package effet.action;
import main.Joueur;
public class ActionReveal extends Action {
/**
*
*/
private static final long serialVersionUID = 7972405763634156578L;
@Override
public void affecte(Joueur j1, Joueur j2) {
j2.reveal();
}
}

View File

@ -2,12 +2,27 @@ package effet.action;
import java.util.List; import java.util.List;
import carte.Equipement; import carte.CarteEquipement;
import main.Joueur; import main.Joueur;
public class ActionVoler extends Action{ public class ActionVoler extends Action{
public final static boolean DONNER = false;
public final static boolean VOLER = true;
private boolean choix;
public ActionVoler(Boolean choix) {
super();
this.choix = choix;
}
/**
*
*/
private static final long serialVersionUID = 3770148032992025640L;
/** /**
* Lance l'action de voler une carte équipement. * Lance l'action de voler une carte équipement.
* @param j1 Le joueur qui vol * @param j1 Le joueur qui vol
@ -17,12 +32,24 @@ public class ActionVoler extends Action{
@Override @Override
public void affecte(Joueur j1, Joueur j2) { public void affecte(Joueur j1, Joueur j2) {
List<Equipement> equipements = j2.getEquipements();
if(this.choix) {
List<CarteEquipement> equipements = j2.getEquipements();
// J1 choisit quel équipement voler // J1 choisit quel équipement voler
Equipement equipement = j1.choisir(equipements); CarteEquipement<?> equipement = j1.choisir(equipements);
j1.voler(j2,equipement); j1.voler(j2,equipement);
}else {
List<CarteEquipement> equipements = j1.getEquipements();
// J1 choisit quel équipement voler
CarteEquipement<?> equipement = j1.choisir(equipements);
j2.voler(j1,equipement);
} }
}
} }

View File

@ -17,7 +17,7 @@ public class Main extends Application {
@Override @Override
public void start(Stage primaryStage) throws Exception { public void start(Stage primaryStage) throws Exception {
final URL fxmlURL = getClass().getResource("ressources/Jouer_tour(1)lancer_des.fxml"); // "ressources/Jouer_tour(1)lancer_des.fxml" final URL fxmlURL = getClass().getResource("ressources/Menu.fxml"); // "ressources/Jouer_tour(1)lancer_des.fxml"
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE); final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle); final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
Pane root = fxmlLoader.load(); Pane root = fxmlLoader.load();
@ -31,7 +31,7 @@ public class Main extends Application {
System.exit(0); System.exit(0);
} }
}); });
//primaryStage.setMaximized(true); primaryStage.setMaximized(true);
primaryStage.show(); primaryStage.show();
} }
@ -39,7 +39,5 @@ public class Main extends Application {
//System.err.close(); //System.err.close();
GestionnaireJeu gj = GestionnaireJeu.getGestionnaireJeu(); GestionnaireJeu gj = GestionnaireJeu.getGestionnaireJeu();
launch(args); launch(args);
} }
} }

View File

@ -6,12 +6,13 @@ import java.util.ResourceBundle;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.Initializable; import javafx.fxml.Initializable;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.Label;
import main.GestionnaireJeu; import main.GestionnaireJeu;
public class ChoisirBoolean implements Initializable { public class ChoisirBoolean implements Initializable {
@FXML private Button ouiButton; @FXML private Button ouiButton;
@FXML private Button nonButton; @FXML private Button nonButton;
@FXML private Label titre;
private boolean result; private boolean result;
@Override @Override
@ -32,4 +33,28 @@ public class ChoisirBoolean implements Initializable {
public boolean getResult() { public boolean getResult() {
return this.result; return this.result;
} }
public Button getOuiButton() {
return ouiButton;
}
public void setOuiButton(Button ouiButton) {
this.ouiButton = ouiButton;
}
public Button getNonButton() {
return nonButton;
}
public void setNonButton(Button nonButton) {
this.nonButton = nonButton;
}
public Label getTitre() {
return titre;
}
public void setTitre(Label titre) {
this.titre = titre;
}
} }

View File

@ -3,12 +3,17 @@ package ihm.controller;
import java.net.URL; import java.net.URL;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import carte.CarteEquipement;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.Initializable; import javafx.fxml.Initializable;
import javafx.scene.layout.Pane; import javafx.scene.layout.GridPane;
import main.Joueur;
public class PiocherLumiereTenebreController implements Initializable{ public class ChoisirEquipement implements Initializable{
@FXML private Pane rootPane; @FXML private GridPane equipement;
private Joueur joueurVole;
private CarteEquipement equipementVole;
@Override @Override
public void initialize(URL arg0, ResourceBundle arg1) { public void initialize(URL arg0, ResourceBundle arg1) {

View File

@ -0,0 +1,67 @@
package ihm.controller;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
public class ChoisirJoueur implements Initializable{
@FXML private HBox joueurHaut;
@FXML private HBox joueurBas;
@FXML private Label titre;
private int joueurSelected;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
for (int i=0; i<joueurHaut.getChildren().size(); i++) {
int numJoueur = i;
joueurHaut.getChildren().get(i).setOnMouseClicked(e -> {
this.joueurSelected = numJoueur;
});
}
for (int i=0; i<joueurBas.getChildren().size(); i++) {
int numJoueur = i;
joueurHaut.getChildren().get(i).setOnMouseClicked(e -> {
this.joueurSelected = numJoueur;
});
}
}
//GETTERS AND SETTERS
public HBox getJoueurHaut() {
return joueurHaut;
}
public void setJoueurHaut(HBox joueurHaut) {
this.joueurHaut = joueurHaut;
}
public HBox getJoueurBas() {
return joueurBas;
}
public void setJoueurBas(HBox joueurBas) {
this.joueurBas = joueurBas;
}
public Label getTitre() {
return titre;
}
public void setTitre(Label titre) {
this.titre = titre;
}
public int getJoueurSelected() {
return joueurSelected;
}
public void setJoueurSelected(int joueurSelected) {
this.joueurSelected = joueurSelected;
}
}

View File

@ -52,7 +52,6 @@ public class GestionnaireDePions {
}else { }else {
hbox = (HBox) this.gridPaneLieux.getChildren().get(2); hbox = (HBox) this.gridPaneLieux.getChildren().get(2);
} }
StackPane sp = (StackPane) hbox.getChildren().get(indexCL%2); StackPane sp = (StackPane) hbox.getChildren().get(indexCL%2);

View File

@ -1,68 +0,0 @@
package ihm.controller;
import java.io.IOException;
import java.net.URL;
import java.util.Locale;
import java.util.Random;
import java.util.ResourceBundle;
import carte.CarteLieu;
import ihm.SpriteAnimation;
import javafx.animation.Animation;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.geometry.Rectangle2D;
import javafx.scene.Group;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.util.Duration;
import main.Joueur;
public class JouerSonTour1Controller implements Initializable{
@FXML private Pane rootPane;
@FXML private Label d6;
@FXML private Label d4;
@FXML private Button btnStop;
@FXML private Button btnLancer;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
btnStop.setVisible(false);
}
@FXML
public void lancerDes(MouseEvent mouseEvent)throws InterruptedException{
System.out.println("\tLancements des dès");
btnLancer.setVisible(false);
btnStop.setVisible(true);
for (int i=1; i<7; i++) {
Thread.sleep(500);
d6.setText(Integer.toString(i));
}
for (int i=1; i<5; i++) {
Thread.sleep(500);
d4.setText(Integer.toString(i));
}
}
@FXML
public void stop(MouseEvent mouseEvent) throws IOException, InterruptedException {
Thread.sleep(2000);
final URL fxmlURL = getClass().getResource("/ihm/ressources/Jouer_tour(2)carte_lieux.fxml");
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.ENGLISH);
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
Pane root = fxmlLoader.load();
rootPane.getChildren().setAll(root);
}
}

View File

@ -1,51 +1,9 @@
package ihm.controller; package ihm.controller;
import java.io.IOException; public class JouerSonTour2Controller extends ChoisirBoolean{
import java.net.URL; public void initButtons () {
import java.util.ResourceBundle; super.getOuiButton().setText("utiliser.capaciter.lieux");
super.getNonButton().setText("sauter.etape");
import carte.CarteLieu; super.getTitre().setText("description.capacite.carte.lieux");
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
public class JouerSonTour2Controller implements Initializable{
private CarteLieu lieu;
@FXML private Pane rootPane;
@FXML private Label descriptionLieu;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
System.out.println("\tDescrption du lieux");
//descriptionLieu.setText(lieu.getDescription());
} }
@FXML
public void ignorerEtape(MouseEvent mouseEvent) throws IOException{
Pane pane = FXMLLoader.load(getClass().getResource("/ihm/ressources/Jouer_tour(3)attaquer.fxml"));
rootPane.getChildren().setAll(pane);
}
@FXML
public void capaciteLieu(MouseEvent mouseEvent) throws IOException{
/*//si le lieu fait attaquer ou se soigner
if (lieu.getNom().compareTo("foret hantee")) {
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/Jouer_tour(2c)attaquer_soigner.fxml"));
rootPane.getChildren().setAll(pane);
//si le lieu fait voler une carte equipement
}else if(lieu.getNom().compareTo("sanctuaire ancien")) {
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/Jouer_tour(2a)voler_equipement.fxml"));
rootPane.getChildren().setAll(pane);
//si le lieu fait piocher une carte
}else {
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/Jouer_tour(2b)piocher_carte.fxml"));
rootPane.getChildren().setAll(pane);
}*/
}
} }

View File

@ -0,0 +1,9 @@
package ihm.controller;
public class JouerSonTour2c1Controller extends ChoisirBoolean{
public void initButtons () {
super.getOuiButton().setText("Attaquer !");
super.getNonButton().setText("se.soigner");
super.getTitre().setText("attaquer.ou.soigner");
}
}

View File

@ -1,35 +1,9 @@
package ihm.controller; package ihm.controller;
import java.io.IOException; public class JouerSonTour3Controller extends ChoisirBoolean{
import java.net.URL; public void initButtons () {
import java.util.ResourceBundle; super.getOuiButton().setText("Attaquer !");
super.getNonButton().setText("Ne pas attaquer");
import javafx.fxml.FXML; super.getTitre().setText("Voulez-vous attaquer un joueur ?");
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class JouerSonTour3Controller implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
}
/*@FXML
public void choixJoueur(MouseEvent mouseEvent) throws IOException{
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/jouerSonTour4.fxml"));
rootPane.getChildren().setAll(pane);
}*/
@FXML
public void pasAttaquer(MouseEvent mouseEvent) throws IOException{
Stage appStage = (Stage) ((Node) mouseEvent.getSource()).getScene().getWindow();
appStage.close();
} }
} }

View File

@ -4,16 +4,17 @@ import java.net.URL;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.Initializable; import javafx.scene.control.Label;
import javafx.scene.layout.Pane; import main.Joueur;
public class JouerSonTour4Controller implements Initializable{ public class JouerSonTour4Controller extends LancerDes{
@FXML private Pane rootPane; @FXML private Label defenseur;
private Joueur j;
@Override @Override
public void initialize(URL arg0, ResourceBundle arg1) { public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub super.initialize(arg0, arg1);
defenseur.setText(j.getNom());
} }
} }

View File

@ -1,33 +0,0 @@
package ihm.controller;
import java.io.IOException;
import java.net.URL;
import java.util.Locale;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
public class JouerSonTour5Controller implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
}
@FXML
public void equipementVole(MouseEvent mouseEvent) throws IOException{
final URL fxmlURL = getClass().getResource("/ihm/ressources/jouerSonTour6.fxml");
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.ENGLISH);
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
Pane pane = fxmlLoader.load();
rootPane.getChildren().setAll(pane);
}
}

View File

@ -1,44 +0,0 @@
package ihm.controller;
import java.io.IOException;
import java.net.URL;
import java.util.Locale;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
public class JouerSonTour6Controller implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
}
@FXML
public void piocherVision(MouseEvent mouseEvent) throws IOException{
final URL fxmlURL = getClass().getResource("/ihm/ressources/jouer_Son_Tour_piocher_vision.fxml");
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.ENGLISH);
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
Pane pane = fxmlLoader.load();
rootPane.getChildren().setAll(pane);
}
@FXML
public void piocherTenebre(MouseEvent mouseEvent) throws IOException{
final URL fxmlURL = getClass().getResource("/ihm/ressources/jouer_Son_Tour_piocher_lum_et_ten.fxml");
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.ENGLISH);
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
Pane pane = fxmlLoader.load();
rootPane.getChildren().setAll(pane);
}
}

View File

@ -1,34 +0,0 @@
package ihm.controller;
import java.io.IOException;
import java.net.URL;
import java.util.Locale;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
public class JouerSonTourDonnerVisionController implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
}
@FXML
public void attaquer(MouseEvent mouseEvent) throws IOException{
final URL fxmlURL = getClass().getResource("/ihm/ressources/jouer_Son_Tour_recevoir_blessure.fxml");
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.ENGLISH);
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
Pane pane = fxmlLoader.load();
rootPane.getChildren().setAll(pane);
}
}

View File

@ -0,0 +1,49 @@
package ihm.controller;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
public class LancerDes implements Initializable{
@FXML private Label d6;
@FXML private Label d4;
@FXML private Button btnStop;
@FXML private Button btnLancer;
private int resultatD6;
private int resultatD4;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
btnStop.setVisible(false);
btnLancer.setOnAction(e -> {
lancement();
btnLancer.setVisible(false);
btnStop.setVisible(true);
});
btnStop.setOnAction(e -> {
//à remplir avec les valeurs donné par le gestionnaire de jeux
d6.setText(Integer.toString(resultatD6));
d4.setText(Integer.toString(resultatD4));
});
}
public void lancement() {
/*for (int i=1; i<7; i++) {
Thread.sleep(500);
d6.setText(Integer.toString(i));
}
for (int i=1; i<5; i++) {
Thread.sleep(500);
d4.setText(Integer.toString(i));
}*/
}
}

View File

@ -16,6 +16,7 @@ import javafx.scene.image.Image;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent; import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Pane;
import javafx.stage.Stage; import javafx.stage.Stage;
public class MenuController implements Initializable{ public class MenuController implements Initializable{
@ -48,6 +49,22 @@ public class MenuController implements Initializable{
appStage.show(); appStage.show();
}
@FXML
public void ouvrirParametres(MouseEvent mouseEvent) throws IOException{
InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/BEEP1.wav");
EffetSonore.playSoundEffect(fileSound1);
System.out.println("Passage à l'écran des paramètres");
final URL fxmlURL = getClass().getResource("/ihm/ressources/parametre.fxml");
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
Pane pane = fxmlLoader.load();
rootPane.getChildren().setAll(pane);
} }
public void afficherRegle(MouseEvent mouseEvent) { public void afficherRegle(MouseEvent mouseEvent) {

View File

@ -28,7 +28,7 @@ public class PauseController implements Initializable {
private CheckBox cbEffet; private CheckBox cbEffet;
String filepathMusique = "src//ihm//ressources//musique//The_Red_Fox_Tavern.wav"; String filepathMusique = "src//ihm//ressources//musique//The_Red_Fox_Tavern.wav";
InputStream fileMusique = getClass().getResourceAsStream("src//ihm//ressources//musique//The_Red_Fox_Tavern.wav"); InputStream fileMusique = getClass().getResourceAsStream("/ihm/ressources/musique/The_Red_Fox_Tavern.wav");
boolean MusiqueLancee = ParametreController.cbMusiqueCoche; boolean MusiqueLancee = ParametreController.cbMusiqueCoche;
boolean SonLance = ParametreController.cbSonCoche; boolean SonLance = ParametreController.cbSonCoche;
@ -53,24 +53,21 @@ public class PauseController implements Initializable {
// Pour la musique // Pour la musique
if (fileMusique != null) { if (fileMusique != null) {
System.out.println("point d'arret 1");
if (cbMusique.isSelected()) { if (cbMusique.isSelected()) {
System.out.println("\tLancement de la musique"); System.out.println("\tLancement de la musique");
if (Musique.clipTimePosition == 0 && MusiqueLancee == false) { // si la musique n'a jamais été lancé if (Musique.clipTimePosition == 0 && MusiqueLancee == false) { // si la musique n'a jamais été lancé
Musique.playMusique(fileMusique); Musique.playMusique(fileMusique);
MusiqueLancee = true; MusiqueLancee = true;
System.out.println("point d'arret 2");
} else } else
Musique.resumeMusique(Musique.clip); // si elle a deja été lancé mais mis en pause, reprend a partir du point d'arret Musique.resumeMusique(Musique.clip); // si elle a deja été lancé mais mis en pause, reprend a partir du point d'arret
System.out.println("point d'arret 3");
} else { } else {
Musique.pauseMusique(Musique.clip); // met en pause la musique Musique.pauseMusique(Musique.clip); // met en pause la musique
System.out.println("\tMise en pause de la musique"); System.out.println("\tMise en pause de la musique");
} }
} }
else { else {
System.out.println("ON A UN PROBLEME, AUCUN POINT D'ARRET N'EST PASSE"); System.out.println("fichier audio non trouvé");
} }
// Pour les effets sonores // Pour les effets sonores

View File

@ -69,7 +69,7 @@ public class PlateauController implements Initializable {
} }
for(int i = 0; i<joueursIHM.size(); i++) { for(int i = 0; i<joueursIHM.size(); i++) {
joueursIHM.get(i).deplacerPionVie((int) (Math.random()*13)); joueursIHM.get(i).deplacerPionVie(0);
} }

View File

@ -1,19 +0,0 @@
package ihm.controller;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.layout.Pane;
public class RecevoirBlessureController implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
}
}

View File

@ -8,9 +8,9 @@
<?import javafx.scene.shape.Rectangle?> <?import javafx.scene.shape.Rectangle?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" stylesheets="@style/popUp.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.JouerSonTour1Controller"> <Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" stylesheets="@style/popUp.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.LancerDes">
<children> <children>
<Button fx:id="btnLancer" layoutX="70.0" layoutY="140.0" mnemonicParsing="false" onMouseClicked="#lancerDes" text="%lancer.de.des"> <Button fx:id="btnLancer" layoutX="70.0" layoutY="140.0" mnemonicParsing="false" text="%lancer.de.des">
<font> <font>
<Font size="14.0" /> <Font size="14.0" />
</font></Button> </font></Button>
@ -35,7 +35,7 @@
<Font size="48.0" /> <Font size="48.0" />
</font> </font>
</Label> </Label>
<Button fx:id="btnStop" layoutX="101.0" layoutY="140.0" mnemonicParsing="false" onMouseClicked="#stop" text="Stop"> <Button fx:id="btnStop" layoutX="101.0" layoutY="140.0" mnemonicParsing="false" text="Stop">
<font> <font>
<Font size="14.0" /> <Font size="14.0" />
</font> </font>

View File

@ -12,8 +12,14 @@
<children> <children>
<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" stylesheets="@style/popUp.css"> <Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" stylesheets="@style/popUp.css">
<children> <children>
<Button layoutX="103.0" layoutY="133.0" mnemonicParsing="false" onMouseClicked="#capaciteLieu" text="%utiliser.capaciter.lieux" /> <Button fx:id="ouiButton" layoutX="103.0" layoutY="133.0" mnemonicParsing="false" text="%utiliser.capaciter.lieux">
<Button layoutX="104.0" layoutY="97.0" mnemonicParsing="false" onMouseClicked="#ignorerEtape" prefHeight="29.0" prefWidth="142.0" text="%sauter.etape" /> <font>
<Font size="11.0" />
</font></Button>
<Button fx:id="nonButton" layoutX="104.0" layoutY="97.0" mnemonicParsing="false" text="%sauter.etape">
<font>
<Font size="11.0" />
</font></Button>
<ImageView fitHeight="114.0" fitWidth="82.0" layoutX="14.0" layoutY="33.0" pickOnBounds="true" preserveRatio="true" /> <ImageView fitHeight="114.0" fitWidth="82.0" layoutX="14.0" layoutY="33.0" pickOnBounds="true" preserveRatio="true" />
<Label fx:id="descriptionLieu" layoutX="96.0" layoutY="33.0" text="%description.capacite.carte.lieux"> <Label fx:id="descriptionLieu" layoutX="96.0" layoutY="33.0" text="%description.capacite.carte.lieux">
<font> <font>

View File

@ -1,16 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.RowConstraints?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.ChoisirEquipement">
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" stylesheets="@style/popUp.css"> <Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" stylesheets="@style/popUp.css">
<children> <children>
<Label layoutX="58.0" layoutY="62.0" text="%voler.equipement.joueur" /> <Label layoutX="58.0" layoutY="14.0" text="%voler.equipement.joueur" />
<Label layoutX="53.0" layoutY="90.0" text="%choisir.equipement.a.voler" /> <ScrollPane layoutX="28.0" layoutY="40.0" prefHeight="128.0" prefWidth="200.0">
<content>
<GridPane fx:id="equipement">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" />
<ColumnConstraints hgrow="SOMETIMES" />
<ColumnConstraints hgrow="SOMETIMES" />
<ColumnConstraints hgrow="SOMETIMES" />
</columnConstraints>
<rowConstraints>
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints vgrow="SOMETIMES" />
</rowConstraints>
<children>
<ImageView fitHeight="60.0" fitWidth="43.0" pickOnBounds="true" preserveRatio="true" />
<ImageView fitHeight="60.0" fitWidth="43.0" pickOnBounds="true" preserveRatio="true" GridPane.columnIndex="1" />
<ImageView fitHeight="60.0" fitWidth="43.0" pickOnBounds="true" preserveRatio="true" GridPane.columnIndex="2" />
<ImageView fitHeight="60.0" fitWidth="43.0" pickOnBounds="true" preserveRatio="true" GridPane.columnIndex="3" />
</children>
</GridPane>
</content>
</ScrollPane>
</children> </children>
</Pane> </Pane>
</children> </children>

View File

@ -5,13 +5,13 @@
<?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.JouerSonTour2c1Controller">
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" stylesheets="@style/popUp.css"> <Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" stylesheets="@style/popUp.css">
<children> <children>
<Label layoutX="71.0" layoutY="57.0" text="%attaquer.ou.soigner" /> <Label fx:id="Titre" layoutX="9.0" layoutY="32.0" text="%attaquer.ou.soigner" />
<Button layoutX="86.0" layoutY="100.0" mnemonicParsing="false" text="%se.soigner" /> <Button fx:id="nonButton" layoutX="142.0" layoutY="119.0" mnemonicParsing="false" text="%se.soigner" />
<Button fx:id="ouiButton" layoutX="29.0" layoutY="119.0" mnemonicParsing="false" text="Attaquer !" />
</children> </children>
</Pane> </Pane>
</children> </children>

View File

@ -1,81 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>
<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" stylesheets="@style/popUp.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.JouerSonTour3Controller">
<children>
<Button layoutX="76.0" layoutY="76.0" mnemonicParsing="false" onMouseClicked="#pasAttaquer" text="Ne pas attaquer" />
<HBox layoutY="1.0">
<children>
<Button mnemonicParsing="false" text="Joueur 1">
<font>
<Font size="10.0" />
</font>
<HBox.margin>
<Insets right="10.0" />
</HBox.margin>
</Button>
<Button mnemonicParsing="false" text="Joueur 2">
<font>
<Font size="10.0" />
</font>
<HBox.margin>
<Insets right="10.0" />
</HBox.margin>
</Button>
<Button mnemonicParsing="false" text="Joueur 3">
<font>
<Font size="10.0" />
</font>
<HBox.margin>
<Insets right="10.0" />
</HBox.margin>
</Button>
<Button mnemonicParsing="false" text="Joueur 4">
<font>
<Font size="10.0" />
</font>
</Button>
</children>
</HBox>
<HBox layoutX="1.0" layoutY="153.0">
<children>
<Button mnemonicParsing="false" text="Joueur 5">
<font>
<Font size="10.0" />
</font>
<HBox.margin>
<Insets right="10.0" />
</HBox.margin>
</Button>
<Button mnemonicParsing="false" text="Joueur 6">
<font>
<Font size="10.0" />
</font>
<HBox.margin>
<Insets right="10.0" />
</HBox.margin>
</Button>
<Button mnemonicParsing="false" text="Joueur 7">
<font>
<Font size="10.0" />
</font>
<HBox.margin>
<Insets right="10.0" />
</HBox.margin>
</Button>
<Button mnemonicParsing="false" text="Joueur 8">
<font>
<Font size="10.0" />
</font>
</Button>
</children>
</HBox>
<Label layoutX="73.0" layoutY="55.0" text="Attaquer un joueur !" />
</children>
</Pane>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.Pane?>
<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" stylesheets="@style/popUp.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.JouerSonTour3Controller">
<children>
<Button fx:id="nonButton" layoutX="136.0" layoutY="128.0" mnemonicParsing="false" text="Ne pas attaquer" />
<Label fx:id="titre" layoutX="40.0" layoutY="31.0" text="Voulez-vous attaquer un joueur ?" />
<Button fx:id="ouiButton" layoutX="21.0" layoutY="128.0" mnemonicParsing="false" text="Attaquer !" />
</children>
</Pane>

View File

@ -4,18 +4,30 @@
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.shape.Polygon?>
<?import javafx.scene.shape.Rectangle?>
<?import javafx.scene.text.Font?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.JouerSonTour4Controller">
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" stylesheets="@style/popUp.css"> <Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" stylesheets="@style/popUp.css">
<children> <children>
<Label layoutX="107.0" layoutY="23.0" text="attaque" /> <Label layoutX="32.0" layoutY="6.0" text="Vous attaquez" />
<Button layoutX="78.0" layoutY="144.0" mnemonicParsing="false" text="%lancer.de.des" /> <Button fx:id="btnLancer" layoutX="78.0" layoutY="144.0" mnemonicParsing="false" text="%lancer.de.des" />
<Label layoutX="161.0" layoutY="23.0" text="%joueur2" /> <Label fx:id="defenseur" layoutX="151.0" layoutY="6.0" text="%joueur2" />
<Label layoutX="46.0" layoutY="23.0" text="%joueur3" /> <Rectangle arcHeight="5.0" arcWidth="5.0" fill="WHITE" height="87.0" layoutX="26.0" layoutY="45.0" stroke="BLACK" strokeType="INSIDE" width="86.0" />
<Pane layoutX="40.0" layoutY="49.0" prefHeight="85.0" prefWidth="85.0" stylesheets="@style/plateau.css" /> <Polygon fill="WHITE" layoutX="177.0" layoutY="92.0" points="-50.0, 40.0, 50.0, 40.0, 0.0, -60.0" stroke="BLACK" strokeType="INSIDE" />
<Pane layoutX="144.0" layoutY="49.0" prefHeight="85.0" prefWidth="85.0" /> <Label fx:id="d6" layoutX="56.0" layoutY="55.0" styleClass="des" text="6">
<font>
<Font size="48.0" />
</font>
</Label>
<Label fx:id="d4" layoutX="163.0" layoutY="55.0" styleClass="des" text="4">
<font>
<Font size="48.0" />
</font>
</Label>
<Button fx:id="btnStop" layoutX="105.0" layoutY="144.0" mnemonicParsing="false" text="Stop" />
</children> </children>
</Pane> </Pane>
</children> </children>

View File

@ -9,11 +9,11 @@
<AnchorPane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1280.0" styleClass="background" stylesheets="@style/plateau.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.MenuController"> <AnchorPane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1280.0" styleClass="background" stylesheets="@style/plateau.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.MenuController">
<children> <children>
<VBox alignment="CENTER" prefHeight="802.0" prefWidth="1290.0"> <VBox alignment="CENTER" layoutX="-3.0" layoutY="-7.0" prefHeight="802.0" prefWidth="1290.0">
<children> <children>
<ImageView fx:id="titre" fitHeight="190.0" fitWidth="528.0" pickOnBounds="true" preserveRatio="true"> <ImageView fx:id="titre" fitHeight="190.0" fitWidth="528.0" pickOnBounds="true" preserveRatio="true">
<VBox.margin> <VBox.margin>
<Insets top="-250.0" /> <Insets top="-200.0" />
</VBox.margin> </VBox.margin>
</ImageView> </ImageView>
<Button mnemonicParsing="false" onMouseClicked="#commencerPartie" prefHeight="51.0" prefWidth="102.0" styleClass="bouton" text="%jouer"> <Button mnemonicParsing="false" onMouseClicked="#commencerPartie" prefHeight="51.0" prefWidth="102.0" styleClass="bouton" text="%jouer">
@ -21,7 +21,15 @@
<Font size="24.0" /> <Font size="24.0" />
</font> </font>
<VBox.margin> <VBox.margin>
<Insets top="150.0" /> <Insets top="100.0" />
</VBox.margin>
</Button>
<Button layoutX="602.0" layoutY="480.0" mnemonicParsing="false" onMouseClicked="#ouvrirParametres" prefHeight="59.0" prefWidth="164.0" styleClass="bouton" text="Paramètres">
<font>
<Font size="24.0" />
</font>
<VBox.margin>
<Insets top="50.0" />
</VBox.margin> </VBox.margin>
</Button> </Button>
<Button mnemonicParsing="false" onMouseClicked="#afficherRegle" prefHeight="59.0" prefWidth="106.0" styleClass="bouton" text="%regles"> <Button mnemonicParsing="false" onMouseClicked="#afficherRegle" prefHeight="59.0" prefWidth="106.0" styleClass="bouton" text="%regles">

View File

@ -7,7 +7,7 @@
<AnchorPane fx:id="root" minHeight="0.0" minWidth="0.0" prefHeight="129.0" prefWidth="201.0" style="-fx-background-color: white;" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.ChoisirBoolean"> <AnchorPane fx:id="root" minHeight="0.0" minWidth="0.0" prefHeight="129.0" prefWidth="201.0" style="-fx-background-color: white;" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.ChoisirBoolean">
<children> <children>
<Label layoutX="8.0" layoutY="-11.0" prefHeight="26.0" prefWidth="128.0" text="Voulez vous faire cette action ?" AnchorPane.bottomAnchor="77.0" AnchorPane.leftAnchor="8.0" AnchorPane.rightAnchor="7.0" AnchorPane.topAnchor="-11.0"> <Label fx:id="titre" layoutX="8.0" layoutY="-11.0" prefHeight="26.0" prefWidth="128.0" text="Voulez vous faire cette action ?" AnchorPane.bottomAnchor="77.0" AnchorPane.leftAnchor="8.0" AnchorPane.rightAnchor="7.0" AnchorPane.topAnchor="-11.0">
<font> <font>
<Font size="13.0" /> <Font size="13.0" />
</font> </font>

View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.ChoisirJoueur">
<children>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="180.0" prefWidth="255.0" stylesheets="@style/popUp.css">
<children>
<HBox fx:id="joueurHaut" layoutX="4.0" layoutY="14.0">
<children>
<Button mnemonicParsing="false" text="%joueur1">
<font>
<Font size="10.0" />
</font>
</Button>
<Button mnemonicParsing="false" text="%joueur2">
<font>
<Font size="10.0" />
</font>
<HBox.margin>
<Insets left="2.0" />
</HBox.margin>
</Button>
<Button mnemonicParsing="false" text="%joueur3">
<font>
<Font size="10.0" />
</font>
<HBox.margin>
<Insets left="2.0" />
</HBox.margin>
</Button>
<Button mnemonicParsing="false" text="%joueur4">
<font>
<Font size="10.0" />
</font>
<HBox.margin>
<Insets left="2.0" />
</HBox.margin>
</Button>
</children>
</HBox>
<HBox fx:id="joueurBas" layoutX="4.0" layoutY="139.0">
<children>
<Button mnemonicParsing="false" text="%joueur5">
<font>
<Font size="10.0" />
</font>
<HBox.margin>
<Insets right="2.0" />
</HBox.margin>
</Button>
<Button mnemonicParsing="false" text="%joueur6">
<font>
<Font size="10.0" />
</font>
<HBox.margin>
<Insets right="2.0" />
</HBox.margin>
</Button>
<Button mnemonicParsing="false" text="%joueur7">
<font>
<Font size="10.0" />
</font>
<HBox.margin>
<Insets right="2.0" />
</HBox.margin>
</Button>
<Button mnemonicParsing="false" text="%joueur8">
<font>
<Font size="10.0" />
</font>
</Button>
</children>
</HBox>
<Label fx:id="titre" layoutX="50.0" layoutY="82.0" text="Choisir un joueur à attaquer !" />
</children>
</Pane>
</children>
</AnchorPane>

View File

@ -3,25 +3,25 @@ package main;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import carte.Equipement; import carte.CarteEquipement;
public class GestionnaireEquipements { public class GestionnaireEquipements {
private Joueur j; private Joueur j;
private List<Equipement> equipements; private List<CarteEquipement> equipements;
public GestionnaireEquipements(Joueur j) { public GestionnaireEquipements(Joueur j) {
this.j = j; this.j = j;
this.equipements = new ArrayList<Equipement>(); this.equipements = new ArrayList<CarteEquipement>();
} }
public void ajouter(Equipement e) { public void ajouter(CarteEquipement e) {
this.equipements.add(e); this.equipements.add(e);
e.utiliser(this.j); e.utiliser(this.j);
this.j.addToStat(Joueur.PLAYER_NB_EQUIPEMENTS, 1); this.j.addToStat(Joueur.PLAYER_NB_EQUIPEMENTS, 1);
} }
public void retirer(Equipement e) { public void retirer(CarteEquipement e) {
if(this.equipements.contains(e)) { if(this.equipements.contains(e)) {
e.reverse(j); e.reverse(j);
this.equipements.remove(e); this.equipements.remove(e);
@ -29,7 +29,7 @@ public class GestionnaireEquipements {
} }
} }
public List<Equipement> getEquipements() { public List<CarteEquipement> getEquipements() {
return equipements; return equipements;
} }

View File

@ -5,7 +5,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import carte.CarteLieu; import carte.CarteLieu;
import carte.Equipement; import carte.CarteEquipement;
import effet.Effet; import effet.Effet;
import personnage.CartePersonnage; import personnage.CartePersonnage;
import personnage.CartePersonnage.Equipe; import personnage.CartePersonnage.Equipe;
@ -70,6 +70,20 @@ public class Joueur {
updateVie(); updateVie();
} }
//pour tests IA
public void setHP(int val) {
this.stats.put("HP", val);
}
//pour tests IA
public void setNbEquip(int val) {
this.stats.put("nb_equipements", val);
}
//pour tests IA
public void setDamage(int val) {
this.stats.put("DAMAGE", val);
}
private void updateVie() { private void updateVie() {
int damage = damageTaken(); int damage = damageTaken();
this.plateau.updateVieJoueur(this, damage); this.plateau.updateVieJoueur(this, damage);
@ -107,16 +121,16 @@ public class Joueur {
return joueurs; return joueurs;
} }
public List<Equipement> getEquipements() { public List<CarteEquipement> getEquipements() {
return this.gestionnaireEquipements.getEquipements(); return this.gestionnaireEquipements.getEquipements();
} }
public void voler(Joueur j2, Equipement equipement) { public void voler(Joueur j2, CarteEquipement equipement) {
j2.gestionnaireEquipements.retirer(equipement); j2.gestionnaireEquipements.retirer(equipement);
this.gestionnaireEquipements.ajouter(equipement); } this.gestionnaireEquipements.ajouter(equipement); }
public Equipement choisir(List<Equipement> equipements) { public CarteEquipement choisir(List<CarteEquipement> equipements) {
return null; return null;
} }
@ -218,11 +232,11 @@ public class Joueur {
this.revele = b; this.revele = b;
} }
public void ajouterEquipement(Equipement equipement) { public void ajouterEquipement(CarteEquipement equipement) {
this.gestionnaireEquipements.ajouter(equipement); this.gestionnaireEquipements.ajouter(equipement);
} }
public void retirerEquipement(Equipement equipement) { public void retirerEquipement(CarteEquipement equipement) {
this.gestionnaireEquipements.retirer(equipement); this.gestionnaireEquipements.retirer(equipement);
} }

View File

@ -3,8 +3,8 @@ package main;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import carte.Equipement; import carte.CarteEquipement;
import carte.EquipementStat; import carte.CarteEquipementStat;
import effet.Effet; import effet.Effet;
public class JoueurVirtuel extends Joueur { public class JoueurVirtuel extends Joueur {
@ -20,17 +20,17 @@ public class JoueurVirtuel extends Joueur {
} }
// on privilegie les equipements qui donnent des stats // on privilegie les equipements qui donnent des stats
public Equipement choisirEquipement(List<Equipement> equips) { public CarteEquipement choisirEquipement(List<CarteEquipement> equips) {
List<Equipement> equipstat = trouverEquipStat(equips); List<CarteEquipement> equipstat = trouverEquipStat(equips);
if (equipstat.size() > 0) if (equipstat.size() > 0)
return equipstat.get((int) Math.floor(Math.random() * equipstat.size())); return equipstat.get((int) Math.floor(Math.random() * equipstat.size()));
return equips.get((int) Math.floor(Math.random() * equips.size())); return equips.get((int) Math.floor(Math.random() * equips.size()));
} }
public List<Equipement> trouverEquipStat(List<Equipement> equips) { public List<CarteEquipement> trouverEquipStat(List<CarteEquipement> equips) {
List<Equipement> res = new ArrayList<>(); List<CarteEquipement> res = new ArrayList<>();
for (Equipement e : equips) { for (CarteEquipement e : equips) {
if (e instanceof EquipementStat) if (e instanceof CarteEquipementStat)
res.add(e); res.add(e);
} }
return res; return res;

View File

@ -87,7 +87,7 @@ public class Plateau extends Thread{
CarteLieu lieu5 = new CarteLieuType<TypeTenebre>("Sanctuaire Ancien","desc",new Point(4,5),piocheTenebre); CarteLieu lieu5 = new CarteLieuType<TypeTenebre>("Sanctuaire Ancien","desc",new Point(4,5),piocheTenebre);
CarteLieu lieu6 = new CarteLieu("Sanctuaire Ancien","desc",new Point(-1,9)); CarteLieu lieu6 = new CarteLieu("Sanctuaire Ancien","desc",new Point(-1,9));
lieu6.setEffet(new EffetChoisirCible(new ActionVoler())); lieu6.setEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER)));
List<CarteLieu> cls = new ArrayList<CarteLieu>(); List<CarteLieu> cls = new ArrayList<CarteLieu>();
cls.add(lieu6); cls.add(lieu6);

View File

@ -14,7 +14,7 @@ public class Bob extends CartePersonnage{
this.setCondition(condition); this.setCondition(condition);
EffetTarget effet = new EffetTarget(new ActionVoler()); EffetTarget effet = new EffetTarget(new ActionVoler(ActionVoler.VOLER));
this.setEffet(effet); this.setEffet(effet);
} }

View File

@ -24,7 +24,7 @@ class ConditionTypeTest {
List<CartePersonnage.Equipe> equipes = new ArrayList<CartePersonnage.Equipe>(); List<CartePersonnage.Equipe> equipes = new ArrayList<CartePersonnage.Equipe>();
equipes.add(CartePersonnage.Equipe.HUNTER); equipes.add(CartePersonnage.Equipe.HUNTER);
equipes.add(CartePersonnage.Equipe.NEUTRE); equipes.add(CartePersonnage.Equipe.NEUTRE);
ConditionType ct = new ConditionType(equipes); ConditionEquipe ct = new ConditionEquipe(equipes);
Joueur j = new Joueur(null); Joueur j = new Joueur(null);
@ -46,7 +46,7 @@ class ConditionTypeTest {
List<CartePersonnage.Equipe> equipes = new ArrayList<CartePersonnage.Equipe>(); List<CartePersonnage.Equipe> equipes = new ArrayList<CartePersonnage.Equipe>();
ConditionType ct = new ConditionType(equipes); ConditionEquipe ct = new ConditionEquipe(equipes);
Joueur j = new Joueur(null); Joueur j = new Joueur(null);
j.setCartePersonnage(new Allie(j)); j.setCartePersonnage(new Allie(j));
assertFalse(ct.isTrue(j)); assertFalse(ct.isTrue(j));

View File

@ -9,7 +9,7 @@ import java.util.Random;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import carte.EquipementStat; import carte.CarteEquipementStat;
import condition.Condition; import condition.Condition;
import effet.EffetSelf; import effet.EffetSelf;
import effet.action.ActionAltererStatistiquesJoueur; import effet.action.ActionAltererStatistiquesJoueur;
@ -51,7 +51,7 @@ class GestionnaireEquipementsTest {
for(int i = 0; i < 20; i++) { for(int i = 0; i < 20; i++) {
EquipementStat es = new EquipementStat("AddDamage", "desc"); CarteEquipementStat es = new CarteEquipementStat("AddDamage", "desc");
es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 2, true))); es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 2, true)));
es.setCondition(new Condition()); es.setCondition(new Condition());
j1.ajouterEquipement(es); j1.ajouterEquipement(es);
@ -67,7 +67,7 @@ class GestionnaireEquipementsTest {
for(int i = 0; i < 20; i++) { for(int i = 0; i < 20; i++) {
EquipementStat es = new EquipementStat("AddDamage", "desc"); CarteEquipementStat es = new CarteEquipementStat("AddDamage", "desc");
es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, valeurEffet, true))); es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, valeurEffet, true)));
es.setCondition(new Condition()); es.setCondition(new Condition());
j1.ajouterEquipement(es); j1.ajouterEquipement(es);
@ -81,7 +81,7 @@ class GestionnaireEquipementsTest {
int valeurEffet = 3; int valeurEffet = 3;
EquipementStat es = new EquipementStat("AddDamage", "desc"); CarteEquipementStat es = new CarteEquipementStat("AddDamage", "desc");
es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, valeurEffet, true))); es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, valeurEffet, true)));
es.setCondition(new Condition()); es.setCondition(new Condition());
j1.ajouterEquipement(es); j1.ajouterEquipement(es);

View File

@ -9,11 +9,11 @@ import java.util.List;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import carte.Equipement; import carte.CarteEquipement;
import carte.CarteEquipementEffet;
import carte.CarteEquipementStat;
import personnage.Allie; import personnage.Allie;
import personnage.CartePersonnage.Equipe;
import personnage.Franklin; import personnage.Franklin;
import personnage.LoupGarou;
import personnage.Vampire; import personnage.Vampire;
public class IATest { public class IATest {
@ -87,14 +87,14 @@ public class IATest {
j2.setCartePersonnage(new Vampire(j2)); j2.setCartePersonnage(new Vampire(j2));
//test 1 : joueur ami, on ne se devoile pas //test 1 : joueur ami, on ne se devoile pas
jIA.setStat("HP", 10); jIA.setHP(10);
assertFalse(cIA.devoilerIAVampire(jIA, j2)); assertFalse(cIA.devoilerIAVampire(jIA, j2));
//test 2 : joueur ennemi et peu de HP, on se devoile //test 2 : joueur ennemi et peu de HP, on se devoile
assertTrue(cIA.devoilerIAVampire(jIA, j1)); assertTrue(cIA.devoilerIAVampire(jIA, j1));
//test 3 : joueur ennemi et beaucoup de HP, on se devoile pas //test 3 : joueur ennemi et beaucoup de HP, on se devoile pas
jIA.setStat("HP", 12); jIA.setHP(12);
assertFalse(cIA.devoilerIAVampire(jIA, j1)); assertFalse(cIA.devoilerIAVampire(jIA, j1));
} }
@ -107,16 +107,15 @@ public class IATest {
jIA.setCartePersonnage(new Franklin(jIA)); jIA.setCartePersonnage(new Franklin(jIA));
j1.setCartePersonnage(new Franklin(j1)); j1.setCartePersonnage(new Franklin(j1));
j2.setCartePersonnage(new Vampire(j2)); j2.setCartePersonnage(new Vampire(j2));
joueurs.add(j1); joueurs.add(j1);
joueurs.add(j2); joueurs.add(j2);
//test 1 : ennemi avec moins de 4 hp, on se devoile //test 1 : ennemi avec moins de 4 hp, on se devoile
j2.setStat("HP", 4); j2.setHP(4);
assertTrue(cIA.devoilerIAGeorges(jIA, joueurs)); assertTrue(cIA.devoilerIAGeorges(jIA, joueurs));
//test 2 : pas d'ennemi avec moins de 4 hp, on se devoile pas //test 2 : pas d'ennemi avec moins de 4 hp, on se devoile pas
j2.setStat("HP", 6); j2.setHP(6);
assertFalse(cIA.devoilerIAGeorges(jIA, joueurs)); assertFalse(cIA.devoilerIAGeorges(jIA, joueurs));
} }
@ -132,11 +131,11 @@ public class IATest {
joueurs.add(j2); joueurs.add(j2);
//test 1 : ennemi avec moins de 6 hp, on se devoile //test 1 : ennemi avec moins de 6 hp, on se devoile
j2.setStat("HP", 6); j2.setHP(6);
assertTrue(cIA.devoilerIAFranklin(jIA, joueurs)); assertTrue(cIA.devoilerIAFranklin(jIA, joueurs));
//test 2 : pas d'ennemi avec moins de 6 hp, on se devoile pas //test 2 : pas d'ennemi avec moins de 6 hp, on se devoile pas
j2.setStat("HP", 8); j2.setHP(8);
assertFalse(cIA.devoilerIAFranklin(jIA, joueurs)); assertFalse(cIA.devoilerIAFranklin(jIA, joueurs));
} }
@ -147,11 +146,11 @@ public class IATest {
cIA.setSeed(59); cIA.setSeed(59);
//test 1 : pas beaucoup de hp, on se devoile //test 1 : pas beaucoup de hp, on se devoile
jIA.setStat("HP", 5); jIA.setHP(5);
assertTrue(cIA.devoilerIAAllie(jIA)); assertTrue(cIA.devoilerIAAllie(jIA));
//test 2 : beaucoup de hp, on se devoile pas //test 2 : beaucoup de hp, on se devoile pas
jIA.setStat("HP", 6); jIA.setHP(6);
assertFalse(cIA.devoilerIAAllie(jIA)); assertFalse(cIA.devoilerIAAllie(jIA));
} }
@ -160,20 +159,20 @@ public class IATest {
public void devoilerCharlesTest() { public void devoilerCharlesTest() {
//setup //setup
cIA.setSeed(84); cIA.setSeed(84);
j2.setStat("HP", 4); j2.setHP(4);
//test 1 : ennemi affaibli, on se devoile //test 1 : ennemi affaibli, on se devoile
jIA.setStat("HP", 10); jIA.setHP(10);
jIA.setStat("DAMAGE", 4); jIA.setDamage(4);
assertTrue(cIA.devoilerIACharles(jIA, j2)); assertTrue(cIA.devoilerIACharles(jIA, j2));
//test 2 : ennemi affaibli mais pas assez de dmg pour le tuer, on se devoile pas //test 2 : ennemi affaibli mais pas assez de dmg pour le tuer, on se devoile pas
jIA.setStat("DAMAGE", 3); jIA.setDamage(3);
assertFalse(cIA.devoilerIACharles(jIA, j2)); assertFalse(cIA.devoilerIACharles(jIA, j2));
//test 3 : charles n'a pas beaucoup de hp, on se devoile pas //test 3 : charles n'a pas beaucoup de hp, on se devoile pas
jIA.setStat("DAMAGE", 4); jIA.setDamage(4);
jIA.setStat("HP", 1); jIA.setHP(1);
assertFalse(cIA.devoilerIACharles(jIA, j2)); assertFalse(cIA.devoilerIACharles(jIA, j2));
} }
@ -202,9 +201,9 @@ public class IATest {
joueurs.add(j3); joueurs.add(j3);
joueurs.add(j2); joueurs.add(j2);
joueurs.add(j1); joueurs.add(j1);
j1.setStat("HP", 4); j1.setHP(4);
j2.setStat("HP", 5); j2.setHP(5);
j3.setStat("HP", 3); j3.setHP(3);
assertEquals(jIA.choisirJoueur(joueurs,Contexte.ATTAQUER).getStat("HP"),4); assertEquals(jIA.choisirJoueur(joueurs,Contexte.ATTAQUER).getStat("HP"),4);
} }
@ -215,11 +214,10 @@ public class IATest {
j1.setCartePersonnage(new Franklin(j1)); j1.setCartePersonnage(new Franklin(j1));
j2.setCartePersonnage(new Allie(j2)); j2.setCartePersonnage(new Allie(j2));
j3.setCartePersonnage(new Vampire(j3)); j3.setCartePersonnage(new Vampire(j3));
j1.setStat("nb_equipements", 1); j1.setNbEquip(1);
j2.setStat("nb_equipements", 2); j2.setNbEquip(2);
j3.setStat("nb_equipements", 4); j3.setNbEquip(4);
jIA.setStat("nb_equipements", 3); jIA.setNbEquip(3);
//test 1 : on renvoit un joueur pas du meme camp avec le plus d'equipements //test 1 : on renvoit un joueur pas du meme camp avec le plus d'equipements
joueurs.add(j3); joueurs.add(j3);
@ -238,8 +236,13 @@ public class IATest {
@Test @Test
public void choixEquipementTest() { public void choixEquipementTest() {
//setup //setup
List<Equipement> equips = new ArrayList<>(); List<CarteEquipement> equips = new ArrayList<>();
//TODO : pas possible d'instancier des Equipements apart des EquipementStat equips.add(new CarteEquipementEffet("lol","mdr"));
equips.add(new CarteEquipementEffet("lol1","mdr1"));
equips.add(new CarteEquipementStat("lol2","mdr2"));
//on choisit l'equipement avec les stat en priorite
assertTrue(jIA.choisirEquipement(equips) instanceof CarteEquipementStat);
} }
//TODO : devoilement emi et devoilement bob //TODO : devoilement emi et devoilement bob

View File

@ -82,7 +82,7 @@ class PlateauTest {
CarteLieu lieu5 = new CarteLieuType<TypeTenebre>("Sanctuaire Ancien","desc",new Point(4,5),piocheTenebre); CarteLieu lieu5 = new CarteLieuType<TypeTenebre>("Sanctuaire Ancien","desc",new Point(4,5),piocheTenebre);
CarteLieu lieu6 = new CarteLieu("Sanctuaire Ancien","desc",new Point(-1,9)); CarteLieu lieu6 = new CarteLieu("Sanctuaire Ancien","desc",new Point(-1,9));
lieu6.setEffet(new EffetChoisirCible(new ActionVoler())); lieu6.setEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER)));
List<CarteLieu> cls = new ArrayList<CarteLieu>(); List<CarteLieu> cls = new ArrayList<CarteLieu>();
cls.add(lieu6); cls.add(lieu6);