From 216d12408af521b511108357f5336f6603114add Mon Sep 17 00:00:00 2001 From: Paul Gross Date: Wed, 22 Apr 2020 16:43:39 +0200 Subject: [PATCH] =?UTF-8?q?M=C3=A9thodes=20choisir=20pour=20l'ihm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/carte/Equipement.java | 5 +- src/carte/EquipementStat.java | 4 +- src/condition/Condition.java | 6 +- src/effet/EffetChoisirCible.java | 2 +- src/main/GestionnaireEquipements.java | 8 +- src/main/GestionnaireJeu.java | 28 ++++++ src/main/Joueur.java | 47 +++++---- src/main/Plateau.java | 28 ++++++ src/main/View.java | 5 + src/personnage/Franklin.java | 2 +- src/personnage/Georges.java | 2 +- tests/main/GestionnaireEquipementsTest.java | 100 ++++++++++++++++++++ 12 files changed, 205 insertions(+), 32 deletions(-) create mode 100644 src/main/View.java create mode 100644 tests/main/GestionnaireEquipementsTest.java diff --git a/src/carte/Equipement.java b/src/carte/Equipement.java index 86694ec..00443e0 100644 --- a/src/carte/Equipement.java +++ b/src/carte/Equipement.java @@ -13,7 +13,10 @@ public abstract class Equipement extends CartePiochable{ } public void utiliser(Joueur j) { - + if(!j.getEquipements().contains(this)) { + j.ajouterEquipement(this); + } + super.utiliser(j); } public abstract void reverse(Joueur j); diff --git a/src/carte/EquipementStat.java b/src/carte/EquipementStat.java index f913524..e169ae2 100644 --- a/src/carte/EquipementStat.java +++ b/src/carte/EquipementStat.java @@ -5,10 +5,10 @@ import main.Joueur; public class EquipementStat extends Equipement{ - public EquipementStat(String nom, String description, int b) { + public EquipementStat(String nom, String description) { super(nom, description); } - + @Override public void reverse(Joueur j) { ActionAltererStatistiquesJoueur action = ((ActionAltererStatistiquesJoueur) this.getEffet().getAction()).getReverseAction(); diff --git a/src/condition/Condition.java b/src/condition/Condition.java index 81e4628..2b0d1bb 100644 --- a/src/condition/Condition.java +++ b/src/condition/Condition.java @@ -2,6 +2,8 @@ package condition; import main.Joueur; -public abstract class Condition { - public abstract boolean isTrue(Joueur joueur); +public class Condition { + public boolean isTrue(Joueur joueur) { + return true; + } } diff --git a/src/effet/EffetChoisirCible.java b/src/effet/EffetChoisirCible.java index 77026ea..c363d73 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.choisirTous(); + Joueur j2 = joueur.choisiParmisTous(); Action action = this.getAction(); action.affecte(joueur, j2); diff --git a/src/main/GestionnaireEquipements.java b/src/main/GestionnaireEquipements.java index 8b33b93..b3dfe58 100644 --- a/src/main/GestionnaireEquipements.java +++ b/src/main/GestionnaireEquipements.java @@ -15,23 +15,19 @@ public class GestionnaireEquipements { this.equipements = new ArrayList(); } - public void ajouterEquipement(Equipement e) { + public void ajouter(Equipement e) { this.equipements.add(e); e.utiliser(this.j); this.j.addToStat(Joueur.PLAYER_NB_EQUIPEMENTS, 1); } - public void retirerEquipement(Equipement e) { + public void retirer(Equipement e) { if(this.equipements.contains(e)) { e.reverse(j); this.equipements.remove(e); this.j.addToStat(Joueur.PLAYER_NB_EQUIPEMENTS, -1); } } - - public void reverseEffect(Equipement e) { - e.reverse(j); - } public List getEquipements() { return equipements; diff --git a/src/main/GestionnaireJeu.java b/src/main/GestionnaireJeu.java index c9aa5b8..58fe81c 100644 --- a/src/main/GestionnaireJeu.java +++ b/src/main/GestionnaireJeu.java @@ -1,7 +1,12 @@ package main; +import java.util.List; + +import effet.Effet; + public class GestionnaireJeu { private Plateau plateau; + private View view; public GestionnaireJeu (Plateau p) { plateau = p; @@ -24,4 +29,27 @@ public class GestionnaireJeu { return null; } + public Joueur choisirParmisTous(Joueur joueur, List joueurs) { + return joueur; + // TODO Auto-generated method stub + + } + + public Effet choisirEffet(Joueur joueur, Effet[] effets) { + // TODO Auto-generated method stub + return null; + } + + public Joueur choisirAdjacents(Joueur joueur, List joueurs) { + // TODO Auto-generated method stub + return null; + } + + public boolean choisir(Joueur joueur) { + // TODO Auto-generated method stub + return false; + } + + + } diff --git a/src/main/Joueur.java b/src/main/Joueur.java index d93e311..a698016 100644 --- a/src/main/Joueur.java +++ b/src/main/Joueur.java @@ -5,6 +5,7 @@ import java.util.Map; import carte.CarteLieu; import carte.Equipement; +import carte.EquipementStat; import effet.Effet; import personnage.CartePersonnage; @@ -40,7 +41,7 @@ public class Joueur { public Joueur(String nom) { this.nom = nom; this.revele = false; - + this.gestionnaireEquipements = new GestionnaireEquipements(this); stats = new HashMap<>(); @@ -49,7 +50,8 @@ public class Joueur { //stats.put(PLAYER_HP, char.getHP()); //stats.put(PLAYER_TURN, 1); - //stats.put(PLAYER_DAMAGE, 0); - dégats en + + stats.put(PLAYER_DAMAGE, 0); + stats.put(PLAYER_NB_EQUIPEMENTS, 0); //stats.put(PLAYER_RESISTANCE, 0); //stats.put(PLAYER_REVEAL, 0); //stats.put(PLAYER_IMMUNITY, 0); @@ -72,6 +74,7 @@ public class Joueur { if(stats.containsKey(key)) { return stats.get(key); }else { + return -1; } } @@ -90,8 +93,8 @@ public class Joueur { public void voler(Joueur j2, Equipement equipement) { - j2.gestionnaireEquipements.retirerEquipement(equipement); - this.gestionnaireEquipements.ajouterEquipement(equipement); } + j2.gestionnaireEquipements.retirer(equipement); + this.gestionnaireEquipements.ajouter(equipement); } public Equipement choisir(List equipements) { // TODO Auto-generated method stub @@ -123,22 +126,28 @@ public class Joueur { public void addToStat(String key, int valeur) { int valeurBase = this.getStat(key); - this.setStat(Joueur.PLAYER_HP,valeurBase+valeur); + this.setStat(key,valeurBase+valeur); } public Plateau getPlateau() { return this.plateau; } - + + public boolean choisir() { + return this.plateau.choisir(this); + } + public Joueur choisirAdjacents() { - // TODO Auto-generated method stub - return null; + return this.plateau.choisirAdjacents(this); } public Effet choisir(Effet[] effets) { - // TODO Auto-generated method stub - return null; + return this.plateau.choisirEffet(this,effets); + } + + public Joueur choisiParmisTous() { + return this.plateau.choisirParmisTous(this); } public boolean getRevele() { @@ -162,10 +171,7 @@ public class Joueur { this.plateau = plateau2; } - public boolean choisir() { - // TODO Auto-generated method stub - return false; - } + public void utiliserEffetLieu() { this.carteLieu.utiliser(this); @@ -181,10 +187,7 @@ public class Joueur { } - public Joueur choisirTous() { - // TODO Auto-generated method stub - return null; - } + public CarteLieu getCarteLieu() { return this.carteLieu; @@ -202,4 +205,12 @@ public class Joueur { this.revele = b; } + public void ajouterEquipement(Equipement equipement) { + this.gestionnaireEquipements.ajouter(equipement); + } + + public void retirerEquipement(Equipement equipement) { + this.gestionnaireEquipements.retirer(equipement); + } + } diff --git a/src/main/Plateau.java b/src/main/Plateau.java index 28c6681..9f1ef88 100644 --- a/src/main/Plateau.java +++ b/src/main/Plateau.java @@ -7,9 +7,11 @@ import java.util.List; import java.util.Map; import carte.CarteLieu; +import effet.Effet; public class Plateau { + private GestionnaireJeu gj; private List joueurs; private List lieux; @@ -169,4 +171,30 @@ public class Plateau { this.lieux = lieux; shuffleLieux(); } + + public boolean choisir(Joueur joueur) { + return gj.choisir(joueur); + } + + public Joueur choisirAdjacents(Joueur joueur) { + List joueurs = new ArrayList(); + CarteLieu cl = joueur.getCarteLieu(); + + joueurs.addAll(cl.getJoueurs()); + joueurs.remove(joueur); + joueurs.addAll(cl.getJoueursAdjacents()); + + return gj.choisirAdjacents(joueur, joueurs); + + } + + + public Effet choisirEffet(Joueur joueur, Effet[] effets) { + return gj.choisirEffet(joueur,effets); + } + + public Joueur choisirParmisTous(Joueur joueur) { + List joueurs = this.getJoueurs(); + return gj.choisirParmisTous(joueur,joueurs); + } } diff --git a/src/main/View.java b/src/main/View.java new file mode 100644 index 0000000..83a3534 --- /dev/null +++ b/src/main/View.java @@ -0,0 +1,5 @@ +package main; + +public class View { + +} diff --git a/src/personnage/Franklin.java b/src/personnage/Franklin.java index 33ddacf..e4ede3b 100644 --- a/src/personnage/Franklin.java +++ b/src/personnage/Franklin.java @@ -25,7 +25,7 @@ public class Franklin extends Unique{ Plateau p = joueur.getPlateau(); int roll = p.roll6(); - Joueur joueur2 = joueur.choisirTous(); + Joueur joueur2 = joueur.choisiParmisTous(); super.attaquer(joueur2, roll); } } diff --git a/src/personnage/Georges.java b/src/personnage/Georges.java index c05750e..d9d1a48 100644 --- a/src/personnage/Georges.java +++ b/src/personnage/Georges.java @@ -19,7 +19,7 @@ public class Georges extends Unique{ Plateau p = joueur.getPlateau(); int roll = p.roll4(); - Joueur joueur2 = joueur.choisirTous(); + Joueur joueur2 = joueur.choisiParmisTous(); super.attaquer(joueur2, roll); } } diff --git a/tests/main/GestionnaireEquipementsTest.java b/tests/main/GestionnaireEquipementsTest.java new file mode 100644 index 0000000..2338ef0 --- /dev/null +++ b/tests/main/GestionnaireEquipementsTest.java @@ -0,0 +1,100 @@ +package main; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +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 carte.EquipementStat; +import condition.Condition; +import effet.EffetSelf; +import effet.action.ActionAltererStatistiquesJoueur; +import personnage.Allie; + +class GestionnaireEquipementsTest { + + Joueur j1; + Joueur j2; + Plateau p; + Random rand; + Allie a1; + Allie a2; + + @BeforeEach + void init() + { + rand = new Random(); + List joueurs = new ArrayList(); + j1 = new Joueur("Michel"); + j2 = new Joueur("Antoine"); + + joueurs.add(j1); + joueurs.add(j2); + + p = new Plateau(joueurs); + + a1 = new Allie(j1); + a2 = new Allie(j2); + j1.setCartePersonnage(a1); + j2.setCartePersonnage(a2); + + + } + + @Test + void ajouterEquipement_NbEquipements() { + + int nbEffets = 20; + + for(int i = 0; i < 20; i++) { + + EquipementStat es = new EquipementStat("AddDamage", "desc"); + es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 2, true))); + es.setCondition(new Condition()); + j1.ajouterEquipement(es); + + } + + assertEquals(nbEffets, j1.getStat(Joueur.PLAYER_NB_EQUIPEMENTS)); + } + + + @Test + void ajouterEquipement_StackingStats() { + + int nbEffets = 20; + int valeurEffet = 3; + + for(int i = 0; i < 20; i++) { + + EquipementStat es = new EquipementStat("AddDamage", "desc"); + es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, valeurEffet, true))); + es.setCondition(new Condition()); + j1.ajouterEquipement(es); + } + + assertEquals(nbEffets*valeurEffet, j1.getStat(Joueur.PLAYER_DAMAGE)); + } + + @Test + void ajouterEquipement_RetirerEffet() { + + int valeurEffet = 3; + + EquipementStat es = new EquipementStat("AddDamage", "desc"); + es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, valeurEffet, true))); + es.setCondition(new Condition()); + j1.ajouterEquipement(es); + + assertEquals(valeurEffet, j1.getStat(Joueur.PLAYER_DAMAGE)); + + j1.retirerEquipement(es); + + assertEquals(0, j1.getStat(Joueur.PLAYER_DAMAGE)); + } + +}