예제 #1
0
        public Grille(int taille, int pourcentage, string libelle, int age, int energie)
        {
            Taille = taille;
            cellule[,] tableauDeCellules = new cellule[taille, taille];
            for (int i = 0; i < taille; i++)
            {
                for (int j = 0; j < taille; j++)
                {
                    tableauDeCellules[i, j]           = new cellule(energie, age);
                    tableauDeCellules[i, j].PositionX = i;
                    tableauDeCellules[i, j].PositionY = j;
                }
            }
            Taille = taille;
            float nb_de_cellule = taille * taille * pourcentage / 100;

            while (nb_de_cellule > 0)
            {
                Random rnd = new Random();
                int    i   = rnd.Next(0, taille - 1);
                int    j   = rnd.Next(0, taille - 1);
                if (!tableauDeCellules[i, j].Vivant)
                {
                    tableauDeCellules[i, j].Vivant = true;
                    tableauDeCellules[i, j].Energy = energie;

                    nb_de_cellule--;
                }
            }
            this.TableauDeCellules = tableauDeCellules;
        }
예제 #2
0
        public cellule VoisinEst(cellule macase)
        {
            int E = macase.PositionY + 1;

            if (macase.PositionY >= Taille - 1)
            {
                E = 0;
            }
            return(TableauDeCellules[macase.PositionX, E]);
        }
예제 #3
0
        public cellule VoisinSud(cellule macase)
        {
            int S = macase.PositionX + 1;

            if (macase.PositionX >= Taille - 1)
            {
                S = 0;
            }
            return(TableauDeCellules[S, macase.PositionY]);
        }
예제 #4
0
        public cellule VoisinOuest(cellule macase)
        {
            int O = macase.PositionY - 1;

            if (macase.PositionY <= 0)
            {
                O = Taille - 1;
            }
            return(TableauDeCellules[macase.PositionX, O]);
        }
예제 #5
0
        public cellule VoisinNord(cellule macase)
        {
            int N = macase.PositionX - 1;
            int y = macase.PositionY;

            if (macase.PositionX <= 0)
            {
                N = taille - 1;
            }



            return(TableauDeCellules[N, y]);
        }
예제 #6
0
        public cellule VoisinSudOuest(cellule macase)
        {
            int SOy = macase.PositionY - 1;
            int SOx = macase.PositionX + 1;

            if (macase.PositionY <= 0)
            {
                SOy = Taille - 1;
            }
            if (macase.PositionX >= Taille - 1)
            {
                SOx = 0;
            }
            return(TableauDeCellules[SOx, SOy]);
        }
예제 #7
0
        public cellule VoisinSudEst(cellule macase)
        {
            int SEy = macase.PositionY + 1;
            int SEx = macase.PositionX + 1;

            if (macase.PositionY >= Taille - 1)
            {
                SEy = 0;
            }
            if (macase.PositionX >= Taille - 1)
            {
                SEx = 0;
            }
            return(TableauDeCellules[SEx, SEy]);
        }
예제 #8
0
        public cellule VoisinNordOuest(cellule macase)
        {
            int NOy = macase.PositionY - 1;
            int NOx = macase.PositionX - 1;

            if (macase.PositionY <= 0)
            {
                NOy = Taille - 1;
            }
            if (macase.PositionX <= 0)
            {
                NOx = Taille - 1;
            }
            return(TableauDeCellules[NOx, NOy]);
        }
예제 #9
0
        public cellule VoisinNordEst(cellule macase)
        {
            int nordesty = macase.PositionY + 1;
            int nordestx = macase.PositionX - 1;

            if (macase.PositionY >= Taille - 1)
            {
                nordesty = Taille - 1;
            }
            if (macase.PositionX <= 0)
            {
                nordestx = 0;
            }
            return(TableauDeCellules[nordestx, nordesty]);
        }
예제 #10
0
        public cellule Jeuniveau1(cellule macase, int cellulesvoisines)
        {
            if (cellulesvoisines > 3 && macase.Vivant)
            {
                macase.Vivant = false;
            }
            if (cellulesvoisines <= 1 && macase.Vivant)
            {
                macase.Vivant = false;
            }
            if (cellulesvoisines == 3 && !macase.Vivant)
            {
                macase.Vivant = true;
            }

            return(macase);
        }
예제 #11
0
 public void Nbvoisin(cellule mycell)
 {
     mycell.Nbvoisin = 0;
     if (VoisinEst(mycell).Vivant)
     {
         mycell.Nbvoisin = mycell.Nbvoisin + 1;
     }
     if (VoisinNord(mycell).Vivant)
     {
         mycell.Nbvoisin = mycell.Nbvoisin + 1;
     }
     if (VoisinSud(mycell).Vivant)
     {
         mycell.Nbvoisin = mycell.Nbvoisin + 1;
     }
     if (VoisinOuest(mycell).Vivant)
     {
         mycell.Nbvoisin = mycell.Nbvoisin + 1;
     }
     if (VoisinNordEst(mycell).Vivant)
     {
         mycell.Nbvoisin = mycell.Nbvoisin + 1;
     }
     if (VoisinNordOuest(mycell).Vivant)
     {
         mycell.Nbvoisin = mycell.Nbvoisin + 1;
     }
     if (VoisinSudEst(mycell).Vivant)
     {
         mycell.Nbvoisin = mycell.Nbvoisin + 1;
     }
     if (VoisinSudOuest(mycell).Vivant)
     {
         mycell.Nbvoisin = mycell.Nbvoisin + 1;
     }
     //Console.WriteLine(mycell.Nbvoisin);
 }
예제 #12
0
        public Grille(int taille)
        {
            Age_Mort      = 10;
            Energie_Repro = 8;


            Taille = taille;
            cellule[,] tableauDeCellules = new cellule[taille, taille];
            for (int i = 0; i < taille; i++)
            {
                for (int j = 0; j < taille; j++)
                {
                    tableauDeCellules[i, j] = new cellule();

                    if (i == 1 && j == 3 || i == 2 && j == 1 || i == 2 && j == 3 || i == 3 && j == 2 || i == 3 && j == 3)
                    {
                        tableauDeCellules[i, j].Vivant = true;
                    }
                    tableauDeCellules[i, j].PositionX = i;
                    tableauDeCellules[i, j].PositionY = j;
                }
            }
            this.TableauDeCellules = tableauDeCellules;
        }
예제 #13
0
 public void Cloner(cellule mycell)
 {
     PositionX = mycell.PositionX;
     PositionY = mycell.PositionY;
     Vivant    = mycell.Vivant;
 }
예제 #14
0
        public cellule Jeuniveau2(cellule macase, int cellulesvoisines)
        {
            macase.Energy += 4;
            macase.Age    += 1;

            if (cellulesvoisines > 3 && macase.Vivant)
            {
                macase.Vivant = false;
            }
            if (cellulesvoisines <= 1 && macase.Vivant)
            {
                macase.Vivant = false;
            }
            if (cellulesvoisines == 3 && !macase.Vivant)
            {
                macase.Vivant = true;
            }
            if (macase.Energy <= Energie_Repro && !macase.Vivant && macase.Age < Age_Mort)
            {
                if (!VoisinEst(macase).Vivant)
                {
                    VoisinEst(macase).Vivant = true;
                    VoisinEst(macase).Energy = 10;          // une case qui est reproduit ne pert pas d'energie, a modifier
                    VoisinEst(macase).Multi  = -1;
                }
                if (!VoisinOuest(macase).Vivant)
                {
                    VoisinOuest(macase).Vivant = true;
                    VoisinOuest(macase).Energy = 10;
                    VoisinOuest(macase).Multi  = -1;
                }
                if (!VoisinNordEst(macase).Vivant)
                {
                    VoisinNordEst(macase).Vivant = true;
                    VoisinNordEst(macase).Energy = 10;
                    VoisinNordEst(macase).Multi  = -1;
                }
                if (!VoisinNordOuest(macase).Vivant)
                {
                    VoisinNordOuest(macase).Vivant = true;
                    VoisinNordOuest(macase).Energy = 10;
                    VoisinNordOuest(macase).Multi  = -1;
                }
                if (!VoisinSudEst(macase).Vivant)
                {
                    VoisinSudEst(macase).Vivant = true;
                    VoisinSudEst(macase).Energy = 10;
                    VoisinSudEst(macase).Multi  = -1;
                }
                if (!VoisinSudOuest(macase).Vivant)
                {
                    VoisinSudOuest(macase).Vivant = true;
                    VoisinSudOuest(macase).Energy = 10;
                    VoisinSudOuest(macase).Multi  = -1;
                }
                if (!VoisinNord(macase).Vivant)
                {
                    VoisinNord(macase).Vivant = true;
                    VoisinNord(macase).Energy = 10;
                    VoisinNord(macase).Multi  = -1;
                }
                if (!VoisinSud(macase).Vivant)
                {
                    VoisinSud(macase).Vivant = true;
                    VoisinSud(macase).Energy = 10;
                    VoisinSud(macase).Multi  = -1;
                }
            }
            if (macase.Vivant && macase.Age == this.Age_Mort)
            {
                macase.Vivant = false;
            }
            return(macase);
        }