Correction erreur de conception

This commit is contained in:
Paul Gross 2020-04-23 11:00:11 +02:00
parent 92980baac4
commit 95fbe16a19
10 changed files with 123 additions and 52 deletions

View File

@ -4,15 +4,16 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import main.Joueur; import main.Joueur;
import personnage.CartePersonnage;
public class ConditionType extends Condition{ public class ConditionType extends Condition{
private List<Joueur.Equipe> equipes; private List<CartePersonnage.Equipe> equipes;
public ConditionType(List<Joueur.Equipe> equipes){ public ConditionType(List<CartePersonnage.Equipe> equipes){
this.equipes = new ArrayList<Joueur.Equipe>(); this.equipes = new ArrayList<CartePersonnage.Equipe>();
this.equipes.addAll(equipes); this.equipes.addAll(equipes);
} }
@ -34,9 +35,9 @@ public class ConditionType extends Condition{
@Override @Override
public boolean isTrue(Joueur joueur) 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; if(equipeJoueur == equipe) return true;
} }

View File

@ -3,7 +3,8 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import carte.CarteLieu; import carte.CarteLieu;
import main.Joueur.Equipe; import personnage.CartePersonnage;
import personnage.CartePersonnage.Equipe;
public class ControleurIA { public class ControleurIA {
int seed; int seed;
@ -56,7 +57,7 @@ public class ControleurIA {
public static List<Joueur> getEnnemisJoueurs(JoueurVirtuel jIA, List<Joueur> joueursLieu) { public static List<Joueur> getEnnemisJoueurs(JoueurVirtuel jIA, List<Joueur> joueursLieu) {
List<Joueur> res = new ArrayList<>(); List<Joueur> res = new ArrayList<>();
Equipe equipejIA = jIA.getEquipe(); Equipe equipejIA = jIA.getEquipe();
if (equipejIA == Joueur.Equipe.NEUTRE) if (equipejIA == CartePersonnage.Equipe.NEUTRE)
res = joueursLieu; res = joueursLieu;
else { else {
for (Joueur j : joueursLieu) { for (Joueur j : joueursLieu) {

View File

@ -5,9 +5,9 @@ import java.util.Map;
import carte.CarteLieu; import carte.CarteLieu;
import carte.Equipement; import carte.Equipement;
import carte.EquipementStat;
import effet.Effet; import effet.Effet;
import personnage.CartePersonnage; import personnage.CartePersonnage;
import personnage.CartePersonnage.Equipe;
@ -17,7 +17,7 @@ public class Joueur {
private boolean revele; private boolean revele;
private Plateau plateau; private Plateau plateau;
private CartePersonnage cartePersonnage; private CartePersonnage cartePersonnage;
private Equipe equipe;
private CarteLieu carteLieu; private CarteLieu carteLieu;
@ -32,11 +32,7 @@ public class Joueur {
private Map<String, Integer> stats; private Map<String, Integer> stats;
public enum Equipe{
NEUTRE,
SHADOW,
HUNTER
}
public Joueur(String nom) { public Joueur(String nom) {
this.nom = nom; this.nom = nom;
@ -60,7 +56,7 @@ public class Joueur {
//shadows, hunters ou neutre //shadows, hunters ou neutre
public Equipe getEquipe() { public Equipe getEquipe() {
return this.equipe; return this.cartePersonnage.getEquipe();
} }
public void setStat(String key, int valeur) { public void setStat(String key, int valeur) {
@ -162,11 +158,6 @@ public class Joueur {
this.cartePersonnage = cp; this.cartePersonnage = cp;
} }
public void setEquipe(Equipe equipe) {
this.equipe = equipe;
}
public void setPlateau(Plateau plateau2) { public void setPlateau(Plateau plateau2) {
this.plateau = plateau2; this.plateau = plateau2;
} }

View File

@ -44,18 +44,60 @@ public class Plateau {
this.stats.put(NB_MORTS_SHADOW, 0); this.stats.put(NB_MORTS_SHADOW, 0);
this.stats.put(PARTIE_FINIE, 0); this.stats.put(PARTIE_FINIE, 0);
initCartePersonnage();
// Initialisation plateau
this.stats.put(NB_HUNTERS, 0); this.stats.put(NB_HUNTERS, 0);
this.stats.put(NB_SHADOWS, 0); this.stats.put(NB_SHADOWS, 0);
this.stats.put(NB_NEUTRES, 0); this.stats.put(NB_NEUTRES, 0);
} }
private void initCartePersonnage(List<CartePersonnage> cps, int nbJoueurs) throws Exception {
List<CartePersonnage> 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<CartePersonnage> getRandomListPersonnages(List<CartePersonnage> cps,int nbEquipeShadowHunter, int nbNeutres) {
List<CartePersonnage> lcp = new ArrayList<CartePersonnage>();
Collections.shuffle(lcp);
int nbShadow = nbEquipeShadowHunter;
int nbHunter = nbEquipeShadowHunter;
for(CartePersonnage cp : cps) {
}
return cps;
}
public void jeu() { public void jeu() {
int nbJoueurs = this.joueurs.size()-1; int nbJoueurs = this.joueurs.size()-1;

View File

@ -30,6 +30,7 @@ public class Allie extends Unique{
Condition winCondition = new ConditionMultiple(conditions); Condition winCondition = new ConditionMultiple(conditions);
this.setCondition(winCondition); this.setCondition(winCondition);
this.setEquipe(CartePersonnage.Equipe.NEUTRE);
} }
/** /**

View File

@ -7,6 +7,13 @@ public abstract class CartePersonnage extends CarteCondition {
private int pv; private int pv;
private Joueur joueur; private Joueur joueur;
private Equipe equipe;
public enum Equipe{
NEUTRE,
SHADOW,
HUNTER
}
public CartePersonnage(String nom, String description, int pv, Joueur joueur) { public CartePersonnage(String nom, String description, int pv, Joueur joueur) {
super(nom, description); super(nom, description);
@ -42,6 +49,15 @@ public abstract class CartePersonnage extends CarteCondition {
return pv; return pv;
} }
public Equipe getEquipe() {
return this.equipe;
}
protected void setEquipe(Equipe equipe) {
this.equipe = equipe;
}
} }

View File

@ -6,9 +6,10 @@ import main.Plateau;
public class Franklin extends Unique{ public class Franklin extends Unique{
public Franklin(String nom, int hp, Joueur joueur) { public Franklin(Joueur joueur) {
super(nom, nom, hp, joueur); super("Franklin", "desc", 12, joueur);
this.setCondition(new WinConditionHunter()); this.setCondition(new WinConditionHunter());
this.setEquipe(CartePersonnage.Equipe.HUNTER);
} }
@Override @Override

View File

@ -18,6 +18,7 @@ public class Vampire extends CartePersonnage{
Effet effet = new EffetSelf(action); Effet effet = new EffetSelf(action);
this.setEffet(effet); this.setEffet(effet);
this.setCondition(new WinConditionShadow()); this.setCondition(new WinConditionShadow());
this.setEquipe(CartePersonnage.Equipe.SHADOW);
} }
/** /**

View File

@ -9,6 +9,9 @@ import java.util.List;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import main.Joueur; import main.Joueur;
import personnage.Allie;
import personnage.CartePersonnage;
import personnage.Vampire;
class ConditionTypeTest { class ConditionTypeTest {
@ -18,18 +21,21 @@ class ConditionTypeTest {
public void isTrue_RenvoieAppartenanceEquipe() { public void isTrue_RenvoieAppartenanceEquipe() {
List<Joueur.Equipe> equipes = new ArrayList<Joueur.Equipe>(); List<CartePersonnage.Equipe> equipes = new ArrayList<CartePersonnage.Equipe>();
equipes.add(Joueur.Equipe.HUNTER); equipes.add(CartePersonnage.Equipe.HUNTER);
equipes.add(Joueur.Equipe.NEUTRE); equipes.add(CartePersonnage.Equipe.NEUTRE);
ConditionType ct = new ConditionType(equipes); ConditionType ct = new ConditionType(equipes);
Joueur j = new Joueur(null); Joueur j = new Joueur(null);
j.setEquipe(Joueur.Equipe.NEUTRE);
j.setCartePersonnage(new Allie(j));
assertTrue(ct.isTrue(j)); assertTrue(ct.isTrue(j));
j.setEquipe(Joueur.Equipe.SHADOW); j.setCartePersonnage(new Vampire(j));
assertFalse(ct.isTrue(j)); assertFalse(ct.isTrue(j));
} }
@ -38,10 +44,11 @@ class ConditionTypeTest {
public void isTrue_ListTypeVide_False() { public void isTrue_ListTypeVide_False() {
List<Joueur.Equipe> equipes = new ArrayList<Joueur.Equipe>(); List<CartePersonnage.Equipe> equipes = new ArrayList<CartePersonnage.Equipe>();
ConditionType ct = new ConditionType(equipes); ConditionType ct = new ConditionType(equipes);
Joueur j = new Joueur(null); Joueur j = new Joueur(null);
j.setCartePersonnage(new Allie(j));
assertFalse(ct.isTrue(j)); assertFalse(ct.isTrue(j));
} }

View File

@ -1,13 +1,17 @@
package main; 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.ArrayList;
import java.util.List; import java.util.List;
import org.junit.jupiter.api.Test; 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 { public class IATest {
ControleurIA cIA = new ControleurIA(); ControleurIA cIA = new ControleurIA();
@ -19,9 +23,11 @@ public class IATest {
@Test @Test
public void choixAttaquerTest() { public void choixAttaquerTest() {
//setup //setup
jIA.setEquipe(Equipe.SHADOW);
j1.setEquipe(Equipe.HUNTER); jIA.setCartePersonnage(new Vampire(jIA));
j2.setEquipe(Equipe.SHADOW); j1.setCartePersonnage(new Franklin(j1));
j2.setCartePersonnage(new Allie(j2));
jIA.setDifficulte(1); jIA.setDifficulte(1);
cIA.setSeed(24); cIA.setSeed(24);
@ -54,9 +60,10 @@ public class IATest {
public void devoilerLoupGarouTest() { public void devoilerLoupGarouTest() {
//setup //setup
cIA.setSeed(59); cIA.setSeed(59);
jIA.setEquipe(Equipe.SHADOW);
j1.setEquipe(Equipe.HUNTER); jIA.setCartePersonnage(new Vampire(jIA));
j2.setEquipe(Equipe.SHADOW); j1.setCartePersonnage(new Franklin(j1));
j2.setCartePersonnage(new Vampire(j2));
//test 1 : joueur ami, on ne se devoile pas //test 1 : joueur ami, on ne se devoile pas
assertFalse(cIA.devoilerIALoupGarou(jIA, j2)); assertFalse(cIA.devoilerIALoupGarou(jIA, j2));
@ -70,9 +77,10 @@ public class IATest {
public void devoilerVampireTest() { public void devoilerVampireTest() {
//setup //setup
cIA.setSeed(59); cIA.setSeed(59);
jIA.setEquipe(Equipe.SHADOW);
j1.setEquipe(Equipe.HUNTER); jIA.setCartePersonnage(new Vampire(jIA));
j2.setEquipe(Equipe.SHADOW); j1.setCartePersonnage(new Franklin(j1));
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.setStat("HP", 10);
@ -91,9 +99,11 @@ public class IATest {
public void devoilerGeorgesTest() { public void devoilerGeorgesTest() {
//setup //setup
cIA.setSeed(89); cIA.setSeed(89);
jIA.setEquipe(Equipe.HUNTER);
j1.setEquipe(Equipe.HUNTER); jIA.setCartePersonnage(new Franklin(jIA));
j2.setEquipe(Equipe.SHADOW); j1.setCartePersonnage(new Franklin(j1));
j2.setCartePersonnage(new Vampire(j2));
joueurs.add(j1); joueurs.add(j1);
joueurs.add(j2); joueurs.add(j2);
@ -111,9 +121,9 @@ public class IATest {
public void devoilerFranklinTest() { public void devoilerFranklinTest() {
//setup //setup
cIA.setSeed(89); cIA.setSeed(89);
jIA.setEquipe(Equipe.HUNTER); jIA.setCartePersonnage(new Franklin(jIA));
j1.setEquipe(Equipe.HUNTER); j1.setCartePersonnage(new Franklin(j1));
j2.setEquipe(Equipe.SHADOW); j2.setCartePersonnage(new Vampire(j2));
joueurs.add(j1); joueurs.add(j1);
joueurs.add(j2); joueurs.add(j2);