PlateauTest

This commit is contained in:
Paul Gross 2020-04-21 15:27:27 +02:00
parent 9d298ba9c1
commit e61c63ab38
24 changed files with 232 additions and 51 deletions

View File

@ -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;
}
}

View File

@ -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) {

View File

@ -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;

View File

@ -9,13 +9,16 @@ import main.Joueur;
public class CarteLieu extends CarteEffet{
private List<Joueur> 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<Joueur>();
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;
}
}

View File

@ -11,8 +11,8 @@ public class CarteLieuType<T extends Type> extends CarteLieu{
private Pioche<T> pioche;
public CarteLieuType(Point coordinates,Pioche<T> pioche) {
super(coordinates);
public CarteLieuType(String name, String description ,Point coordinates,Pioche<T> pioche) {
super(name , description , coordinates);
this.pioche = pioche;
}

View File

@ -6,6 +6,11 @@ import main.Type;
public class CartePiochable<T extends Type> extends CarteCondition{
public CartePiochable(String nom, String description) {
super(nom, description);
// TODO Auto-generated constructor stub
}
public void utiliser(Joueur j) {
super.utiliser(j);
}

View File

@ -7,6 +7,11 @@ import main.Type;
public class Equipement extends CartePiochable<Type>{
public Equipement(String nom, String description) {
super(nom, description);
// TODO Auto-generated constructor stub
}
public void utiliser(Joueur j) {
}

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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<Joueur> joueurs;
private List<CarteLieu> 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,18 +70,21 @@ public class Plateau {
}
}
private void deplacer(Joueur currentJoueur) {
public void deplacer(Joueur currentJoueur) {
int roll = sumRolls();
boolean attributed = false;
while(!attributed) {
for(CarteLieu cl : lieux) {
if(cl.coordinatesContains(roll)){
if(cl.coordinatesContains(roll) && currentJoueur.getCarteLieu() != cl){
currentJoueur.deplacer(cl);
attributed = true;
break;
}
}
}
}
public void attaquer(Joueur joueur1, Joueur joueur2) {
@ -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<CarteLieu> lieux) {
this.lieux = lieux;
shuffleLieux();
}
}

View File

@ -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);

View File

@ -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);
}

View File

@ -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();

View File

@ -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<EFBFBD>thode

View File

@ -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);

View File

@ -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());
}

View File

@ -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());
}

View File

@ -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());
}

View File

@ -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());
}

View File

@ -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());
}

View File

@ -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);
}

View File

@ -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
* <br><br> Effet :
* <br><br> Effet : Soin 2 PV
* @param j Le joueur qui subit l'attaque
* @return void
*/

View File

@ -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));

View File

@ -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<TypeVision> piocheVision = new Pioche<TypeVision>(new ArrayList<>());
//CarteLieu lieu1 = new CarteLieuType<TypeVision>("Antre de l'Ermite","desc",new Point(2,3),piocheVision);
j1 = new Joueur("Mohamed");
j2 = new Joueur("Pierrot");
List<Joueur> joueurs = new ArrayList<Joueur>();
joueurs.add(j2);
joueurs.add(j1);
p = new Plateau(joueurs);
List<CartePiochable<TypeLumiere>> list1 = new ArrayList<>();
List<CartePiochable<TypeTenebre>> list2 = new ArrayList<>();
for(int i = 0; i < 60; i++) {
CartePiochable<TypeLumiere> carte1 = new CartePiochable<TypeLumiere>("Eau bénite", "Soin 2");
carte1.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 2, true)));
list1.add(carte1);
CartePiochable<TypeTenebre> carte2 = new CartePiochable<TypeTenebre>("Eau maudite", "Damage 2");
carte2.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)));
list2.add(carte2);
}
Pioche<TypeLumiere> piocheLumiere = new Pioche<TypeLumiere>(list1);
Pioche<TypeTenebre> piocheTenebre = new Pioche<TypeTenebre>(list2);
CarteLieu lieu1 = new CarteLieuType<TypeTenebre>("Antre de l'Ermite","desc",new Point(2,3),piocheTenebre);
CarteLieu lieu2 = new CarteLieuType<TypeTenebre>("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<TypeLumiere>("Monastère","desc",new Point(-1,6),piocheLumiere);
CarteLieu lieu5 = new CarteLieuType<TypeTenebre>("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<CarteLieu> cls = new ArrayList<CarteLieu>();
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());
}
}