/// <summary> /// Pour chaque unité de l'IA, on récupère les suggestions de déplacement de l'unité, et on la déplace vers /// la case avec le coefficient de suggestion le plus élevé. /// </summary> /// <param name="partie">la partie en cours</param> public override void jouerTour(Partie partie) { Carte carte = partie.Carte; Random rand = new Random(); List<Unite> unites = carte.getUniteJoueur(this); if (unites.Count > 0) { foreach(Unite u in unites) { if (u.PointsDepl > 0) { SuggMap allowedMouv = u.StrategySuggestion.getSuggestion(partie.Carte, u); // on récupère les suggestions pour cette unité List<Coordonnees> coord = getMeilleursDeplacements(allowedMouv); // on récupère les meilleurs mouvement possible en fonction des suggestions if (coord.Count > 0) { int choix = rand.Next(coord.Count());//on choisi aléatoirement une coordonnees dans les meilleurs mouvements carte.deplaceUnite(u, coord[choix], allowedMouv); // et on déplace l'unité } } } } finirTour(); }
/// <summary> /// Créer la partie, initialise l'interface graphique et démarre la partie /// </summary> /// <param name="monteurC"></param> /// <param name="joueurs"></param> public void chargerPartie(MonteurCarte monteurC, List<Joueur> joueurs) { Task.Factory.StartNew(() => { MonteurPartieLocale monteurPartie = new MonteurPartieLocale(); monteurPartie.creerPartie(monteurC, joueurs); partie = monteurPartie.Partie; Dispatcher.BeginInvoke(new Action(() => { initialiseInterface(); })); commencerJeu(); }); }
/// <summary> /// Pour un joueur concret, on bloque le Thread du jeu avec un sémaphore /// </summary> /// <param name="partie"></param> public override void jouerTour(Partie partie) { sem.WaitOne(); }
private void ouvrir(string filepath) { Stream file = null; try { file = File.OpenRead(filepath); XmlSerializer mySerializer = new XmlSerializer(typeof(PartieLocale)); partie = (Partie)mySerializer.Deserialize(file); file.Close(); partie.associeJoueursUnite(); filename = filepath; saved = true; neverSaved = false; sauvegarderMenuItem.IsEnabled = true; sauvegarderSousMenuItem.IsEnabled = true; initialiseInterface(); commencerJeu(); } catch (Exception) { MessageBox.Show("Un erreur s'est produite pendant l'ouverture de la sauvegarde."); file.Close(); } }
/// <summary> /// Fait jouer un tour le joueur /// </summary> /// <param name="partie">la partie sur laquel le joueur joue</param> public abstract void jouerTour(Partie partie);