Modification de la classe ConditionClass en ConditionClassPersonnage, création d'une classe ConditionType et ajout de tests correspondants
This commit is contained in:
parent
fd3cf937c4
commit
b6a1db9e3b
@ -1,48 +0,0 @@
|
|||||||
package condition;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import main.Joueur;
|
|
||||||
|
|
||||||
|
|
||||||
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.getEquipe().getClass();
|
|
||||||
|
|
||||||
for(Class<? extends T> classe : classes) {
|
|
||||||
|
|
||||||
|
|
||||||
if(ccp.getClass() == classe.getClass() || cct.getClass() == classe.getClass() ) return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
49
src/condition/ConditionClassPersonnage.java
Normal file
49
src/condition/ConditionClassPersonnage.java
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
package condition;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import main.Joueur;
|
||||||
|
import personnage.CartePersonnage;
|
||||||
|
|
||||||
|
|
||||||
|
public class ConditionClassPersonnage extends Condition{
|
||||||
|
|
||||||
|
private List<Class<? extends CartePersonnage>> classes;
|
||||||
|
|
||||||
|
public ConditionClassPersonnage(List<Class<? extends CartePersonnage>> classes){
|
||||||
|
|
||||||
|
this.classes = new ArrayList<Class<? extends CartePersonnage>>();
|
||||||
|
this.classes.addAll(classes);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Vérifie qu'il existe au moins une classe qui correspond au Personnage du Joueur.
|
||||||
|
* <br><br>
|
||||||
|
* exemple :
|
||||||
|
*
|
||||||
|
* classes = { Emi.class, Metamorphe.class, ... etc }
|
||||||
|
* <br>
|
||||||
|
* Si la class de la carte du joueur correspond à un des élements dans classes alors on renvoie vrai.
|
||||||
|
*
|
||||||
|
* @param joueur Le joueur sur lequel on vérifie les conditions.
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean isTrue(Joueur joueur)
|
||||||
|
{
|
||||||
|
Class<? extends CartePersonnage> ccp = joueur.getCartePersonnage().getClass();
|
||||||
|
|
||||||
|
for(Class<? extends Object> classe : classes) {
|
||||||
|
|
||||||
|
if(ccp == classe
|
||||||
|
//|| cct.getClass() == classe.getClass()
|
||||||
|
) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
46
src/condition/ConditionType.java
Normal file
46
src/condition/ConditionType.java
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
package condition;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import main.Joueur;
|
||||||
|
|
||||||
|
|
||||||
|
public class ConditionType extends Condition{
|
||||||
|
|
||||||
|
private List<Joueur.Equipe> equipes;
|
||||||
|
|
||||||
|
public ConditionType(List<Joueur.Equipe> equipes){
|
||||||
|
|
||||||
|
this.equipes = new ArrayList<Joueur.Equipe>();
|
||||||
|
this.equipes.addAll(equipes);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Vérifie qu'il existe au moins une classe qui correspond à l'équipe du Joueur.
|
||||||
|
* <br><br>
|
||||||
|
* exemple :
|
||||||
|
*
|
||||||
|
* classes = { NEUTRE,SHADOW,HUNTER }
|
||||||
|
* <br>
|
||||||
|
* Si l'équipe du joueur correspond à un des élements dans la liste des équipes alors on renvoie vrai.
|
||||||
|
*
|
||||||
|
* @param joueur Le joueur sur lequel on vérifie les conditions.
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean isTrue(Joueur joueur)
|
||||||
|
{
|
||||||
|
Joueur.Equipe equipeJoueur = joueur.getEquipe();
|
||||||
|
|
||||||
|
for(Joueur.Equipe equipe : equipes) {
|
||||||
|
|
||||||
|
if(equipeJoueur == equipe) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -2,6 +2,8 @@ package main;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import main.Joueur.Equipe;
|
||||||
|
|
||||||
public class ControleurIA {
|
public class ControleurIA {
|
||||||
|
|
||||||
public static boolean choixUtiliserPouvoirLieu() {
|
public static boolean choixUtiliserPouvoirLieu() {
|
||||||
@ -43,8 +45,8 @@ public class ControleurIA {
|
|||||||
|
|
||||||
public static List<Joueur> getEnnemisJoueurs(JoueurVirtuel jIA, List<Joueur> joueursLieu) {
|
public static List<Joueur> getEnnemisJoueurs(JoueurVirtuel jIA, List<Joueur> joueursLieu) {
|
||||||
List<Joueur> res = new ArrayList<>();
|
List<Joueur> res = new ArrayList<>();
|
||||||
String equipejIA = jIA.getEquipe();
|
Equipe equipejIA = jIA.getEquipe();
|
||||||
if (equipejIA.equals("NEUTRE"))
|
if (equipejIA == Joueur.Equipe.NEUTRE)
|
||||||
res = joueursLieu;
|
res = joueursLieu;
|
||||||
else {
|
else {
|
||||||
for (Joueur j : joueursLieu) {
|
for (Joueur j : joueursLieu) {
|
||||||
@ -57,7 +59,7 @@ public class ControleurIA {
|
|||||||
|
|
||||||
// loup-garou : si attaquee par joueur pas du meme camps 60%? devoilement
|
// loup-garou : si attaquee par joueur pas du meme camps 60%? devoilement
|
||||||
public static boolean devoilerIALoupGarou(JoueurVirtuel jIA, Joueur jAttaquant) {
|
public static boolean devoilerIALoupGarou(JoueurVirtuel jIA, Joueur jAttaquant) {
|
||||||
String equipejIA = jIA.getEquipe();
|
Equipe equipejIA = jIA.getEquipe();
|
||||||
double rand = getRandomPercentage();
|
double rand = getRandomPercentage();
|
||||||
if (!equipejIA.equals(jAttaquant.getEquipe())) {
|
if (!equipejIA.equals(jAttaquant.getEquipe())) {
|
||||||
if (rand < 60)
|
if (rand < 60)
|
||||||
@ -76,7 +78,7 @@ public class ControleurIA {
|
|||||||
// vampire : si attaque joueur et propre vie<10?hp 60%? (plus vie baisse, plus
|
// vampire : si attaque joueur et propre vie<10?hp 60%? (plus vie baisse, plus
|
||||||
// proba augmente) devoilement
|
// proba augmente) devoilement
|
||||||
public static boolean devoilerIAVampire(JoueurVirtuel jIA, Joueur jAttaquee) {
|
public static boolean devoilerIAVampire(JoueurVirtuel jIA, Joueur jAttaquee) {
|
||||||
String equipejIA = jIA.getEquipe();
|
Equipe equipejIA = jIA.getEquipe();
|
||||||
double rand = getRandomPercentage();
|
double rand = getRandomPercentage();
|
||||||
if (!equipejIA.equals(jAttaquee.getEquipe())) {
|
if (!equipejIA.equals(jAttaquee.getEquipe())) {
|
||||||
if (rand < 940 / 9 - (40 * jIA.getStat("HP")))
|
if (rand < 940 / 9 - (40 * jIA.getStat("HP")))
|
||||||
|
@ -3,8 +3,8 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import carte.CarteLieu;
|
|
||||||
import effet.Effet;
|
import effet.Effet;
|
||||||
|
import personnage.CartePersonnage;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -14,6 +14,8 @@ public class Joueur {
|
|||||||
private String nom;
|
private String nom;
|
||||||
private boolean revele;
|
private boolean revele;
|
||||||
private Plateau plateau;
|
private Plateau plateau;
|
||||||
|
private CartePersonnage cartePersonnage;
|
||||||
|
private Equipe equipe;
|
||||||
|
|
||||||
// map keys
|
// map keys
|
||||||
public static final String PLAYER_HP = "hp";
|
public static final String PLAYER_HP = "hp";
|
||||||
@ -26,6 +28,12 @@ public class Joueur {
|
|||||||
|
|
||||||
private Map<String, Integer> stats;
|
private Map<String, Integer> stats;
|
||||||
|
|
||||||
|
public enum Equipe{
|
||||||
|
NEUTRE,
|
||||||
|
SHADOW,
|
||||||
|
HUNTER
|
||||||
|
}
|
||||||
|
|
||||||
public Joueur(String nom) {
|
public Joueur(String nom) {
|
||||||
this.nom = nom;
|
this.nom = nom;
|
||||||
this.revele = false;
|
this.revele = false;
|
||||||
@ -46,8 +54,8 @@ public class Joueur {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//shadows, hunters ou neutre
|
//shadows, hunters ou neutre
|
||||||
public String getEquipe() {
|
public Equipe getEquipe() {
|
||||||
return null;
|
return this.equipe;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int setStat(String key, int valeur) {
|
public int setStat(String key, int valeur) {
|
||||||
@ -111,9 +119,19 @@ public class Joueur {
|
|||||||
return this.revele;
|
return this.revele;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getCartePersonnage() {
|
public CartePersonnage getCartePersonnage() {
|
||||||
// TODO Auto-generated method stub
|
return this.cartePersonnage;
|
||||||
return null;
|
}
|
||||||
|
|
||||||
|
public void setCartePersonnage(CartePersonnage cp) {
|
||||||
|
|
||||||
|
this.cartePersonnage = cp;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEquipe(Equipe equipe) {
|
||||||
|
this.equipe = equipe;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
62
tests/condition/ConditionClassPersonnageTest.java
Normal file
62
tests/condition/ConditionClassPersonnageTest.java
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
package condition;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import main.Joueur;
|
||||||
|
import personnage.Allie;
|
||||||
|
import personnage.Bob;
|
||||||
|
import personnage.CartePersonnage;
|
||||||
|
import personnage.Daniel;
|
||||||
|
|
||||||
|
class ConditionClassPersonnageTest {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void conditionClass_RenvoieAppartenancePersonnage() {
|
||||||
|
|
||||||
|
|
||||||
|
List<Class<? extends CartePersonnage>> classes = new ArrayList<Class<? extends CartePersonnage>>();
|
||||||
|
classes.add(Allie.class);
|
||||||
|
classes.add(Daniel.class);
|
||||||
|
ConditionClassPersonnage cc = new ConditionClassPersonnage(classes);
|
||||||
|
|
||||||
|
Joueur j = new Joueur(null);
|
||||||
|
CartePersonnage cp1 = new Allie(null, 0, j);
|
||||||
|
|
||||||
|
|
||||||
|
// Le personnage fait partie des classes.
|
||||||
|
j.setCartePersonnage(cp1);
|
||||||
|
assertTrue(cc.isTrue(j));
|
||||||
|
|
||||||
|
|
||||||
|
CartePersonnage cp2 = new Bob(null, 0, j);
|
||||||
|
// Le personnage ne fait pas partie des classes
|
||||||
|
j.setCartePersonnage(cp2);
|
||||||
|
assertFalse(cc.isTrue(j));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void conditionClass_ListClassVide_RenvoieFalse() {
|
||||||
|
|
||||||
|
|
||||||
|
List<Class<? extends CartePersonnage>> classes = new ArrayList<Class<? extends CartePersonnage>>();
|
||||||
|
|
||||||
|
ConditionClassPersonnage cc = new ConditionClassPersonnage(classes);
|
||||||
|
Joueur j = new Joueur(null);
|
||||||
|
CartePersonnage cp1 = new Allie(null, 0, j);
|
||||||
|
j.setCartePersonnage(cp1);
|
||||||
|
assertFalse(cc.isTrue(j));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -4,9 +4,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
|||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import condition.Condition;
|
|
||||||
import condition.ConditionMultiple;
|
|
||||||
import condition.ConditionMultipleOR;
|
|
||||||
import main.Joueur;
|
import main.Joueur;
|
||||||
|
|
||||||
class ConditionMultipleTest {
|
class ConditionMultipleTest {
|
||||||
|
55
tests/condition/ConditionTypeTest.java
Normal file
55
tests/condition/ConditionTypeTest.java
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
package condition;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import main.Joueur;
|
||||||
|
import personnage.Allie;
|
||||||
|
import personnage.Bob;
|
||||||
|
import personnage.CartePersonnage;
|
||||||
|
import personnage.Daniel;
|
||||||
|
|
||||||
|
class ConditionTypeTest {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void conditionType_RenvoieAppartenanceEquipe() {
|
||||||
|
|
||||||
|
|
||||||
|
List<Joueur.Equipe> equipes = new ArrayList<Joueur.Equipe>();
|
||||||
|
equipes.add(Joueur.Equipe.HUNTER);
|
||||||
|
equipes.add(Joueur.Equipe.NEUTRE);
|
||||||
|
ConditionType ct = new ConditionType(equipes);
|
||||||
|
|
||||||
|
Joueur j = new Joueur(null);
|
||||||
|
j.setEquipe(Joueur.Equipe.NEUTRE);
|
||||||
|
|
||||||
|
|
||||||
|
assertTrue(ct.isTrue(j));
|
||||||
|
|
||||||
|
j.setEquipe(Joueur.Equipe.SHADOW);
|
||||||
|
assertFalse(ct.isTrue(j));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void conditionClass_ListTypeVide_RenvoieFalse() {
|
||||||
|
|
||||||
|
|
||||||
|
List<Joueur.Equipe> equipes = new ArrayList<Joueur.Equipe>();
|
||||||
|
|
||||||
|
ConditionType ct = new ConditionType(equipes);
|
||||||
|
Joueur j = new Joueur(null);
|
||||||
|
assertFalse(ct.isTrue(j));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user