コード例 #1
0
ファイル: Champ.cs プロジェクト: jeepee12/Demineur
        /// <summary>
        /// Constructeur de la classe Champ
        /// </summary>
        /// <param name="nombreLignes">Nombre de ligne de jeu</param>
        /// <param name="nombreColonnes">Nombre de colonnes de jeu</param>
        /// <param name="nombreMines">Nombre de mine généré dans le jeu</param>
        public Champ(int nombreLignes, int nombreColonnes, int nombreMines)
        {
            donnees = new Zone[nombreLignes, nombreColonnes];
            for (int i = 0; i < nombreLignes; i++)
            {
                for (int j = 0; j < nombreColonnes; j++)
                {
                    donnees[i, j] = new Zone();
                }

            }

            this.nombreMines = nombreMines;
            this.etatJeu = EtatPartie.EnCours;
            this.nombreDeDemine = 0;
            this.nombreDeZone = nombreColonnes * nombreLignes;
        }
コード例 #2
0
ファイル: Champ.cs プロジェクト: jeepee12/Demineur
        /// <summary>
        /// Demine la case passé en X et Y, la démine et regarde si dois déminer les autres autours
        /// </summary>
        /// <param name="x">Position en X de la case à déminé</param>
        /// <param name="y">Position en Y de la case à déminé</param>
        public void Deminer(int x, int y)
        {
            if (!donnees[x, y].Deminee)
            {
                donnees[x, y].Deminee = true;

                if (donnees[x, y].NombreAdjacentes != -1)
                {
                    this.nombreDeDemine++;

                    if (donnees[x, y].NombreAdjacentes == 0)
                    {
                        for (int i = x - 1; i <= x + 1; i++)
                        {
                            for (int j = y - 1; j <= y + 1; j++)
                            {
                                if (i >= 0 && i < donnees.GetLength(0) && j >= 0 && j < donnees.GetLength(1))
                                {
                                    if (!donnees[i, j].Deminee)
                                    {
                                        if (donnees[i, j].NombreAdjacentes == 0)
                                        {
                                            this.Deminer(i, j);
                                        }
                                        else
                                        {
                                            donnees[i, j].Deminee = true;
                                            this.nombreDeDemine++;
                                        }
                                    }
                                }

                            }
                        }

                    }
                }
                else if (donnees[x, y].NombreAdjacentes == -1)
                {
                    etatJeu = EtatPartie.Perdu;
                }

                if (nombreDeDemine == (this.nombreDeZone - this.nombreMines))
                {
                    etatJeu = EtatPartie.Gagne;
                }
            }
        }
コード例 #3
0
ファイル: Champ.cs プロジェクト: jeepee12/Demineur
        /// <summary>
        /// Initialise le jeu/ les données
        /// </summary>
        public void InitialiserJeu()
        {
            Random aleatoire = new Random();
            int x = 0;
            int y = 0;
            bool different = false;

            this.etatJeu = EtatPartie.EnCours;
            this.nombreDeDemine = 0;

            for (int i = 0; i < this.Donnees.GetLength(0); i++)
            {
                for (int j = 0; j < this.Donnees.GetLength(1); j++)
                {
                    donnees[i, j].NombreAdjacentes = 0;
                    donnees[i, j].Deminee = false;
                }
            }

            for (int i = 0; i < this.nombreMines; i++)
            {
                while (!different)
                {
                    x = aleatoire.Next(0, this.Donnees.GetLength(0));
                    y = aleatoire.Next(0, this.Donnees.GetLength(1));
                    if (donnees[x, y].NombreAdjacentes != -1)
                    {
                        different = true;
                        donnees[x, y].NombreAdjacentes = -1;
                    }

                }
                different = false;
            }
            for (int i = 0; i < donnees.GetLength(0); i++)
            {
                for (int j = 0; j < donnees.GetLength(1); j++)
                {
                    donnees[i, j].NombreAdjacentes = GetNombreVoisins(i, j);
                }

            }
        }
コード例 #4
0
 private StatusPartie(EtatPartie etat, CouleurCamp couleur)
 {
     this.etat    = etat;
     this.couleur = couleur;
 }