diff --git a/src/carte/CarteLieu.java b/src/carte/CarteLieu.java index 2d59487..1d4d2fe 100644 --- a/src/carte/CarteLieu.java +++ b/src/carte/CarteLieu.java @@ -2,19 +2,21 @@ package carte; import java.util.List; import main.Joueur; +import main.Pioche; import main.Type; +import main.TypeLumiere; -public class CarteLieu extends CarteEffet{ +public class CarteLieu extends CarteEffet{ - private Type field; - - // Liste des joueurs actuellement présentsur le lieu + private Pioche piocheLumiere; private List listeJoueur; public void utiliser(Joueur j) { - super.utiliser(j); + + CartePiochable carte = piocheLumiere.piocher(); + carte.utiliser(j); } } diff --git a/src/effet/action/ActionAttaquer.java b/src/effet/action/ActionAttaquer.java index 70d6925..5bc7c21 100644 --- a/src/effet/action/ActionAttaquer.java +++ b/src/effet/action/ActionAttaquer.java @@ -13,7 +13,7 @@ public class ActionAttaquer extends Action { */ @Override public void affecte(Joueur j1, Joueur j2) { - + Plateau p = j1.getPlateau(); p.attaquer(j1, j2); diff --git a/src/effet/action/ActionPiocher.java b/src/effet/action/ActionPiocher.java deleted file mode 100644 index 69f62cc..0000000 --- a/src/effet/action/ActionPiocher.java +++ /dev/null @@ -1,22 +0,0 @@ -package effet.action; - -import main.Joueur; - -public class ActionPiocher extends Action{ - - public ActionPiocher() { - super(); - } - - /** - * Lance l'action de piocher une carte. - * @param j1 Le joueur qui lance l'action - * @param j2 Le joueur qui subit l'action - * @return void - */ - @Override - public void affecte(Joueur j1, Joueur j2) { - j2.piocher(); - } - -} diff --git a/src/main/Joueur.java b/src/main/Joueur.java index a0891e0..e7bb962 100644 --- a/src/main/Joueur.java +++ b/src/main/Joueur.java @@ -10,12 +10,13 @@ import personnage.CartePersonnage; public class Joueur { private GestionnaireEquipements gestionnaireEquipements; - private String nom; private boolean revele; private Plateau plateau; private CartePersonnage cartePersonnage; private Equipe equipe; + private CarteLieu carteLieu; + // map keys public static final String PLAYER_HP = "hp"; @@ -79,8 +80,10 @@ public class Joueur { } public List getJoueursAdjacents() { - // TODO Auto-generated method stub - return null; + + List joueurs = this.carteLieu.getJoueursAdjacents(); + joueurs.remove(this); + return joueurs; } public Equipement[] getEquipements() { @@ -98,11 +101,6 @@ public class Joueur { return null; } - public void piocher() { - // TODO Auto-generated method stub - - } - public void attaquer(Joueur j2, int attaqueDice) { int blessure = evaluerImmunite(j2)*(this.evaluerAttaque(j2) + attaqueDice); @@ -155,9 +153,7 @@ public class Joueur { } public void setCartePersonnage(CartePersonnage cp) { - this.cartePersonnage = cp; - } public void setEquipe(Equipe equipe) { diff --git a/src/main/Pioche.java b/src/main/Pioche.java index 15a1793..beb75cf 100644 --- a/src/main/Pioche.java +++ b/src/main/Pioche.java @@ -1,6 +1,7 @@ package main; import java.util.Collections; +import java.util.List; import java.util.Stack; import carte.CartePiochable; @@ -9,7 +10,13 @@ public class Pioche { private Stack> cartesPiochables; - + public Pioche(List> cartesPiochables) { + super(); + this.cartesPiochables = new Stack>(); + this.cartesPiochables.addAll(cartesPiochables); + melanger(); + } + public void melanger() { Collections.shuffle(cartesPiochables); diff --git a/src/main/Plateau.java b/src/main/Plateau.java index e0e5bf0..afb04ae 100644 --- a/src/main/Plateau.java +++ b/src/main/Plateau.java @@ -23,13 +23,7 @@ public class Plateau { private Map stats; - - private Pioche piocheLumiere; - private Pioche piocheTenebre; - private Pioche piocheVision; - - - + public Plateau(List joueurs) { this.joueurs = joueurs; this.lieux = new ArrayList<>(); @@ -54,8 +48,8 @@ public class Plateau { return 0; } - public void fairePiocher(Joueur joueur, Type type) { - + public void piocher(Joueur joueur, Type type) { + } public void déplacerJoueur(Joueur joueur, int indexLieu) { @@ -70,7 +64,6 @@ public class Plateau { joueur1.attaquer(joueur2,attaque); } - } @@ -86,8 +79,6 @@ public class Plateau { return (int) Math.floor(Math.random() * 3)+1; } - - public int rollDices4() { return Math.abs(roll4() - roll4()); } diff --git a/tests/effet/action/ActionAttaquerTest.java b/tests/effet/action/ActionAttaquerTest.java new file mode 100644 index 0000000..2e02be5 --- /dev/null +++ b/tests/effet/action/ActionAttaquerTest.java @@ -0,0 +1,73 @@ +package effet.action; + +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import main.Joueur; +import main.Plateau; + +class ActionAttaquerTest { + + Joueur j1; + Joueur j2; + Plateau p; + + @BeforeEach + void init() + { + List joueurs = new ArrayList(); + j1 = new Joueur("Michel"); + j2 = new Joueur("Gérard"); + + joueurs.add(j1); + joueurs.add(j2); + + p = new Plateau(joueurs); + + j1.setPlateau(p); + j2.setPlateau(p); + + } + + /* + * L'attaque du plateau se base sur des tirages aléatoires de dés. + * La réussite moyenne d'une attaque est d'environ 80 % + * En autorisant une erreur d'environ 2 % + * + * On vérifie que la différence du nombre d'attaques réussie avec la moyenne + * des attaques réussie est bien inférieure à 2 %. + */ + @Test + void attaquer_BaissePV() { + + int error = 2; + ActionAttaquer aa = new ActionAttaquer(); + + int pvBaseJ2 = 100; + j2.setStat(Joueur.PLAYER_HP, pvBaseJ2); + aa.affecte(j1, j2); + + for(int j = 0; j< 1000; j++) { + + int countNb = 0; + + for(int i = 0; i < 10000; i++) + { + j2.setStat(Joueur.PLAYER_HP, pvBaseJ2); + aa.affecte(j1, j2); + + if(j2.getStat(Joueur.PLAYER_HP) < pvBaseJ2) countNb++; + } + + countNb /= 100; + assertTrue(Math.abs(countNb-80) <= error); + } + } + +}