VampireTest
This commit is contained in:
parent
7db50ba590
commit
845821d089
@ -12,9 +12,12 @@ public abstract class CarteCondition extends CarteEffet{
|
|||||||
|
|
||||||
private Condition condition;
|
private Condition condition;
|
||||||
|
|
||||||
|
@Override
|
||||||
public void utiliser(Joueur j) {
|
public void utiliser(Joueur j) {
|
||||||
|
if(this.condition.isTrue(j)) {
|
||||||
super.utiliser(j);
|
super.utiliser(j);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Condition getCondition() {
|
public Condition getCondition() {
|
||||||
return condition;
|
return condition;
|
||||||
@ -23,6 +26,4 @@ public abstract class CarteCondition extends CarteEffet{
|
|||||||
public void setCondition(Condition condition) {
|
public void setCondition(Condition condition) {
|
||||||
this.condition = condition;
|
this.condition = condition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,19 +5,18 @@ import effet.Effet;
|
|||||||
|
|
||||||
public abstract class CarteEffet extends Carte{
|
public abstract class CarteEffet extends Carte{
|
||||||
|
|
||||||
|
private Effet effet;
|
||||||
|
|
||||||
public CarteEffet(String nom, String description) {
|
public CarteEffet(String nom, String description) {
|
||||||
super(nom, description);
|
super(nom, description);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Effet effet;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @param j Appel la méthode utiliser de effet sur le joueur j
|
* @param j Appel la méthode utiliser de effet sur le joueur j
|
||||||
*/
|
*/
|
||||||
public void utiliser(Joueur j) {
|
public void utiliser(Joueur j) {
|
||||||
effet.utiliser(j);
|
this.effet.utiliser(j);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEffet(Effet e) {
|
public void setEffet(Effet e) {
|
||||||
|
@ -3,6 +3,5 @@ package condition;
|
|||||||
import main.Joueur;
|
import main.Joueur;
|
||||||
|
|
||||||
public abstract class Condition {
|
public abstract class Condition {
|
||||||
|
|
||||||
public abstract boolean isTrue(Joueur joueur);
|
public abstract boolean isTrue(Joueur joueur);
|
||||||
}
|
}
|
||||||
|
@ -2,13 +2,10 @@ package effet.action;
|
|||||||
import main.Joueur;
|
import main.Joueur;
|
||||||
public class ActionAltererStatistiquesJoueur extends Action{
|
public class ActionAltererStatistiquesJoueur extends Action{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private String key;
|
private String key;
|
||||||
private int valeur;
|
private int valeur;
|
||||||
private boolean ajouter;
|
private boolean ajouter;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur ActionAltererStatistiquesJoueur
|
* Constructeur ActionAltererStatistiquesJoueur
|
||||||
* @param key Le clé qui correspond à la valeur à modifier
|
* @param key Le clé qui correspond à la valeur à modifier
|
||||||
@ -24,8 +21,8 @@ public class ActionAltererStatistiquesJoueur extends Action{
|
|||||||
* ActionAltererStatistiquesJoueur("PV", 2, false)
|
* ActionAltererStatistiquesJoueur("PV", 2, false)
|
||||||
* <br>
|
* <br>
|
||||||
* Change les PV's du joueur à 2
|
* Change les PV's du joueur à 2
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public ActionAltererStatistiquesJoueur(String key, int valeur, boolean ajouter)
|
public ActionAltererStatistiquesJoueur(String key, int valeur, boolean ajouter)
|
||||||
{
|
{
|
||||||
this.key = key;
|
this.key = key;
|
||||||
@ -33,7 +30,6 @@ public class ActionAltererStatistiquesJoueur extends Action{
|
|||||||
this.ajouter = ajouter;
|
this.ajouter = ajouter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lance l'action de modification de statistiques
|
* Lance l'action de modification de statistiques
|
||||||
* @param j1 Le joueur qui modifie
|
* @param j1 Le joueur qui modifie
|
||||||
@ -44,12 +40,9 @@ public class ActionAltererStatistiquesJoueur extends Action{
|
|||||||
{
|
{
|
||||||
if(ajouter)
|
if(ajouter)
|
||||||
{
|
{
|
||||||
j2.setStat(key, j2.getStat(key)+valeur);
|
j2.addToStat(key, valeur);
|
||||||
}else {
|
}else {
|
||||||
j2.setStat(key, valeur);
|
j2.setStat(key, valeur);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -194,9 +194,12 @@ public class Joueur {
|
|||||||
return this.carteLieu;
|
return this.carteLieu;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRevele(boolean b) {
|
public void reveal() {
|
||||||
this.revele = true;
|
this.revele = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRevele(boolean b) {
|
||||||
|
this.revele = b;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,9 @@ public class Plateau {
|
|||||||
|
|
||||||
|
|
||||||
public Plateau(List<Joueur> joueurs) {
|
public Plateau(List<Joueur> joueurs) {
|
||||||
|
|
||||||
|
joueurs.forEach(x -> x.setPlateau(this));
|
||||||
|
|
||||||
this.joueurs = joueurs;
|
this.joueurs = joueurs;
|
||||||
this.lieux = new ArrayList<>();
|
this.lieux = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -18,14 +18,14 @@ public class Allie extends Unique{
|
|||||||
public Allie(Joueur joueur) {
|
public Allie(Joueur joueur) {
|
||||||
super("ALLIE","desc", 8, joueur);
|
super("ALLIE","desc", 8, joueur);
|
||||||
|
|
||||||
Action action = new ActionAltererStatistiquesJoueur("HP",this.getPv(),false);
|
Action action = new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,this.getPv(),false);
|
||||||
Effet effet = new EffetSelf(action);
|
Effet effet = new EffetSelf(action);
|
||||||
this.setEffet(effet);
|
this.setEffet(effet);
|
||||||
|
|
||||||
List<Condition> conditions = new ArrayList<Condition>();
|
List<Condition> conditions = new ArrayList<Condition>();
|
||||||
|
|
||||||
conditions.add(new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.PARTIE_FINIE, 1, ConditionStatistiques.EQUAL));
|
conditions.add(new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.PARTIE_FINIE, 1, ConditionStatistiques.EQUAL));
|
||||||
conditions.add(new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 0, ConditionStatistiques.MORE));
|
conditions.add(new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 0, ConditionStatistiques.LESS));
|
||||||
|
|
||||||
Condition winCondition = new ConditionMultiple(conditions);
|
Condition winCondition = new ConditionMultiple(conditions);
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ public class Bob extends CartePersonnage{
|
|||||||
|
|
||||||
if(thisJoueur.choisir()) {
|
if(thisJoueur.choisir()) {
|
||||||
((EffetTarget)this.getEffet()).setTarget(j);
|
((EffetTarget)this.getEffet()).setTarget(j);
|
||||||
utiliser();
|
this.utiliser(thisJoueur);
|
||||||
}else {
|
}else {
|
||||||
super.attaquer(j, blessure);
|
super.attaquer(j, blessure);
|
||||||
}
|
}
|
||||||
@ -36,7 +36,7 @@ public class Bob extends CartePersonnage{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void utiliser() {
|
public void utiliser() {
|
||||||
Joueur j = this.getJoueur();
|
// TODO Auto-generated method stub
|
||||||
this.getEffet().utiliser(j);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ public abstract class CartePersonnage extends CarteCondition {
|
|||||||
|
|
||||||
public abstract void utiliser();
|
public abstract void utiliser();
|
||||||
|
|
||||||
|
|
||||||
public void attaquer(Joueur j, int blessure) {
|
public void attaquer(Joueur j, int blessure) {
|
||||||
j.addToStat(Joueur.PLAYER_HP, -blessure);
|
j.addToStat(Joueur.PLAYER_HP, -blessure);
|
||||||
}
|
}
|
||||||
@ -30,7 +31,7 @@ public abstract class CartePersonnage extends CarteCondition {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setJoueur(Joueur j) {
|
public void setJoueur(Joueur j) {
|
||||||
joueur=j;
|
this.joueur=j;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deplacer() {
|
public void deplacer() {
|
||||||
@ -41,4 +42,6 @@ public abstract class CartePersonnage extends CarteCondition {
|
|||||||
return pv;
|
return pv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -27,13 +27,11 @@ public class Charles extends CartePersonnage{
|
|||||||
if(joueur.getStat(Joueur.PLAYER_HP) > 2 && joueur.getRevele()){
|
if(joueur.getStat(Joueur.PLAYER_HP) > 2 && joueur.getRevele()){
|
||||||
|
|
||||||
Plateau p = j.getPlateau();
|
Plateau p = j.getPlateau();
|
||||||
utiliser();
|
utiliser(joueur);
|
||||||
p.attaquer(this.getJoueur(), j);
|
p.attaquer(this.getJoueur(), j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void utiliser() {
|
public void utiliser() {
|
||||||
this.getEffet().utiliser(this.getJoueur());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,15 +26,13 @@ public class Daniel extends CartePersonnage{
|
|||||||
|
|
||||||
conditions.add(new ConditionMultiple(conditions2));
|
conditions.add(new ConditionMultiple(conditions2));
|
||||||
|
|
||||||
|
|
||||||
Condition winCondition = new ConditionMultipleOR(conditions);
|
Condition winCondition = new ConditionMultipleOR(conditions);
|
||||||
|
|
||||||
this.setCondition(winCondition);
|
this.setCondition(winCondition);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void utiliser() {
|
|
||||||
this.getJoueur().setRevele(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
public void utiliser() {
|
||||||
|
this.getJoueur().reveal();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,9 +16,7 @@ public class Emi extends CartePersonnage{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void utiliser() {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
|
public void utiliser() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@ public class Franklin extends Unique{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void utiliser() {
|
public void utiliser() {
|
||||||
Joueur joueur = this.getJoueur();
|
Joueur joueur = this.getJoueur();
|
||||||
|
|
||||||
|
@ -11,13 +11,6 @@ public class Georges extends Unique{
|
|||||||
this.setCondition(new WinConditionHunter());
|
this.setCondition(new WinConditionHunter());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void attaquer(Joueur j, int blessure) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void utiliser() {
|
public void utiliser() {
|
||||||
Joueur joueur = this.getJoueur();
|
Joueur joueur = this.getJoueur();
|
||||||
|
|
||||||
|
@ -11,9 +11,7 @@ public class LoupGarou extends CartePersonnage {
|
|||||||
this.setCondition(new WinConditionShadow());
|
this.setCondition(new WinConditionShadow());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void utiliser() {
|
public void utiliser() {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,9 +10,6 @@ public class Metamorphe extends CartePersonnage{
|
|||||||
this.setCondition(new WinConditionShadow());
|
this.setCondition(new WinConditionShadow());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void utiliser() {
|
public void utiliser() {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ public abstract class Unique extends CartePersonnage{
|
|||||||
|
|
||||||
public Unique(String nom, String desc ,int hp, Joueur joueur) {
|
public Unique(String nom, String desc ,int hp, Joueur joueur) {
|
||||||
super(nom,desc, hp, joueur);
|
super(nom,desc, hp, joueur);
|
||||||
|
this.capaciteUsed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isCapaciteUsed() {
|
public boolean isCapaciteUsed() {
|
||||||
|
@ -10,21 +10,15 @@ import main.Joueur;
|
|||||||
|
|
||||||
public class Vampire extends CartePersonnage{
|
public class Vampire extends CartePersonnage{
|
||||||
|
|
||||||
public Vampire(String nom, String desc ,int hp, Joueur joueur) {
|
public Vampire(Joueur joueur) {
|
||||||
super(nom,desc, hp, joueur);
|
super("Vampire","desc", 13, joueur);
|
||||||
|
|
||||||
Action action = new ActionAltererStatistiquesJoueur("HP",2,true);
|
Action action = new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,2,true);
|
||||||
Effet effet = new EffetSelf(action);
|
Effet effet = new EffetSelf(action);
|
||||||
this.setEffet(effet);
|
this.setEffet(effet);
|
||||||
this.setCondition(new WinConditionShadow());
|
this.setCondition(new WinConditionShadow());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void utiliser()
|
|
||||||
{
|
|
||||||
this.getEffet().utiliser(this.getJoueur());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lance l'action d'attaquer de Vampire
|
* Lance l'action d'attaquer de Vampire
|
||||||
* <br><br> Effet : Soin 2 PV
|
* <br><br> Effet : Soin 2 PV
|
||||||
@ -36,9 +30,10 @@ public class Vampire extends CartePersonnage{
|
|||||||
super.attaquer(j, blessure);
|
super.attaquer(j, blessure);
|
||||||
if(this.getJoueur().getRevele())
|
if(this.getJoueur().getRevele())
|
||||||
{
|
{
|
||||||
utiliser(this.getJoueur());
|
this.utiliser(this.getJoueur());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void utiliser() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package personnage;
|
package personnage;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -39,18 +40,35 @@ class AllieTest {
|
|||||||
@Test
|
@Test
|
||||||
void utiliser_SoinTotal() {
|
void utiliser_SoinTotal() {
|
||||||
|
|
||||||
j1.setStat("HP", 0);
|
j1.setStat(Joueur.PLAYER_HP, 0);
|
||||||
j1.getCartePersonnage().utiliser();
|
j1.getCartePersonnage().utiliser();
|
||||||
|
|
||||||
int pvAllie = j1.getCartePersonnage().getPv();
|
int pvAllie = j1.getCartePersonnage().getPv();
|
||||||
|
|
||||||
assertEquals(pvAllie,j1.getStat("HP"));
|
// Le joueur n'est pas révélé, le soin n'a pas eu lieu.
|
||||||
|
assertEquals(j1.getStat(Joueur.PLAYER_HP),0);
|
||||||
|
|
||||||
j1.setStat("HP", 0);
|
j1.setRevele(true);
|
||||||
j1.getCartePersonnage().utiliser();
|
j1.getCartePersonnage().utiliser();
|
||||||
|
|
||||||
// Le soin n'a fonctionné qu'une seule fois
|
// Le soin a fonctionné la première fois, il est désormais "utilisé".
|
||||||
assertEquals(0,j1.getStat("HP"));
|
assertEquals(j1.getStat(Joueur.PLAYER_HP),pvAllie);
|
||||||
|
|
||||||
|
|
||||||
|
j1.setStat(Joueur.PLAYER_HP, 0);
|
||||||
|
j1.getCartePersonnage().utiliser();
|
||||||
|
|
||||||
|
// Le soin a déjà été utilisé
|
||||||
|
assertEquals(0,j1.getStat(Joueur.PLAYER_HP));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void victoire() {
|
||||||
|
|
||||||
|
j1.setStat(Joueur.PLAYER_HP, 0);
|
||||||
|
p.setStat(Plateau.PARTIE_FINIE, 1);
|
||||||
|
assertTrue(a.victoire());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
97
tests/personnage/VampireTest.java
Normal file
97
tests/personnage/VampireTest.java
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
package personnage;
|
||||||
|
|
||||||
|
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 VampireTest {
|
||||||
|
|
||||||
|
Joueur j1;
|
||||||
|
Joueur j2;
|
||||||
|
Plateau p;
|
||||||
|
Random rand;
|
||||||
|
Vampire v;
|
||||||
|
Allie a;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void init()
|
||||||
|
{
|
||||||
|
rand = new Random();
|
||||||
|
List<Joueur> joueurs = new ArrayList<Joueur>();
|
||||||
|
j1 = new Joueur("Michel");
|
||||||
|
j2 = new Joueur("Saad");
|
||||||
|
|
||||||
|
joueurs.add(j1);
|
||||||
|
joueurs.add(j2);
|
||||||
|
|
||||||
|
p = new Plateau(joueurs);
|
||||||
|
v = new Vampire(j1);
|
||||||
|
a = new Allie(j2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void attaquer_Vampirisme() {
|
||||||
|
|
||||||
|
int pvVampireBase = 0;
|
||||||
|
int pvAllieBase = a.getPv();
|
||||||
|
|
||||||
|
int countHP = 0;
|
||||||
|
|
||||||
|
for(int j = 0; j < 100; j++) {
|
||||||
|
|
||||||
|
countHP = 0;
|
||||||
|
|
||||||
|
for(int i = 0; i < 2000; i++) {
|
||||||
|
|
||||||
|
// Le joueur n'est pas révélé
|
||||||
|
j1.setRevele(false);
|
||||||
|
j1.setStat(Joueur.PLAYER_HP, pvVampireBase);
|
||||||
|
j2.setStat(Joueur.PLAYER_HP, pvAllieBase);
|
||||||
|
|
||||||
|
p.attaquer(j1, j2);
|
||||||
|
|
||||||
|
// Vampire n'a pas récupéré de pv's lors de son attaque
|
||||||
|
assertTrue(j1.getStat(Joueur.PLAYER_HP) == 0);
|
||||||
|
|
||||||
|
|
||||||
|
// Joueur se révéle
|
||||||
|
j1.reveal();
|
||||||
|
j2.setStat(Joueur.PLAYER_HP, pvAllieBase);
|
||||||
|
p.attaquer(j1, j2);
|
||||||
|
|
||||||
|
// Il récupère des pv's si la blessure est supérieure à 0
|
||||||
|
// On compte le nombre de fois où il récupère des pv's
|
||||||
|
if(j2.getStat(Joueur.PLAYER_HP) < pvAllieBase && j1.getStat(Joueur.PLAYER_HP) > 0) {
|
||||||
|
countHP++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// On boost le coverage
|
||||||
|
v.utiliser();
|
||||||
|
|
||||||
|
// On ramène en %
|
||||||
|
countHP /= 20;
|
||||||
|
|
||||||
|
// En moyenne une attaque réussie 80 % du temps, avec une marge d'erreur de 5 %
|
||||||
|
assertTrue(Math.abs(80-countHP) < 5);
|
||||||
|
}}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void victoire() {
|
||||||
|
|
||||||
|
j1.setStat(Joueur.PLAYER_HP, 0);
|
||||||
|
p.setStat( Plateau.NB_MORTS_NEUTRAL, 5);
|
||||||
|
assertTrue(v.victoire());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user