CarteLieu possède désormais ses propres pioches
This commit is contained in:
parent
461c38ba1b
commit
0f8a283e31
@ -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<T extends Type> extends CarteEffet{
|
||||
|
||||
private Type field;
|
||||
|
||||
// Liste des joueurs actuellement présentsur le lieu
|
||||
private Pioche<T> piocheLumiere;
|
||||
private List<Joueur> listeJoueur;
|
||||
|
||||
|
||||
public void utiliser(Joueur j) {
|
||||
super.utiliser(j);
|
||||
|
||||
CartePiochable<?> carte = piocheLumiere.piocher();
|
||||
carte.utiliser(j);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
@ -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<Joueur> getJoueursAdjacents() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
|
||||
List<Joueur> 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) {
|
||||
|
@ -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<T extends Type> {
|
||||
|
||||
private Stack<CartePiochable<T>> cartesPiochables;
|
||||
|
||||
|
||||
public Pioche(List<CartePiochable<T>> cartesPiochables) {
|
||||
super();
|
||||
this.cartesPiochables = new Stack<CartePiochable<T>>();
|
||||
this.cartesPiochables.addAll(cartesPiochables);
|
||||
melanger();
|
||||
}
|
||||
|
||||
public void melanger()
|
||||
{
|
||||
Collections.shuffle(cartesPiochables);
|
||||
|
@ -23,13 +23,7 @@ public class Plateau {
|
||||
|
||||
private Map<String, Integer> stats;
|
||||
|
||||
|
||||
private Pioche<TypeLumiere> piocheLumiere;
|
||||
private Pioche<TypeTenebre> piocheTenebre;
|
||||
private Pioche<TypeVision> piocheVision;
|
||||
|
||||
|
||||
|
||||
|
||||
public Plateau(List<Joueur> 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());
|
||||
}
|
||||
|
73
tests/effet/action/ActionAttaquerTest.java
Normal file
73
tests/effet/action/ActionAttaquerTest.java
Normal file
@ -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<Joueur> joueurs = new ArrayList<Joueur>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user