Création de la méthode attaquer de plateau et de joueur
This commit is contained in:
parent
10262e8792
commit
461c38ba1b
@ -1,50 +0,0 @@
|
|||||||
package condition;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import main.Joueur;
|
|
||||||
import carte.CartePersonnage;
|
|
||||||
import carte.Type;
|
|
||||||
|
|
||||||
|
|
||||||
public class ConditionClass<T> extends Condition{
|
|
||||||
|
|
||||||
private List<Class<T>> classes;
|
|
||||||
|
|
||||||
|
|
||||||
public ConditionClass(Class<T> ... classes){
|
|
||||||
// TODO
|
|
||||||
this.classes = new ArrayList<Class<T>>();
|
|
||||||
this.classes.addAll(Arrays.asList(classes));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Vérifie qu'il existe au moins une classe qui correspond soit au Type soit au Personnage du Joueur.
|
|
||||||
* <br><br>
|
|
||||||
* exemple :
|
|
||||||
*
|
|
||||||
* classes = { Emi.class, Metamorphe.class, ... etc } ou classes = { Hunter.class, Shadow.class, Neutre.class }
|
|
||||||
* <br>
|
|
||||||
* Si la class de la carte du joueur correspond à un des élements dans classes alors on renvoie vrai, même chose pour les types.
|
|
||||||
*
|
|
||||||
* @param joueur Le joueur sur lequel on vérifie les conditions.
|
|
||||||
* @return boolean
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean isTrue(Joueur joueur)
|
|
||||||
{
|
|
||||||
Class<? extends T> ccp = (Class<? extends T>) joueur.getCartePersonnage().getClass();
|
|
||||||
Class<? extends T> cct = (Class<? extends T>) joueur.getType().getClass();
|
|
||||||
|
|
||||||
for(Class<? extends T> classe : classes) {
|
|
||||||
|
|
||||||
|
|
||||||
if(ccp.getClass() == classe.getClass() || cct.getClass() == classe.getClass() ) return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,9 +1,14 @@
|
|||||||
package effet;
|
package effet;
|
||||||
|
|
||||||
|
import effet.action.Action;
|
||||||
import main.Joueur;
|
import main.Joueur;
|
||||||
|
|
||||||
public abstract class EffetTarget extends Effet{
|
public abstract class EffetTarget extends Effet{
|
||||||
|
|
||||||
|
public EffetTarget(Action action) {
|
||||||
|
super(action);
|
||||||
|
}
|
||||||
|
|
||||||
public abstract void utiliser(Joueur joueur);
|
public abstract void utiliser(Joueur joueur);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package effet.action;
|
package effet.action;
|
||||||
|
|
||||||
import main.Joueur;
|
import main.Joueur;
|
||||||
|
import main.Plateau;
|
||||||
|
|
||||||
public class ActionAttaquer extends Action {
|
public class ActionAttaquer extends Action {
|
||||||
|
|
||||||
@ -12,7 +13,10 @@ public class ActionAttaquer extends Action {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void affecte(Joueur j1, Joueur j2) {
|
public void affecte(Joueur j1, Joueur j2) {
|
||||||
j1.attaquer(j2);
|
|
||||||
|
Plateau p = j1.getPlateau();
|
||||||
|
p.attaquer(j1, j2);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,8 @@ public class Joueur {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setStat(String key, int valeur) {
|
public void setStat(String key, int valeur) {
|
||||||
|
|
||||||
|
// TODO Il faut créer des observers de mort
|
||||||
this.stats.put(key, valeur);
|
this.stats.put(key, valeur);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,10 +103,34 @@ public class Joueur {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void attaquer(Joueur j2) {
|
public void attaquer(Joueur j2, int attaqueDice) {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
|
int blessure = evaluerImmunite(j2)*(this.evaluerAttaque(j2) + attaqueDice);
|
||||||
|
|
||||||
|
if(blessure > 0)
|
||||||
|
{
|
||||||
|
j2.addStat(PLAYER_HP, -blessure);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int evaluerAttaque(Joueur j2) {
|
||||||
|
|
||||||
|
return this.getStat(PLAYER_DAMAGE)-j2.getStat(PLAYER_RESISTANCE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int evaluerImmunite(Joueur j2) {
|
||||||
|
|
||||||
|
int nbToursImmune = j2.getStat(PLAYER_IMMUNITY);
|
||||||
|
|
||||||
|
return nbToursImmune > 0 ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addStat(String key, int valeur)
|
||||||
|
{
|
||||||
|
int valeurBase = this.getStat(key);
|
||||||
|
this.setStat(Joueur.PLAYER_HP,valeurBase+valeur);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public Plateau getPlateau() {
|
public Plateau getPlateau() {
|
||||||
return this.plateau;
|
return this.plateau;
|
||||||
|
@ -64,6 +64,13 @@ public class Plateau {
|
|||||||
|
|
||||||
public void attaquer(Joueur joueur1, Joueur joueur2) {
|
public void attaquer(Joueur joueur1, Joueur joueur2) {
|
||||||
|
|
||||||
|
int attaque = diffRolls();
|
||||||
|
|
||||||
|
if(attaque != 0) {
|
||||||
|
|
||||||
|
joueur1.attaquer(joueur2,attaque);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -71,15 +78,16 @@ public class Plateau {
|
|||||||
return new Joueur("0");
|
return new Joueur("0");
|
||||||
}
|
}
|
||||||
|
|
||||||
public int sumRolls() {
|
public int diffRolls() {
|
||||||
//pas necessaire?
|
return Math.abs(roll6()-roll4());
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int roll4() {
|
public int roll4() {
|
||||||
return (int) Math.floor(Math.random() * 3)+1;
|
return (int) Math.floor(Math.random() * 3)+1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public int rollDices4() {
|
public int rollDices4() {
|
||||||
return Math.abs(roll4() - roll4());
|
return Math.abs(roll4() - roll4());
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,8 @@ import main.Plateau;
|
|||||||
|
|
||||||
public class Allie extends Unique{
|
public class Allie extends Unique{
|
||||||
|
|
||||||
public Allie(String nom, int hp, Joueur joueur) throws Exception {
|
public Allie(Joueur joueur) {
|
||||||
super(nom, hp, joueur);
|
super("ALLIE", 8, joueur);
|
||||||
|
|
||||||
Action action = new ActionAltererStatistiquesJoueur("HP",this.getPv(),false);
|
Action action = new ActionAltererStatistiquesJoueur("HP",this.getPv(),false);
|
||||||
Effet effet = new EffetSelf(action);
|
Effet effet = new EffetSelf(action);
|
||||||
@ -38,10 +38,11 @@ public class Allie extends Unique{
|
|||||||
* @param j
|
* @param j
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public void utiliser(Joueur j) {
|
public void utiliser() {
|
||||||
|
|
||||||
if(!this.isCapaciteUsed()) {
|
if(!this.isCapaciteUsed()) {
|
||||||
this.getEffet().utiliser(j);
|
this.getEffet().utiliser(this.getJoueur());
|
||||||
|
this.setCapaciteUsed(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,12 +12,14 @@ public class Bob extends CartePersonnage{
|
|||||||
this.setCondition(condition);
|
this.setCondition(condition);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void utiliser(Joueur j){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void attaquer(Joueur j) {
|
public void attaquer(Joueur j) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void utiliser() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ public abstract class CartePersonnage extends CarteCondition {
|
|||||||
|
|
||||||
//méthodes
|
//méthodes
|
||||||
|
|
||||||
public void utiliser() {};
|
public abstract void utiliser();
|
||||||
|
|
||||||
public void attaquer(Joueur j) {};
|
public void attaquer(Joueur j) {};
|
||||||
|
|
||||||
|
@ -13,4 +13,10 @@ public class Charles extends CartePersonnage{
|
|||||||
public void attaquer(Joueur j) {
|
public void attaquer(Joueur j) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void utiliser() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,4 +34,9 @@ public class Daniel extends CartePersonnage{
|
|||||||
this.setCondition(winCondition);
|
this.setCondition(winCondition);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void utiliser() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,4 +16,10 @@ public class Emi extends CartePersonnage{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void utiliser() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -15,4 +15,10 @@ public class LoupGarou extends CartePersonnage {
|
|||||||
public void contreAttaquer(Joueur j) {
|
public void contreAttaquer(Joueur j) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void utiliser() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,4 +10,10 @@ public class Metamorphe extends CartePersonnage{
|
|||||||
this.setCondition(new WinConditionShadow());
|
this.setCondition(new WinConditionShadow());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void utiliser() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -21,4 +21,10 @@ public class Unique extends CartePersonnage{
|
|||||||
this.capaciteUsed = capaciteUsed;
|
this.capaciteUsed = capaciteUsed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void utiliser() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -19,9 +19,10 @@ public class Vampire extends CartePersonnage{
|
|||||||
this.setCondition(new WinConditionShadow());
|
this.setCondition(new WinConditionShadow());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void utiliser(Joueur j)
|
@Override
|
||||||
|
public void utiliser()
|
||||||
{
|
{
|
||||||
this.getEffet().utiliser(j);
|
this.getEffet().utiliser(this.getJoueur());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -38,4 +39,6 @@ public class Vampire extends CartePersonnage{
|
|||||||
utiliser(this.getJoueur());
|
utiliser(this.getJoueur());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ class ConditionClassPersonnageTest {
|
|||||||
ConditionClassPersonnage cc = new ConditionClassPersonnage(classes);
|
ConditionClassPersonnage cc = new ConditionClassPersonnage(classes);
|
||||||
|
|
||||||
Joueur j = new Joueur(null);
|
Joueur j = new Joueur(null);
|
||||||
CartePersonnage cp1 = new Allie(null, 0, j);
|
CartePersonnage cp1 = new Allie(j);
|
||||||
|
|
||||||
|
|
||||||
// Le personnage fait partie des classes.
|
// Le personnage fait partie des classes.
|
||||||
@ -51,7 +51,7 @@ class ConditionClassPersonnageTest {
|
|||||||
|
|
||||||
ConditionClassPersonnage cc = new ConditionClassPersonnage(classes);
|
ConditionClassPersonnage cc = new ConditionClassPersonnage(classes);
|
||||||
Joueur j = new Joueur(null);
|
Joueur j = new Joueur(null);
|
||||||
CartePersonnage cp1 = new Allie(null, 0, j);
|
CartePersonnage cp1 = new Allie(j);
|
||||||
j.setCartePersonnage(cp1);
|
j.setCartePersonnage(cp1);
|
||||||
assertFalse(cc.isTrue(j));
|
assertFalse(cc.isTrue(j));
|
||||||
|
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
package condition;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
class ConditionClassTest {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void test() {
|
|
||||||
fail("Not yet implemented");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -61,8 +61,6 @@ class ConditionStatistiquesTest {
|
|||||||
cs = new ConditionStatistiques(false,"test",randInt2,ConditionStatistiques.LESS);
|
cs = new ConditionStatistiques(false,"test",randInt2,ConditionStatistiques.LESS);
|
||||||
assertEquals(cs.isTrue(joueur),randInt3 <= randInt2);
|
assertEquals(cs.isTrue(joueur),randInt3 <= randInt2);
|
||||||
|
|
||||||
cs = new ConditionStatistiques(false,"test",randInt3,ConditionStatistiques.LESS);
|
|
||||||
assertEquals(cs.isTrue(joueur),randInt3 <= randInt2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -79,6 +77,7 @@ class ConditionStatistiquesTest {
|
|||||||
//Valeur censée être comprise entre 0 et 2
|
//Valeur censée être comprise entre 0 et 2
|
||||||
-1);
|
-1);
|
||||||
|
|
||||||
|
assertFalse(cs.isTrue(joueur));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
57
tests/personnage/AllieTest.java
Normal file
57
tests/personnage/AllieTest.java
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
package personnage;
|
||||||
|
|
||||||
|
import static org.junit.Assert.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 main.Joueur;
|
||||||
|
import main.Plateau;
|
||||||
|
|
||||||
|
class AllieTest {
|
||||||
|
|
||||||
|
Joueur j1;
|
||||||
|
Plateau p;
|
||||||
|
Random rand;
|
||||||
|
Allie a;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void init()
|
||||||
|
{
|
||||||
|
rand = new Random();
|
||||||
|
List<Joueur> joueurs = new ArrayList<Joueur>();
|
||||||
|
j1 = new Joueur("Michel");
|
||||||
|
|
||||||
|
joueurs.add(j1);
|
||||||
|
|
||||||
|
p = new Plateau(joueurs);
|
||||||
|
|
||||||
|
a = new Allie(j1);
|
||||||
|
j1.setPlateau(p);
|
||||||
|
j1.setCartePersonnage(a);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void utiliser_SoinTotal() {
|
||||||
|
|
||||||
|
j1.setStat("HP", 0);
|
||||||
|
j1.getCartePersonnage().utiliser();
|
||||||
|
|
||||||
|
int pvAllie = j1.getCartePersonnage().getPv();
|
||||||
|
|
||||||
|
assertEquals(pvAllie,j1.getStat("HP"));
|
||||||
|
|
||||||
|
j1.setStat("HP", 0);
|
||||||
|
j1.getCartePersonnage().utiliser();
|
||||||
|
|
||||||
|
// Le soin n'a fonctionné qu'une seule fois
|
||||||
|
assertEquals(0,j1.getStat("HP"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user