Esempio n. 1
0
        public override SuggMap getSuggestion(Carte carte, Unite unite)
        {
            SuggMap res = base.getSuggestion(carte, unite);

            // on cherche la meilleur case possible la plus éloigné des ennemis

            List<Coordonnees> meilleursCases = new List<Coordonnees>();
            Dictionary<Coordonnees, double> dictionary = new Dictionary<Coordonnees, double>();

            foreach (var pair in res)
            {
                if (pair.Value.Sugg != 0)
                {
                    double minDist = double.MaxValue;
                    Coordonnees coordCase = pair.Key;
                    Coordonnees coord=null;
                    foreach (Unite u in carte.Unites.Where(z => z.IdProprietaire != unite.IdProprietaire))
                    {
                        if (coordCase.distance(u.Coord) < minDist)
                        {
                            minDist = coordCase.distance(u.Coord);
                            coord = u.Coord;
                        }
                    }
                    res[coordCase].Sugg += (int)minDist;
                }
            }

            return res;
        }
Esempio n. 2
0
 public void chargerCarte(ref Carte c)
 {
     for (int i = 0; i < c.Largeur; i++)
     {
         for (int j=0;j<c.Hauteur;j++)
         {
             c.setCase(i, j, c.FabriqueCase.getCase((int)Case.CaseInt.Plaine));
         }
     }
 }
Esempio n. 3
0
 /// <summary>
 /// Charge la carte de façon aléatoire
 /// </summary>
 /// <param name="c">la carte a chargé</param>
 public void chargerCarte(ref Carte c)
 {
     WrapperMapAleatoire alea = new WrapperMapAleatoire();
     List<int> data = alea.generer(c.Largeur, c.Hauteur,5);
     for (int i = 0; i < c.Largeur; i++)
     {
         for (int j = 0; j < c.Hauteur; j++)
         {
             c.setCase(i, j, c.FabriqueCase.getCase(data[i*c.Largeur + j]));
         }
     }
 }
Esempio n. 4
0
        /// <summary>
        /// Récupère les suggestions en fonction du peuple de l'unité et de la case
        /// </summary>
        /// <param name="carte"></param>
        /// <param name="unite"></param>
        /// <returns></returns>
        public override SuggMap getSuggestion(Carte carte, Unite unite)
        {
            List<int> sugg = new WrapperSuggestion().getSuggestion(carte.toList(),                      //la carte
                                                                   getUnitesToList(carte, unite),       //l'emplacement des unités ennemis
                                                                   carte.Largeur,
                                                                   carte.Hauteur,
                                                                   unite.Coord.X,                       //coordonnees x de l'unité
                                                                   unite.Coord.Y,                       //coordonnees y de l'unité
                                                                   unite.PointsDepl,                    //le nombre de points de déplacement de l'unité
                                                                   unite.Proprietaire.Peuple.toInt());  //le peuple de l'unité

            return listIntToSuggMap(carte, sugg);
        }
Esempio n. 5
0
        public void chargerCarte(ref Carte c)
        {
            StreamReader myWriter = null;
            try
            {
                XmlSerializer mySerializer = new XmlSerializer(c.GetType());
                myWriter = new StreamReader(fileName);
                c = (Carte)mySerializer.Deserialize(myWriter);
                myWriter.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                myWriter.Close();

            }
        }
Esempio n. 6
0
        protected List<int> getUnitesToList(Carte carte, Unite unite)
        {
            List<int> res = new List<int>();
            List<Unite> tmp;
            for (int i = 0; i < carte.Largeur; i++)
            {
                for (int j = 0; j < carte.Hauteur; j++)
                {
                    tmp = carte.getUniteFromCoord(new Coordonnees(i, j));
                    if (tmp.Count > 0 && tmp[0].IdProprietaire != unite.IdProprietaire)
                        res.Add(tmp.Count);
                    else
                        res.Add(0);
                }
            }

            return res;
        }
Esempio n. 7
0
 public override int calculPoints(Carte c, Unite u)
 {
     int bonus = 0;
     Coordonnees coord = u.Coord;
     for(int i=0;i<c.Largeur;i++)
     {
         for(int j=0;j<c.Hauteur;j++)
         {
             if (coord.X - 1 > 0 && c.Cases[coord.X-1][coord.Y] is CaseEau
                 || coord.X + 1 < c.Largeur && c.Cases[coord.X + 1][coord.Y] is CaseEau
                 || coord.Y - 1 > 0 && c.Cases[coord.X][coord.Y-1] is CaseEau
                 || coord.Y + 1 < c.Hauteur && c.Cases[coord.X][coord.Y+1] is CaseEau)
             {
                 bonus = 1;
             }
         }
     }
     return base.calculPoints(c,u) + bonus;
 }
Esempio n. 8
0
        private static SuggMap listIntToSuggMap(Carte carte, List<int> sugg)
        {
            SuggMap res = new SuggMap();
            for (int i = 0; i < carte.Largeur; i++)
            {
                for (int j = 0; j < carte.Hauteur; j++)
                {
                    SuggData data = new SuggData();
                    data.Sugg = sugg[i * carte.Hauteur + j];
                    res[new Coordonnees(i, j)] = data;
                }
            }

            for (int i = 0; i < carte.Largeur; i++)
            {
                for (int j = 0; j < carte.Hauteur; j++)
                {
                    res[new Coordonnees(i, j)].Depl = sugg[carte.Largeur * carte.Hauteur + (i * carte.Hauteur + j)];
                }
            }

            return res;
        }
Esempio n. 9
0
 public abstract SuggMap getSuggestion(Carte carte, Unite unite);
Esempio n. 10
0
 /// <summary>
 /// Calcul les points
 /// </summary>
 /// <param name="c"></param>
 /// <param name="u"></param>
 /// <returns></returns>
 public virtual int calculPoints(Carte c, Unite u)
 {
     return c.Cases[u.Coord.X][u.Coord.Y].bonusPoints(this);
 }