fait enum contexte et changements a tester sur IA

This commit is contained in:
AhmedSaad 2020-04-30 10:30:55 +02:00
parent 641d298bd3
commit 8042514def
3 changed files with 113 additions and 27 deletions

10
src/main/Contexte.java Normal file
View File

@ -0,0 +1,10 @@
package main;
public enum Contexte {
ATTAQUER,
VOLER_EQUIP,
EFFET_NEGATIF_SUR_AUTRES,
EFFET_POSITIF_SUR_AUTRES
}

View File

@ -53,7 +53,7 @@ public class ControleurIA {
public double getRandomPercentage() {
return Math.floor(Math.random() * seed);
}
public static List<Joueur> getEnnemisJoueurs(JoueurVirtuel jIA, List<Joueur> joueursLieu) {
List<Joueur> res = new ArrayList<>();
Equipe equipejIA = jIA.getEquipe();
@ -67,6 +67,20 @@ public class ControleurIA {
}
return res;
}
public static List<Joueur> getAmisJoueurs(JoueurVirtuel jIA, List<Joueur> joueursLieu) {
List<Joueur> res = new ArrayList<>();
Equipe equipejIA = jIA.getEquipe();
if (equipejIA == CartePersonnage.Equipe.NEUTRE)
res = joueursLieu;
else {
for (Joueur j : joueursLieu) {
if (equipejIA.equals(j.getEquipe()))
res.add(j);
}
}
return res;
}
// loup-garou : si attaquee par joueur pas du meme camps 60%? devoilement
public boolean devoilerIALoupGarou(JoueurVirtuel jIA, Joueur jAttaquant) {

View File

@ -1,4 +1,5 @@
package main;
import java.util.ArrayList;
import java.util.List;
@ -6,51 +7,112 @@ import carte.Equipement;
import carte.EquipementStat;
import effet.Effet;
public class JoueurVirtuel extends Joueur {
private int nvDifficulte = 1; //possibilite de 1, 2 ou 3
public JoueurVirtuel (String name) {
private int nvDifficulte = 1; // possibilite de 1, 2 ou 3
public JoueurVirtuel(String name) {
super(name);
}
public Effet choisirEffet(List<Effet> effets) {
return effets.get((int)Math.floor(Math.random() * effets.size()));
return effets.get((int) Math.floor(Math.random() * effets.size()));
}
//on privilegie les equipements qui donnent des stats
// on privilegie les equipements qui donnent des stats
public Equipement choisirEquipement(List<Equipement> equips) {
List<Equipement> equipstat = trouverEquipStat(equips);
if(equipstat.size()>0)
return equipstat.get((int)Math.floor(Math.random() * equipstat.size()));
return equips.get((int)Math.floor(Math.random() * equips.size()));
if (equipstat.size() > 0)
return equipstat.get((int) Math.floor(Math.random() * equipstat.size()));
return equips.get((int) Math.floor(Math.random() * equips.size()));
}
public List<Equipement> trouverEquipStat(List<Equipement> equips){
public List<Equipement> trouverEquipStat(List<Equipement> equips) {
List<Equipement> res = new ArrayList<>();
for(Equipement e : equips) {
if(e instanceof EquipementStat)
for (Equipement e : equips) {
if (e instanceof EquipementStat)
res.add(e);
}
return res;
}
//on choisit les joueurs avec les moins de hp, on ne distingue pas cependant d'amie ou ennemi
public Joueur choisirJoueur(List<Joueur> joueurs) {
Joueur res = joueurs.get(0);
for(int i=1; i<joueurs.size();i++) {
if(res.getStat("HP")>joueurs.get(i).getStat("HP"))
res = joueurs.get(i);
public Joueur choisirJoueur(List<Joueur> joueurs, Contexte c) {
Joueur res;
switch (c) {
case ATTAQUER:
res = choisirJoueurEnnemi(joueurs);
break;
case VOLER_EQUIP:
res = choisirJoueurAVoler(joueurs);
break;
case EFFET_NEGATIF_SUR_AUTRES:
res = choisirJoueurEnnemi(joueurs);
break;
case EFFET_POSITIF_SUR_AUTRES:
res = choisirJoueurAmi(joueurs);
break;
default:
res = null; // faire exception?
}
return res;
//return joueurs.get((int)Math.floor(Math.random() * joueurs.size()));
}
// on choisit les joueurs avec les moins de hp, on met en priorite les ennemis
public Joueur choisirJoueurEnnemi(List<Joueur> joueurs) {
List<Joueur> resliste;
List<Joueur> ennemis = ControleurIA.getEnnemisJoueurs(this, joueurs);
if (ennemis.size() > 0)
resliste = ennemis;
else
resliste = joueurs;
Joueur res = resliste.get(0);
for (int i = 1; i < resliste.size(); i++) {
if (res.getStat("HP") > resliste.get(i).getStat("HP"))
res = resliste.get(i);
}
return res;
// return joueurs.get((int)Math.floor(Math.random() * joueurs.size()));
}
// on choisit les joueurs avec le plus d'equipements, on met en priorite les
// ennemis
public Joueur choisirJoueurAVoler(List<Joueur> joueurs) {
List<Joueur> resliste;
List<Joueur> ennemis = ControleurIA.getEnnemisJoueurs(this, joueurs);
if (ennemis.size() > 0)
resliste = ennemis;
else
resliste = joueurs;
Joueur res = resliste.get(0);
for (int i = 1; i < resliste.size(); i++) {
if (res.getStat("nb_equipements") > resliste.get(i).getStat("nb_equipements"))
res = resliste.get(i);
}
return res;
}
// on choisit les joueurs avec les moins de hp, on met en priorite les amis (ex:
// pour les soigner?)
public Joueur choisirJoueurAmi(List<Joueur> joueurs) {
List<Joueur> resliste;
List<Joueur> ennemis = ControleurIA.getAmisJoueurs(this, joueurs);
if (ennemis.size() > 0)
resliste = ennemis;
else
resliste = joueurs;
Joueur res = resliste.get(0);
for (int i = 1; i < resliste.size(); i++) {
if (res.getStat("HP") > resliste.get(i).getStat("HP"))
res = resliste.get(i);
}
return res;
// return joueurs.get((int)Math.floor(Math.random() * joueurs.size()));
}
public int getDifficulte() {
return nvDifficulte;
}
public void setDifficulte(int i) {
nvDifficulte = i;
}