Exemple #1
0
 public Region(ImageList imageList)
 {
     //Génération des champs
     tabAcres = new Acre[20, 12];
     imageListImages = imageList;
     //Création des Acres et place leur ID à 0
     for (int i = 0; i < 20; i++)
     {
         for (int j = 0; j < 12; j++)
         {
             tabAcres[i,j] = new Acre(imageListImages);
          }
     }
 }
Exemple #2
0
 /// <summary>
 /// Constructeur de la class Region
 /// </summary>
 /// <param name="nombreLignes">Nombre de lignes du tableau de la carte</param>
 /// <param name="nombreColonnes">Nombre de colonnes du tableau de la carte</param>
 public Region(int nombreLignes, int nombreColonnes)
 {
     carte = new Acre[nombreColonnes, nombreLignes];
     aleatoire = new Random();
     for (int i = 0; i < nombreColonnes; i++)
     {
         for (int j = 0; j < nombreLignes; j++)
         {
             carte[i, j] = new Acre();
         }
     }
     economieJeu = new Economie();
     date = new DateTime();
     nombreHabitant = 0;
     habitantAcre = 0;
     desastreNaturel = new Desastres[6];
     desastreNaturel[(int)Desastres.TypeDesastre.Verglas] = new Desastres(5, Acre.TypeTerrain.Energie);
     desastreNaturel[(int)Desastres.TypeDesastre.ReformeSante] = new Desastres(3, Acre.TypeTerrain.Hopital);
     desastreNaturel[(int)Desastres.TypeDesastre.TremblementTerre] = new Desastres(6, Acre.TypeTerrain.Residentiel);
     desastreNaturel[(int)Desastres.TypeDesastre.Manifestation] = new Desastres(2, Acre.TypeTerrain.Police);
     desastreNaturel[(int)Desastres.TypeDesastre.CriseEconnomique] = new Desastres(4, Acre.TypeTerrain.Commercial);
     desastreNaturel[(int)Desastres.TypeDesastre.Demenagement] = new Desastres(5, Acre.TypeTerrain.Stade);
     probaliterDesastre = 70;
 }
Exemple #3
0
        /// <summary>
        /// Calcul le cout pour construire à l'endroit indiqué
        /// </summary>
        /// <param name="typeTerrain">Si le lieu est une forêt ou un champ</param>
        /// <param name="typeBatiment">La batisse qu'on veut construire</param>
        /// <returns>Retourne le cout de la construction</returns>
        public int GetCout(Acre.TypeTerrain typeTerrain, Acre.TypeTerrain typeBatiment)
        {
            int cout = 0;
            cout = prixConstruction[(int)typeTerrain, (int)typeBatiment];

            return cout;
        }
Exemple #4
0
        /// <summary>
        /// Valide s'il est possible de construire le type de terrain précis à l'endroit indiquer
        /// <param name="typeTerrain">Le type de terraint qu'on veut construire</param>
        /// <param name="x">Position en X de la construction</param>
        /// <param name="y">Position en Y de la construction</param>
        /// <returns>Retourne un Messages.Id qui indique le résultat de possibilité de construction</returns>
        private Messages.Id ValidationSpecifique(Acre.TypeTerrain typeTerrain, int x, int y)
        {
            Messages.Id message = Messages.Id.MessageOk;
            if (DistancePointBatiment(Acre.TypeTerrain.Energie, x, y) < 12 || typeTerrain == Acre.TypeTerrain.Energie)
            {
                if (carte[x, y].Terrain == Acre.TypeTerrain.Champ)
                {
                    if (economieJeu.MontantBanque >= economieJeu.GetCout(Acre.TypeTerrain.Champ, typeTerrain))
                    {
                        Construire(typeTerrain, x, y);
                        economieJeu.MontantBanque -= economieJeu.GetCout(Acre.TypeTerrain.Champ, typeTerrain);
                    }
                    else
                    {
                        message = Messages.Id.ErreurFondInsuffisants;
                    }
                }
                else if (carte[x, y].Terrain == Acre.TypeTerrain.Foret)
                {
                    if (economieJeu.MontantBanque >= economieJeu.GetCout(Acre.TypeTerrain.Foret, typeTerrain))
                    {
                        Construire(typeTerrain, x, y);
                        economieJeu.MontantBanque -= economieJeu.GetCout(Acre.TypeTerrain.Foret, typeTerrain);
                    }
                    else
                    {
                        message = Messages.Id.ErreurFondInsuffisants;
                    }
                }
                else
                {
                    message = Messages.Id.ErreurLocationInvalide;
                }
            }
            else
            {
                message = Messages.Id.ErreurTropLoinEnergie;
            }

            return message;
        }
Exemple #5
0
        /// <summary>
        /// Valide qui est possible ou non de construire à place donné et le type de terrain donné
        /// </summary>
        /// <param name="terrain">Terrain qu'on veut construire</param>
        /// <param name="x">Valeur X du point</param>
        /// <param name="y">Valeur Y du point</param>
        /// <returns>Retourne le message d'erreur conrespondant à la possibilité de construction</returns>
        public Messages.Id ValiderConstruction(Acre.TypeTerrain terrain, int x, int y)
        {
            Messages.Id message = new Messages.Id();
            switch (terrain)
            {
                case Acre.TypeTerrain.Energie:
                    message = ValidationSpecifique(Acre.TypeTerrain.Energie, x, y);
                    break;

                case Acre.TypeTerrain.Police:
                    message = ValidationSpecifique(Acre.TypeTerrain.Police, x, y);
                    break;

                case Acre.TypeTerrain.Hopital:
                    message = ValidationSpecifique(Acre.TypeTerrain.Hopital, x, y);
                    break;

                case Acre.TypeTerrain.Residentiel:
                    message = ValidationSpecifique(Acre.TypeTerrain.Residentiel, x, y);
                    break;

                case Acre.TypeTerrain.Commercial:
                    message = ValidationSpecifique(Acre.TypeTerrain.Commercial, x, y);
                    break;

                case Acre.TypeTerrain.Stade:
                    message = ValidationSpecifique(Acre.TypeTerrain.Stade, x, y);
                    break;
            }
            return message;
        }
Exemple #6
0
        /// <summary>
        /// Retoure la distance entre le point et la batisse la plus proche du type donné
        /// </summary>
        /// <param name="terrain">Terrain recherché</param>
        /// <param name="x">Valeur X du point</param>
        /// <param name="y">Valeur Y du point</param>
        /// <returns>Valeur de la distance</returns>
        public int DistancePointBatiment(Acre.TypeTerrain terrain, int x, int y)
        {
            int distance = int.MaxValue;
            for (int i = 0; i < carte.GetLength(0); i++)
            {
                for (int j = 0; j < carte.GetLength(1); j++)
                {
                    if (carte[i, j].Terrain == terrain)
                    {
                        if (CalculerDistance(i, j, x, y) < distance)
                        {
                            distance = CalculerDistance(i, j, x, y);
                        }
                    }
                }
            }

            return distance;
        }
Exemple #7
0
 /// <summary>
 /// Constuit le terrain voulu au point voulu
 /// </summary>
 /// <param name="terrain">Terrain qu'on veut construire</param>
 /// <param name="x">X de la case où l'on veut construire</param>
 /// <param name="y">Y de la case où l'on veut construire</param>
 public void Construire(Acre.TypeTerrain terrain, int x, int y)
 {
     carte[x, y].Terrain = terrain;
 }
Exemple #8
0
        private void ValiderConstruction(Acre.TypeTerrain type, int x, int y)
        {
            Messages.Id message = jeu.ValiderConstruction(type, x, y);

            if (message != Messages.Id.MessageOk)
            {
                AfficherMessage(message);
            }
            Actualiser();
        }
Exemple #9
0
 /// <summary>
 /// constructeur de la classe Desastres
 /// </summary>
 /// <param name="taille">nombre de cases de côté</param>
 /// <param name="batimentAffecte">Le type de batiment qui sont détruit par la catastrophe</param>
 public Desastres(int taille, Acre.TypeTerrain batimentAffecte)
 {
     this.batimentAffecte = batimentAffecte;
     this.taille = taille;
 }