예제 #1
0
 /// <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();
 }
예제 #2
0
        /// <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();
            });
        }
예제 #3
0
 /// <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();
 }
예제 #4
0
        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();
            }
        }
예제 #5
0
 /// <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);