diff --git a/src/condition/ConditionType.java b/src/condition/ConditionType.java index 74bccca..1f07e62 100644 --- a/src/condition/ConditionType.java +++ b/src/condition/ConditionType.java @@ -4,15 +4,16 @@ import java.util.ArrayList; import java.util.List; import main.Joueur; +import personnage.CartePersonnage; public class ConditionType extends Condition{ - private List equipes; + private List equipes; - public ConditionType(List equipes){ + public ConditionType(List equipes){ - this.equipes = new ArrayList(); + this.equipes = new ArrayList(); this.equipes.addAll(equipes); } @@ -34,9 +35,9 @@ public class ConditionType extends Condition{ @Override public boolean isTrue(Joueur joueur) { - Joueur.Equipe equipeJoueur = joueur.getEquipe(); + CartePersonnage.Equipe equipeJoueur = joueur.getEquipe(); - for(Joueur.Equipe equipe : equipes) { + for(CartePersonnage.Equipe equipe : equipes) { if(equipeJoueur == equipe) return true; } diff --git a/src/main/ControleurIA.java b/src/main/ControleurIA.java index 629431c..8c088c6 100644 --- a/src/main/ControleurIA.java +++ b/src/main/ControleurIA.java @@ -3,7 +3,8 @@ import java.util.ArrayList; import java.util.List; import carte.CarteLieu; -import main.Joueur.Equipe; +import personnage.CartePersonnage; +import personnage.CartePersonnage.Equipe; public class ControleurIA { int seed; @@ -56,7 +57,7 @@ public class ControleurIA { public static List getEnnemisJoueurs(JoueurVirtuel jIA, List joueursLieu) { List res = new ArrayList<>(); Equipe equipejIA = jIA.getEquipe(); - if (equipejIA == Joueur.Equipe.NEUTRE) + if (equipejIA == CartePersonnage.Equipe.NEUTRE) res = joueursLieu; else { for (Joueur j : joueursLieu) { diff --git a/src/main/Joueur.java b/src/main/Joueur.java index 3f5121e..aa9d8d6 100644 --- a/src/main/Joueur.java +++ b/src/main/Joueur.java @@ -5,9 +5,9 @@ import java.util.Map; import carte.CarteLieu; import carte.Equipement; -import carte.EquipementStat; import effet.Effet; import personnage.CartePersonnage; +import personnage.CartePersonnage.Equipe; @@ -17,7 +17,7 @@ public class Joueur { private boolean revele; private Plateau plateau; private CartePersonnage cartePersonnage; - private Equipe equipe; + private CarteLieu carteLieu; @@ -32,11 +32,7 @@ public class Joueur { private Map stats; - public enum Equipe{ - NEUTRE, - SHADOW, - HUNTER - } + public Joueur(String nom) { this.nom = nom; @@ -60,7 +56,7 @@ public class Joueur { //shadows, hunters ou neutre public Equipe getEquipe() { - return this.equipe; + return this.cartePersonnage.getEquipe(); } public void setStat(String key, int valeur) { @@ -162,11 +158,6 @@ public class Joueur { this.cartePersonnage = cp; } - public void setEquipe(Equipe equipe) { - this.equipe = equipe; - - } - public void setPlateau(Plateau plateau2) { this.plateau = plateau2; } diff --git a/src/main/Plateau.java b/src/main/Plateau.java index 5fe9d08..04fda66 100644 --- a/src/main/Plateau.java +++ b/src/main/Plateau.java @@ -44,18 +44,60 @@ public class Plateau { this.stats.put(NB_MORTS_SHADOW, 0); this.stats.put(PARTIE_FINIE, 0); - initCartePersonnage(); - - // Initialisation plateau this.stats.put(NB_HUNTERS, 0); this.stats.put(NB_SHADOWS, 0); this.stats.put(NB_NEUTRES, 0); - - - - } + private void initCartePersonnage(List cps, int nbJoueurs) throws Exception { + + List lcp = new ArrayList<>(nbJoueurs); + + switch(nbJoueurs) { + + case 4: + lcp = getRandomListPersonnages(cps,2,0); + break; + case 5: + lcp = getRandomListPersonnages(cps,2,1); + break; + case 6: + lcp = getRandomListPersonnages(cps,2,2); + break; + case 7: + lcp = getRandomListPersonnages(cps,2,3); + break; + case 8: + lcp = getRandomListPersonnages(cps,3,2); + break; + default: + throw new Exception(); + } + + for(int i = 0; i< nbJoueurs; i++) { + + this.joueurs.get(i).setCartePersonnage(lcp.get(i)); + } + + } + + private List getRandomListPersonnages(List cps,int nbEquipeShadowHunter, int nbNeutres) { + + List lcp = new ArrayList(); + + Collections.shuffle(lcp); + + int nbShadow = nbEquipeShadowHunter; + int nbHunter = nbEquipeShadowHunter; + + for(CartePersonnage cp : cps) { + + + } + + return cps; + } + public void jeu() { int nbJoueurs = this.joueurs.size()-1; diff --git a/src/personnage/Allie.java b/src/personnage/Allie.java index fc8fab6..7d55515 100644 --- a/src/personnage/Allie.java +++ b/src/personnage/Allie.java @@ -30,6 +30,7 @@ public class Allie extends Unique{ Condition winCondition = new ConditionMultiple(conditions); this.setCondition(winCondition); + this.setEquipe(CartePersonnage.Equipe.NEUTRE); } /** diff --git a/src/personnage/CartePersonnage.java b/src/personnage/CartePersonnage.java index f3b0aac..e7fdf1a 100644 --- a/src/personnage/CartePersonnage.java +++ b/src/personnage/CartePersonnage.java @@ -7,6 +7,13 @@ public abstract class CartePersonnage extends CarteCondition { private int pv; private Joueur joueur; + private Equipe equipe; + + public enum Equipe{ + NEUTRE, + SHADOW, + HUNTER + } public CartePersonnage(String nom, String description, int pv, Joueur joueur) { super(nom, description); @@ -42,6 +49,15 @@ public abstract class CartePersonnage extends CarteCondition { return pv; } + public Equipe getEquipe() { + return this.equipe; + } + + protected void setEquipe(Equipe equipe) { + this.equipe = equipe; + + } + } diff --git a/src/personnage/Franklin.java b/src/personnage/Franklin.java index e4ede3b..54624b4 100644 --- a/src/personnage/Franklin.java +++ b/src/personnage/Franklin.java @@ -6,9 +6,10 @@ import main.Plateau; public class Franklin extends Unique{ - public Franklin(String nom, int hp, Joueur joueur) { - super(nom, nom, hp, joueur); + public Franklin(Joueur joueur) { + super("Franklin", "desc", 12, joueur); this.setCondition(new WinConditionHunter()); + this.setEquipe(CartePersonnage.Equipe.HUNTER); } @Override diff --git a/src/personnage/Vampire.java b/src/personnage/Vampire.java index 4be1abf..c5666fd 100644 --- a/src/personnage/Vampire.java +++ b/src/personnage/Vampire.java @@ -18,6 +18,7 @@ public class Vampire extends CartePersonnage{ Effet effet = new EffetSelf(action); this.setEffet(effet); this.setCondition(new WinConditionShadow()); + this.setEquipe(CartePersonnage.Equipe.SHADOW); } /** diff --git a/tests/condition/ConditionTypeTest.java b/tests/condition/ConditionTypeTest.java index 99f653e..240ff16 100644 --- a/tests/condition/ConditionTypeTest.java +++ b/tests/condition/ConditionTypeTest.java @@ -9,6 +9,9 @@ import java.util.List; import org.junit.jupiter.api.Test; import main.Joueur; +import personnage.Allie; +import personnage.CartePersonnage; +import personnage.Vampire; class ConditionTypeTest { @@ -18,18 +21,21 @@ class ConditionTypeTest { public void isTrue_RenvoieAppartenanceEquipe() { - List equipes = new ArrayList(); - equipes.add(Joueur.Equipe.HUNTER); - equipes.add(Joueur.Equipe.NEUTRE); + List equipes = new ArrayList(); + equipes.add(CartePersonnage.Equipe.HUNTER); + equipes.add(CartePersonnage.Equipe.NEUTRE); ConditionType ct = new ConditionType(equipes); Joueur j = new Joueur(null); - j.setEquipe(Joueur.Equipe.NEUTRE); + + j.setCartePersonnage(new Allie(j)); + assertTrue(ct.isTrue(j)); - j.setEquipe(Joueur.Equipe.SHADOW); + j.setCartePersonnage(new Vampire(j)); + assertFalse(ct.isTrue(j)); } @@ -38,10 +44,11 @@ class ConditionTypeTest { public void isTrue_ListTypeVide_False() { - List equipes = new ArrayList(); + List equipes = new ArrayList(); ConditionType ct = new ConditionType(equipes); Joueur j = new Joueur(null); + j.setCartePersonnage(new Allie(j)); assertFalse(ct.isTrue(j)); } diff --git a/tests/main/IATest.java b/tests/main/IATest.java index 260e72f..ce07f5c 100644 --- a/tests/main/IATest.java +++ b/tests/main/IATest.java @@ -1,13 +1,17 @@ package main; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.ArrayList; import java.util.List; import org.junit.jupiter.api.Test; -import main.Joueur.Equipe; +import personnage.Allie; +import personnage.CartePersonnage.Equipe; +import personnage.Franklin; +import personnage.Vampire; public class IATest { ControleurIA cIA = new ControleurIA(); @@ -19,9 +23,11 @@ public class IATest { @Test public void choixAttaquerTest() { //setup - jIA.setEquipe(Equipe.SHADOW); - j1.setEquipe(Equipe.HUNTER); - j2.setEquipe(Equipe.SHADOW); + + jIA.setCartePersonnage(new Vampire(jIA)); + j1.setCartePersonnage(new Franklin(j1)); + j2.setCartePersonnage(new Allie(j2)); + jIA.setDifficulte(1); cIA.setSeed(24); @@ -54,9 +60,10 @@ public class IATest { public void devoilerLoupGarouTest() { //setup cIA.setSeed(59); - jIA.setEquipe(Equipe.SHADOW); - j1.setEquipe(Equipe.HUNTER); - j2.setEquipe(Equipe.SHADOW); + + jIA.setCartePersonnage(new Vampire(jIA)); + j1.setCartePersonnage(new Franklin(j1)); + j2.setCartePersonnage(new Vampire(j2)); //test 1 : joueur ami, on ne se devoile pas assertFalse(cIA.devoilerIALoupGarou(jIA, j2)); @@ -70,9 +77,10 @@ public class IATest { public void devoilerVampireTest() { //setup cIA.setSeed(59); - jIA.setEquipe(Equipe.SHADOW); - j1.setEquipe(Equipe.HUNTER); - j2.setEquipe(Equipe.SHADOW); + + jIA.setCartePersonnage(new Vampire(jIA)); + j1.setCartePersonnage(new Franklin(j1)); + j2.setCartePersonnage(new Vampire(j2)); //test 1 : joueur ami, on ne se devoile pas jIA.setStat("HP", 10); @@ -91,9 +99,11 @@ public class IATest { public void devoilerGeorgesTest() { //setup cIA.setSeed(89); - jIA.setEquipe(Equipe.HUNTER); - j1.setEquipe(Equipe.HUNTER); - j2.setEquipe(Equipe.SHADOW); + + jIA.setCartePersonnage(new Franklin(jIA)); + j1.setCartePersonnage(new Franklin(j1)); + j2.setCartePersonnage(new Vampire(j2)); + joueurs.add(j1); joueurs.add(j2); @@ -111,9 +121,9 @@ public class IATest { public void devoilerFranklinTest() { //setup cIA.setSeed(89); - jIA.setEquipe(Equipe.HUNTER); - j1.setEquipe(Equipe.HUNTER); - j2.setEquipe(Equipe.SHADOW); + jIA.setCartePersonnage(new Franklin(jIA)); + j1.setCartePersonnage(new Franklin(j1)); + j2.setCartePersonnage(new Vampire(j2)); joueurs.add(j1); joueurs.add(j2);