public static GameStateMCTS GameStateConverter(GameState g) { //Cette méthode sert à convertir un GameState traditionel, //à un GameStateMCTS var l = new List <JoueurMCTS>(); foreach (Player x in g.ListeDesJoueurs) { var joueur = new JoueurMCTS(x.ID); foreach (Planète q in x.ListeDePlanètesControllées) { joueur.AjouterPlanète(q.Id); } joueur.NbSoldats = x.NbSoldats; l.Add(joueur); } var p = new List <PlanèteMCTS>(); foreach (Planète x in g.ListeDesPlanètes) { var plan = new PlanèteMCTS(x.Id); plan.JoueurEnControlle = x.idDuPropriétaire; if (x.NiveauActuel == 0) { plan.NbPts = 25; } else if (x.NiveauActuel == 1) { plan.NbPts = 75; } else { plan.NbPts = 151; } p.Add(plan); } return(new GameStateMCTS(l, p)); }
public static GameStateMCTS NextGameState(GameStateMCTS gs, AttackInfo a) { var lplanète = gs.ListeDesPlanètes; var lplayer = gs.ListeDesJoueurs; var listeDesPlanètes = new List <PlanèteMCTS>(); var listeDesJoueurs = new List <JoueurMCTS>(); foreach (JoueurMCTS j in lplayer) { var playerToAdd = new JoueurMCTS(j.Id); playerToAdd.NbSoldats = j.NbSoldats; playerToAdd.PlanètesControllées = new List <string>(); foreach (string s in j.PlanètesControllées) { playerToAdd.PlanètesControllées.Add(s); } listeDesJoueurs.Add(playerToAdd); } foreach (PlanèteMCTS p in lplanète) { var planetToAdd = new PlanèteMCTS(p.Id); planetToAdd.JoueurEnControlle = p.JoueurEnControlle; planetToAdd.NbPts = p.NbPts; listeDesPlanètes.Add(planetToAdd); } if (a.PlanèteCible != null) //Aucune atq { var planète = listeDesPlanètes.Find(p => p.Id == a.PlanèteCible); var attaquant = listeDesJoueurs.Find(j => j.Id == a.JoueurLancantAtq); if (a.JoueurLancantAtq == a.JoueurSeDéfendant) //Atq à sois même { planète.NbPts += a.NombreDeUnits; } else { planète.JoueurEnControlle = a.JoueurLancantAtq; attaquant.AjouterPlanète(a.PlanèteCible); if (!listeDesPlanètes.Find(p => p.Id == a.PlanèteCible).EstNeutre) //Atq à une pNeutre { listeDesJoueurs.Find(j => j.Id == a.JoueurSeDéfendant).EnleverPlanète(a.PlanèteCible); } } } //Le code pour spawn les nouveaux soldats foreach (JoueurMCTS j in listeDesJoueurs) { foreach (string s in j.PlanètesControllées) { var p = listeDesPlanètes.Find(b => b.Id == s); j.NbSoldats += p.NbUnitPerGen; } j.NbSoldats -= a.NombreDeUnits; } return(new GameStateMCTS(listeDesJoueurs, listeDesPlanètes)); }