From e61c63ab38cf6ad71474c80e492d8dfc1b42158b Mon Sep 17 00:00:00 2001 From: Paul Gross Date: Tue, 21 Apr 2020 15:27:27 +0200 Subject: [PATCH] PlateauTest --- src/carte/Carte.java | 25 ++++- src/carte/CarteCondition.java | 5 + src/carte/CarteEffet.java | 5 + src/carte/CarteLieu.java | 14 ++- src/carte/CarteLieuType.java | 4 +- src/carte/CartePiochable.java | 5 + src/carte/Equipement.java | 5 + src/effet/EffetChoisirCible.java | 2 +- src/main/Joueur.java | 13 ++- src/main/Plateau.java | 49 ++++++++-- src/personnage/Allie.java | 2 +- src/personnage/Bob.java | 4 +- src/personnage/CartePersonnage.java | 16 ++- src/personnage/Charles.java | 4 +- src/personnage/Daniel.java | 4 +- src/personnage/Emi.java | 4 +- src/personnage/Franklin.java | 2 +- src/personnage/Georges.java | 2 +- src/personnage/LoupGarou.java | 4 +- src/personnage/Metamorphe.java | 4 +- src/personnage/Unique.java | 4 +- src/personnage/Vampire.java | 6 +- .../ConditionClassPersonnageTest.java | 2 +- tests/main/PlateauTest.java | 98 +++++++++++++++++++ 24 files changed, 232 insertions(+), 51 deletions(-) create mode 100644 tests/main/PlateauTest.java diff --git a/src/carte/Carte.java b/src/carte/Carte.java index 91b811c..e458f90 100644 --- a/src/carte/Carte.java +++ b/src/carte/Carte.java @@ -2,13 +2,32 @@ package carte; import main.Joueur; -public class Carte { +public abstract class Carte { private String nom; private String description; - private void utiliser(Joueur j) { - + public Carte(String nom, String description) { + this.setNom(nom); + this.setDescription(description); + } + + public abstract void utiliser(Joueur j); + + public String getNom() { + return nom; + } + + public void setNom(String nom) { + this.nom = nom; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; } } diff --git a/src/carte/CarteCondition.java b/src/carte/CarteCondition.java index a36b4cf..78a0dd9 100644 --- a/src/carte/CarteCondition.java +++ b/src/carte/CarteCondition.java @@ -5,6 +5,11 @@ import condition.Condition; public abstract class CarteCondition extends CarteEffet{ + public CarteCondition(String nom, String description) { + super(nom, description); + + } + private Condition condition; public void utiliser(Joueur j) { diff --git a/src/carte/CarteEffet.java b/src/carte/CarteEffet.java index 0c918b7..91854d0 100644 --- a/src/carte/CarteEffet.java +++ b/src/carte/CarteEffet.java @@ -5,6 +5,11 @@ import effet.Effet; public abstract class CarteEffet extends Carte{ + public CarteEffet(String nom, String description) { + super(nom, description); + + } + private Effet effet; diff --git a/src/carte/CarteLieu.java b/src/carte/CarteLieu.java index 28be58e..af11b05 100644 --- a/src/carte/CarteLieu.java +++ b/src/carte/CarteLieu.java @@ -9,13 +9,16 @@ import main.Joueur; public class CarteLieu extends CarteEffet{ + + private List listeJoueurs; private Point coordinates; private CarteLieu voisin; - public CarteLieu(Point coordinates) { + public CarteLieu(String nom, String description, Point p) { + super(nom, description); + this.coordinates = p; this.listeJoueurs = new ArrayList(); - this.coordinates = coordinates; } public void utiliser(Joueur j) { @@ -38,12 +41,15 @@ public class CarteLieu extends CarteEffet{ public void remove(Joueur joueur) { - if(this.listeJoueurs.contains(joueur)) - { + if(this.listeJoueurs.contains(joueur)){ this.listeJoueurs.remove(joueur); } } + public void setVoisin(CarteLieu cl) { + this.voisin = cl; + } + } diff --git a/src/carte/CarteLieuType.java b/src/carte/CarteLieuType.java index 35b0851..9e0d7ec 100644 --- a/src/carte/CarteLieuType.java +++ b/src/carte/CarteLieuType.java @@ -11,8 +11,8 @@ public class CarteLieuType extends CarteLieu{ private Pioche pioche; - public CarteLieuType(Point coordinates,Pioche pioche) { - super(coordinates); + public CarteLieuType(String name, String description ,Point coordinates,Pioche pioche) { + super(name , description , coordinates); this.pioche = pioche; } diff --git a/src/carte/CartePiochable.java b/src/carte/CartePiochable.java index cdccbab..a742530 100644 --- a/src/carte/CartePiochable.java +++ b/src/carte/CartePiochable.java @@ -6,6 +6,11 @@ import main.Type; public class CartePiochable extends CarteCondition{ + public CartePiochable(String nom, String description) { + super(nom, description); + // TODO Auto-generated constructor stub + } + public void utiliser(Joueur j) { super.utiliser(j); } diff --git a/src/carte/Equipement.java b/src/carte/Equipement.java index 16e0441..15531cd 100644 --- a/src/carte/Equipement.java +++ b/src/carte/Equipement.java @@ -7,6 +7,11 @@ import main.Type; public class Equipement extends CartePiochable{ + public Equipement(String nom, String description) { + super(nom, description); + // TODO Auto-generated constructor stub + } + public void utiliser(Joueur j) { } diff --git a/src/effet/EffetChoisirCible.java b/src/effet/EffetChoisirCible.java index 8491fb8..77026ea 100644 --- a/src/effet/EffetChoisirCible.java +++ b/src/effet/EffetChoisirCible.java @@ -12,7 +12,7 @@ public class EffetChoisirCible extends Effet{ @Override public void utiliser(Joueur joueur) { - Joueur j2 = joueur.choisirAdjacents(); + Joueur j2 = joueur.choisirTous(); Action action = this.getAction(); action.affecte(joueur, j2); diff --git a/src/main/Joueur.java b/src/main/Joueur.java index e710d9f..37b53d3 100644 --- a/src/main/Joueur.java +++ b/src/main/Joueur.java @@ -109,6 +109,7 @@ public class Joueur { if(blessure > 0) { j2.addStat(PLAYER_HP, -blessure); + this.cartePersonnage.attaquer(j2); } } @@ -177,8 +178,7 @@ public class Joueur { public void deplacer(CarteLieu cl) { - if(this.carteLieu != null) - { + if(this.carteLieu != null){ this.carteLieu.remove(this); } @@ -186,4 +186,13 @@ public class Joueur { } + public Joueur choisirTous() { + // TODO Auto-generated method stub + return null; + } + + public CarteLieu getCarteLieu() { + return this.carteLieu; + } + } diff --git a/src/main/Plateau.java b/src/main/Plateau.java index cc42cea..5e2edda 100644 --- a/src/main/Plateau.java +++ b/src/main/Plateau.java @@ -1,6 +1,7 @@ package main; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -8,6 +9,7 @@ import java.util.Map; import carte.CarteLieu; public class Plateau { + private List joueurs; private List lieux; @@ -41,11 +43,14 @@ public class Plateau { this.stats.put(PARTIE_FINIE, 0); + + } public void jeu() { - int nbJoueurs = this.joueurs.size(); - int i = 0; + + int nbJoueurs = this.joueurs.size()-1; + int i = 1; while(true) { @@ -65,15 +70,18 @@ public class Plateau { } } - private void deplacer(Joueur currentJoueur) { + public void deplacer(Joueur currentJoueur) { int roll = sumRolls(); + boolean attributed = false; - for(CarteLieu cl : lieux) { - if(cl.coordinatesContains(roll)){ - - currentJoueur.deplacer(cl); - break; + while(!attributed) { + for(CarteLieu cl : lieux) { + if(cl.coordinatesContains(roll) && currentJoueur.getCarteLieu() != cl){ + currentJoueur.deplacer(cl); + attributed = true; + break; + } } } } @@ -131,4 +139,29 @@ public class Plateau { } } + + public void shuffleLieux(){ + + this.lieux.forEach(x -> x.setVoisin(null)); + + if(lieux.size() % 2 == 0) { + + Collections.shuffle(lieux); + + for(int i = 0; i < lieux.size()-2; i += 2) { + + lieux.get(i).setVoisin(lieux.get(i+2)); + lieux.get(i+2).setVoisin(lieux.get(i)); + } + + }else { + + //TODO Throw exception + } + } + + public void setLieux(List lieux) { + this.lieux = lieux; + shuffleLieux(); + } } diff --git a/src/personnage/Allie.java b/src/personnage/Allie.java index 47ff64e..3d564c1 100644 --- a/src/personnage/Allie.java +++ b/src/personnage/Allie.java @@ -16,7 +16,7 @@ import main.Plateau; public class Allie extends Unique{ public Allie(Joueur joueur) { - super("ALLIE", 8, joueur); + super("ALLIE","desc", 8, joueur); Action action = new ActionAltererStatistiquesJoueur("HP",this.getPv(),false); Effet effet = new EffetSelf(action); diff --git a/src/personnage/Bob.java b/src/personnage/Bob.java index 04f6fa8..f80453f 100644 --- a/src/personnage/Bob.java +++ b/src/personnage/Bob.java @@ -6,8 +6,8 @@ import main.Joueur; public class Bob extends CartePersonnage{ - public Bob(String nom, int hp, Joueur joueur) throws Exception { - super(nom, hp, joueur); + public Bob(String nom, String desc ,int hp, Joueur joueur) throws Exception { + super(nom,desc, hp, joueur); Condition condition = new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_NB_EQUIPEMENTS, 5, ConditionStatistiques.MORE); this.setCondition(condition); } diff --git a/src/personnage/CartePersonnage.java b/src/personnage/CartePersonnage.java index 0e17532..66346df 100644 --- a/src/personnage/CartePersonnage.java +++ b/src/personnage/CartePersonnage.java @@ -1,24 +1,20 @@ package personnage; import carte.CarteCondition; -import condition.Condition; import main.Joueur; public abstract class CartePersonnage extends CarteCondition { - //attributs - private String nom; + private int pv; private Joueur joueur; - private Condition condition; + - //constructeurs - public CartePersonnage(String nom, int pv, Joueur joueur){ - this.nom=nom; + public CartePersonnage(String nom, String description, int pv, Joueur joueur) { + super(nom, description); this.pv = pv; - this.joueur=joueur; + this.joueur = joueur; } - - //méthodes + public abstract void utiliser(); diff --git a/src/personnage/Charles.java b/src/personnage/Charles.java index 6f656bb..e6270b4 100644 --- a/src/personnage/Charles.java +++ b/src/personnage/Charles.java @@ -5,8 +5,8 @@ import main.Joueur; public class Charles extends CartePersonnage{ //constructeur - public Charles(String nom, int hp, Joueur joueur) { - super(nom, hp, joueur); + public Charles(String nom, String desc ,int hp, Joueur joueur) { + super(nom,desc, hp, joueur); } //m�thode diff --git a/src/personnage/Daniel.java b/src/personnage/Daniel.java index d579033..9fcf963 100644 --- a/src/personnage/Daniel.java +++ b/src/personnage/Daniel.java @@ -13,8 +13,8 @@ import main.Plateau; public class Daniel extends CartePersonnage{ - public Daniel(String nom, int pv, Joueur joueur) throws Exception { - super(nom, pv, joueur); + public Daniel(String nom, String desc ,int hp, Joueur joueur) throws Exception { + super(nom,desc, hp, joueur); int nbShadow = joueur.getPlateau().getStat(Plateau.NB_SHADOWS); diff --git a/src/personnage/Emi.java b/src/personnage/Emi.java index 603bd31..bb7c630 100644 --- a/src/personnage/Emi.java +++ b/src/personnage/Emi.java @@ -5,8 +5,8 @@ import main.Joueur; public class Emi extends CartePersonnage{ //constructeur - public Emi(String nom, int hp, Joueur joueur) { - super(nom, hp, joueur); + public Emi(String nom, String desc ,int hp, Joueur joueur) { + super(nom,desc, hp, joueur); this.setCondition(new WinConditionHunter()); } diff --git a/src/personnage/Franklin.java b/src/personnage/Franklin.java index efbdf9e..fd2c617 100644 --- a/src/personnage/Franklin.java +++ b/src/personnage/Franklin.java @@ -7,7 +7,7 @@ public class Franklin extends Unique{ //constructeur public Franklin(String nom, int hp, Joueur joueur) { - super(nom, hp, joueur); + super(nom, nom, hp, joueur); this.setCondition(new WinConditionHunter()); } diff --git a/src/personnage/Georges.java b/src/personnage/Georges.java index 3947728..b13b89a 100644 --- a/src/personnage/Georges.java +++ b/src/personnage/Georges.java @@ -7,7 +7,7 @@ public class Georges extends Unique{ //constructeur public Georges(String nom, int hp, Joueur joueur) { - super(nom, hp, joueur); + super(nom, nom, hp, joueur); this.setCondition(new WinConditionHunter()); } diff --git a/src/personnage/LoupGarou.java b/src/personnage/LoupGarou.java index e662440..136b3c7 100644 --- a/src/personnage/LoupGarou.java +++ b/src/personnage/LoupGarou.java @@ -5,8 +5,8 @@ import main.Joueur; public class LoupGarou extends CartePersonnage { //constructeur - public LoupGarou(String nom, int hp, Joueur joueur) { - super(nom, hp, joueur); + public LoupGarou(String nom, String desc ,int hp, Joueur joueur) { + super(nom,desc, hp, joueur); this.setCondition(new WinConditionShadow()); } diff --git a/src/personnage/Metamorphe.java b/src/personnage/Metamorphe.java index 3a22e1e..b5cb46c 100644 --- a/src/personnage/Metamorphe.java +++ b/src/personnage/Metamorphe.java @@ -5,8 +5,8 @@ import main.Joueur; public class Metamorphe extends CartePersonnage{ - public Metamorphe(String nom, int pv, Joueur joueur) { - super(nom, pv, joueur); + public Metamorphe(String nom, String desc ,int hp, Joueur joueur) { + super(nom,desc, hp, joueur); this.setCondition(new WinConditionShadow()); } diff --git a/src/personnage/Unique.java b/src/personnage/Unique.java index 96011a8..de7ee72 100644 --- a/src/personnage/Unique.java +++ b/src/personnage/Unique.java @@ -6,8 +6,8 @@ public class Unique extends CartePersonnage{ private boolean capaciteUsed; - public Unique(String nom, int hp, Joueur joueur) { - super(nom, hp, joueur); + public Unique(String nom, String desc ,int hp, Joueur joueur) { + super(nom,desc, hp, joueur); } diff --git a/src/personnage/Vampire.java b/src/personnage/Vampire.java index c69bb65..024744c 100644 --- a/src/personnage/Vampire.java +++ b/src/personnage/Vampire.java @@ -10,8 +10,8 @@ import main.Joueur; public class Vampire extends CartePersonnage{ - public Vampire(String nom, int hp, Joueur joueur) { - super(nom, hp, joueur); + public Vampire(String nom, String desc ,int hp, Joueur joueur) { + super(nom,desc, hp, joueur); Action action = new ActionAltererStatistiquesJoueur("HP",2,true); Effet effet = new EffetSelf(action); @@ -27,7 +27,7 @@ public class Vampire extends CartePersonnage{ /** * Lance l'action d'attaquer de Vampire - *

Effet : + *

Effet : Soin 2 PV * @param j Le joueur qui subit l'attaque * @return void */ diff --git a/tests/condition/ConditionClassPersonnageTest.java b/tests/condition/ConditionClassPersonnageTest.java index 0d2cf00..fd22033 100644 --- a/tests/condition/ConditionClassPersonnageTest.java +++ b/tests/condition/ConditionClassPersonnageTest.java @@ -36,7 +36,7 @@ class ConditionClassPersonnageTest { assertTrue(cc.isTrue(j)); - CartePersonnage cp2 = new Bob(null, 0, j); + CartePersonnage cp2 = new Bob(null, null, 0, j); // Le personnage ne fait pas partie des classes j.setCartePersonnage(cp2); assertFalse(cc.isTrue(j)); diff --git a/tests/main/PlateauTest.java b/tests/main/PlateauTest.java new file mode 100644 index 0000000..807781a --- /dev/null +++ b/tests/main/PlateauTest.java @@ -0,0 +1,98 @@ +package main; + +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.fail; + +import java.awt.Point; +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import carte.CarteLieu; +import carte.CarteLieuType; +import carte.CartePiochable; +import effet.EffetChoisirCible; +import effet.EffetChoisirEffet; +import effet.EffetSelf; +import effet.action.ActionAltererStatistiquesJoueur; +import effet.action.ActionVoler; + +class PlateauTest { + + Plateau p; + Joueur j1; + Joueur j2; + + @BeforeEach + void init() { + + //Pioche piocheVision = new Pioche(new ArrayList<>()); + + + + //CarteLieu lieu1 = new CarteLieuType("Antre de l'Ermite","desc",new Point(2,3),piocheVision); + + j1 = new Joueur("Mohamed"); + j2 = new Joueur("Pierrot"); + + List joueurs = new ArrayList(); + joueurs.add(j2); + joueurs.add(j1); + + p = new Plateau(joueurs); + + List> list1 = new ArrayList<>(); + List> list2 = new ArrayList<>(); + + for(int i = 0; i < 60; i++) { + + CartePiochable carte1 = new CartePiochable("Eau bénite", "Soin 2"); + carte1.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 2, true))); + list1.add(carte1); + + CartePiochable carte2 = new CartePiochable("Eau maudite", "Damage 2"); + carte2.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true))); + list2.add(carte2); + } + + + Pioche piocheLumiere = new Pioche(list1); + Pioche piocheTenebre = new Pioche(list2); + + + CarteLieu lieu1 = new CarteLieuType("Antre de l'Ermite","desc",new Point(2,3),piocheTenebre); + CarteLieu lieu2 = new CarteLieuType("Cimetière","desc",new Point(-1,8),piocheTenebre); + CarteLieu lieu3 = new CarteLieu("Forêt hantée","desc",new Point(-1,9)); + lieu3.setEffet(new EffetChoisirEffet(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-2,true)), + new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,1,true)))); + CarteLieu lieu4 = new CarteLieuType("Monastère","desc",new Point(-1,6),piocheLumiere); + + CarteLieu lieu5 = new CarteLieuType("Sanctuaire Ancien","desc",new Point(4,5),piocheTenebre); + CarteLieu lieu6 = new CarteLieu("Sanctuaire Ancien","desc",new Point(-1,9)); + lieu6.setEffet(new EffetChoisirCible(new ActionVoler())); + + List cls = new ArrayList(); + cls.add(lieu6); + cls.add(lieu5); + cls.add(lieu4); + cls.add(lieu3); + cls.add(lieu2); + cls.add(lieu1); + + p.setLieux(cls); + + } + + @Test + void deplacer_lieuDepartDifferentLieuArrive() { + p.deplacer(j1); + CarteLieu lieuDepart = j1.getCarteLieu(); + + p.deplacer(j1); + + assertNotEquals(lieuDepart, j1.getCarteLieu()); + } + +}