package draftdb;
import draftdb.intelligences.IA_Realiste;
import draftdb.intelligences.Intelligence;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jdom2.output.XMLOutputter;
public class Simulation {
HashMap<Integer, Coureur> coureursLibres;
Map<Integer, Intelligence> intelligencesEquipes;
ParseurXML parseurXML;
public Simulation(FichierCDB fichierCDB) {
parseurXML = fichierCDB.convertirEnXML().parser();
parseurXML.recupererCoureurs();
parseurXML.recupererEquipes();
coureursLibres = new HashMap(parseurXML.getCoureurs());
intelligencesEquipes = new HashMap<>();
// Initialisation des intelligences des équipes
for (Integer idEquipe : parseurXML.getEquipes().keySet()) {
Equipe equipe = parseurXML.getEquipe(idEquipe);
Intelligence intelligence;
//if (!idEquipe.equals(parseurXML.getIdEquipeJoueur()))
intelligence = new IA_Realiste(parseurXML.getEquipe(idEquipe), this);
//else
//intelligence = new IntelligenceJoueur(parseurXML.getEquipe(idEquipe), this);
intelligence.choisirNbMaxCoureurs();
System.out.println(equipe.getNom() + " " + intelligence.getNbMaxCoureurs());
intelligencesEquipes.put(idEquipe, intelligence);
}
}
public void simuler(int nombreTour) {
System.out.println("Vous avez choisi l'équipe : " + parseurXML.getEquipeJoueur().getNom());
// Boucle de simulation principale
for (int tourCourant = 1; tourCourant <= nombreTour; tourCourant++) {
System.out.println("Tour " + tourCourant);
for (Intelligence ia : intelligencesEquipes.values()) {
Equipe equipe = ia.getEquipe();
if (!coureursLibres.isEmpty()) {
if (ia.getCompositionEquipe().size() < ia.getNbMaxCoureurs() && ia.getBudgetProvisoire() >= 2500) {
String messageChoix;
try {
Coureur coureurChoisi = ia.choisirCoureur();
messageChoix
= "L'équipe " + equipe.getNom()
+ " à choisit le coureur " + coureurChoisi.getNom_prenom()
+ " (" + ia.getBudgetProvisoire()
+ " / " + equipe.getBudget() + ")";
} catch (Exception ex) {
messageChoix = "L'équipe " + equipe.getNom() + " ne choisit plus";
}
System.out.println(messageChoix);
}
}
}
}
System.out.println("Récapitulatif des compositions des équipes : ");
for (Intelligence ia : intelligencesEquipes.values()) {
System.out.println("---" + ia.getEquipe().getNom() + "---");
System.out.println(ia.getCompositionEquipe().size() + " coureurs");
for (Coureur coureur : ia.getCompositionEquipe()) {
System.out.println(coureur.getNom_prenom());
}
System.out.println("");
}
System.out.println("Coureurs libres (" + coureursLibres.size() + ") : ");
for (Coureur coureurLibre : coureursLibres.values()) {
System.out.println(coureurLibre.getNom_prenom() + " " + coureurLibre.getSalaire() + " " + coureurLibre.getMoyenne());
}
}
public void sauvegarder() {
System.out.println("\n Sauvegarde :");
// Réinitialisation des équipes
for (Coureur coureur : parseurXML.getCoureurs().values()) {
// 119 : idEquipe pour les coureurs libres
parseurXML.modifierEquipe(coureur.getId(), 119);
}
// Modification des équipes des coureurs choisis
for (Intelligence ia : intelligencesEquipes.values()) {
for (Coureur coureur : ia.getCompositionEquipe()) {
parseurXML.modifierEquipe(coureur.getId(), ia.getEquipe().getId());
}
}
XMLOutputter xmlSortie = new XMLOutputter();
try {
xmlSortie.output(parseurXML.getDocument(), new FileWriter("src/XML/tempPCM.xml"));
FichierXML fichierXml = new FichierXML("tempPCM.xml");
fichierXml.convertirEnCDB("test.cdb");
} catch (IOException ex) {
Logger.getLogger(Simulation.class.getName()).log(Level.SEVERE, null, ex);
}
}
public ParseurXML getParseur() {
return parseurXML;
}
public HashMap<Integer, Coureur> getCoureursLibres() {
return coureursLibres;
}
public void supprimerCoureurLibre(Coureur coureur) {
this.coureursLibres.remove((Integer)coureur.getId());
}
}