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; }
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)); } } }
/// <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])); } } }
/// <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); }
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(); } }
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; }
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; }
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; }
public abstract SuggMap getSuggestion(Carte carte, Unite unite);
/// <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); }