Voler équipements

This commit is contained in:
Paul Gross 2020-05-11 15:19:41 +02:00
parent 4d0d06de12
commit 77f7f3e0d9
7 changed files with 36 additions and 33 deletions

View File

@ -24,7 +24,7 @@ public class CarteLieuMultiple extends CarteLieu{
* @param j Appel la méthode utiliser de effet sur le joueur j
*/
public void utiliser(Joueur j) {
Pioche p = (Pioche) j.choisir(pioches);
Pioche p = (Pioche) j.choisir(pioches, Pioche.class);
System.out.println(pioches+ " "+p);
System.out.println(p.getStack());
Carte c = p.piocher();

View File

@ -17,8 +17,7 @@ public class EffetChoisirEffet extends Effet{
@Override
public void utiliser(Joueur joueur) {
Effet effet = (Effet) joueur.choisir(effets);
Effet effet = (Effet) joueur.choisir(effets,Effet.class);
effet.utiliser(joueur);
}

View File

@ -32,22 +32,18 @@ public class ActionVoler extends Action{
@Override
public void affecte(Joueur j1, Joueur j2) {
if(this.choix) {
List<CarteEquipement> equipements = j2.getEquipements();
// J1 choisit quel équipement voler
CarteEquipement equipement = (CarteEquipement) j1.choisir(equipements);
CarteEquipement equipement = (CarteEquipement) j1.choisir(equipements, CarteEquipement.class);
j1.voler(j2,equipement);
}else {
List<CarteEquipement> equipements = j1.getEquipements();
// J1 choisit quel équipement voler
CarteEquipement equipement = (CarteEquipement) j1.choisir(equipements);
CarteEquipement equipement = (CarteEquipement) j1.choisir(equipements,CarteEquipement.class);
j2.voler(j1,equipement);
}

View File

@ -109,7 +109,18 @@ public class GestionnaireJeu {
return false;
}
public CarteEquipement choisirEquipementVole(Joueur joueur) {
@SuppressWarnings("unchecked")
public Object choisir(Joueur joueur, List<?> list, Class<?> cls) {
if(cls == CarteEquipement.class) {
return choisirEquipementVole(joueur, (List<CarteEquipement>) list);
}
return list.get(0);
}
public CarteEquipement choisirEquipementVole(Joueur joueur, List<CarteEquipement> lce) {
Platform.runLater(() -> {
try {
pc.afficherChoisirEquipementVole(joueur);
@ -140,7 +151,6 @@ public class GestionnaireJeu {
}
public void waitPlateau() {
synchronized(plateau) {
try {
plateau.wait();
@ -204,10 +214,5 @@ public class GestionnaireJeu {
public RessourceLoader getRessourceLoader() {
return this.ressourceLoader;
}
}
}

View File

@ -4,7 +4,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import carte.Carte;
import carte.CarteEquipement;
import carte.CarteLieu;
import effet.Effet;
@ -226,24 +225,25 @@ public class Joueur {
}
public boolean hasOpponents() {
List<Joueur> joueursRange = this.getJoueursRange();
return !joueursRange.isEmpty();
}
public List<Joueur> getJoueursRange() {
CarteLieu cl = this.carteLieu;
List<Joueur> joueurs = new ArrayList<Joueur>();
joueurs.addAll(cl.getJoueurs());
joueurs.addAll(cl.getJoueursAdjacents());
joueurs.remove(this);
return !joueurs.isEmpty();
return joueurs;
}
public boolean choisir() {
return this.plateau.choisir(this);
}
public Object choisir(List<?> list) {
return list.get(0);
public Object choisir(List<?> adjacents,Class cls) {
return this.plateau.choisir(this,adjacents, cls);
}
public Joueur choisirAdjacents() {
@ -254,4 +254,5 @@ public class Joueur {
return this.plateau.choisirParmisTous(this);
}
}

View File

@ -8,6 +8,7 @@ import java.util.List;
import java.util.Map;
import carte.Carte;
import carte.CarteEquipement;
import carte.CarteLieu;
import carte.CarteLieuMultiple;
import carte.CarteLieuType;
@ -265,6 +266,7 @@ public class Plateau extends Thread{
while(true) {
Joueur currentJoueur = this.joueurs.get(i % nbJoueurs);
currentJoueur.choisir(new ArrayList<CarteEquipement>(), CarteEquipement.class);
System.out.println("\n\n\n\n\n");
System.out.println("Au tour de "+currentJoueur.getNom());
System.out.println("Lancement des dés.");
@ -287,8 +289,8 @@ public class Plateau extends Thread{
System.out.println("Souhaitez vous attaquer quelqu'un ?");
if(currentJoueur.choisir()){
if(currentJoueur.hasOpponents()) {
List<Joueur> adjacents = currentJoueur.getJoueursAdjacents();
Joueur cible = (Joueur) currentJoueur.choisir(adjacents);
List<Joueur> adjacents = currentJoueur.getJoueursRange();
Joueur cible = (Joueur) currentJoueur.choisir(adjacents,Joueur.class);
attaquer(currentJoueur,cible);
if(isPartieTerminee()) break;
}else {
@ -459,4 +461,8 @@ public class Plateau extends Thread{
gj.updateVieJoueur(joueur,damage);
}
public Object choisir(Joueur joueur, List<?> list, Class cls) {
return gj.choisir(joueur,list,cls);
}
}

View File

@ -43,8 +43,7 @@ class ConditionClassPersonnageTest {
@Test
public void conditionClass_ListClassVide_RenvoieFalse() throws Exception {
List<Class<? extends CartePersonnage>> classes = new ArrayList<Class<? extends CartePersonnage>>();
ConditionClassPersonnage cc = new ConditionClassPersonnage(classes);
@ -54,7 +53,4 @@ class ConditionClassPersonnageTest {
assertFalse(cc.isTrue(j));
}
}