示例#1
0
        public Cellule JeuNiveau1(Cellule maCase, int cellulesVoisines)
        {
            Cellule newCell = new Cellule(true, 0, 0); // cellule définie par défaut sur laquelle on va effectuer les opérations.

            newCell.Clone(maCase);
            if (VoisinNord(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }
            if (VoisinNordEst(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }
            if (VoisinNordOuest(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }
            if (VoisinSud(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }
            if (VoisinSudEst(maCase).Alive == true)
            {
                cellulesVoisines += 1;                                          // test de tous les voisins et incrémentation du compteur pour chaque voisin vivant
            }
            if (VoisinSudOuest(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }
            if (VoisinEst(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }
            if (VoisinOuest(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }

            if (maCase.Alive == true && (cellulesVoisines == 2 | cellulesVoisines == 3))
            {
                newCell.Alive = true;                                                                         //survie
            }
            if (cellulesVoisines > 3 | cellulesVoisines < 2)
            {
                newCell.Alive = false;                                              // Mort par surpopulation ou solitude
            }
            if (maCase.Alive == false && cellulesVoisines == 3)
            {
                newCell.Alive = true;                                                //naissance
            }
            return(newCell);
        }
示例#2
0
        public Cellule JeuNiveau2(Cellule maCase, int cellulesVoisines)
        {
            Cellule newCell = new Cellule(true, 0, 0, 0, 0);

            newCell.Clone(maCase);
            if (VoisinNord(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }
            if (VoisinNordEst(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }
            if (VoisinNordOuest(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }
            if (VoisinSud(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }
            if (VoisinSudEst(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }
            if (VoisinSudOuest(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }
            if (VoisinEst(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }
            if (VoisinOuest(maCase).Alive == true)
            {
                cellulesVoisines += 1;
            }

            if (maCase.Alive == true && (cellulesVoisines == 2 | cellulesVoisines == 3))
            {
                newCell.Alive = true;
            }
            if (cellulesVoisines > 3 | cellulesVoisines < 2)
            {
                newCell.Alive = false;
            }
            if (maCase.Alive == false && cellulesVoisines == 3)
            {
                newCell.Alive   = true;
                newCell.Age     = 0;
                newCell.Energie = ENERGIE_INITIALE;
            }
            if (newCell.Alive == true) // vieillissement et accumulation d'énergie des cellules vivantes
            {
                newCell.Age++;
                newCell.Energie += ENERGIE;
            }
            else // valeurs par défaut des cellules mortes
            {
                newCell.Age     = 0;
                newCell.Energie = 0;
            }
            if (maCase.Age == AGE_MORT)
            {
                newCell.Alive = false;                                                                                                                                                                                                                                                                                                 // mort de vieillesse
            }
            if (maCase.Age < AGE_MORT && maCase.Energie >= ENERGIE_REPRODUCTION)                                                                                                                                                                                                                                                       // conditions de reproduction
            {
                if (VoisinEst(maCase).Alive == false || VoisinNord(maCase).Alive == false || VoisinNordEst(maCase).Alive == false || VoisinNordOuest(maCase).Alive == false || VoisinOuest(maCase).Alive == false || VoisinSud(maCase).Alive == false || VoisinSudEst(maCase).Alive == false || VoisinSudOuest(maCase).Alive == false) // test si il y a au moins une cellule voisine qui n'est pas vivante pour que la reproduction puisse avoir lieu
                {
                    if (VoisinSudOuest(maCase).Alive == false)                                                                                                                                                                                                                                                                         // Test une par une si les cellules voisines sont mortes pour que la reproduction puisse avoir lieu
                    {
                        VoisinSudOuest(newCell).Alive   = true;                                                                                                                                                                                                                                                                        // naissance d'une cellule voisine
                        VoisinSudOuest(newCell).Age     = 0;
                        VoisinSudOuest(newCell).Energie = ENERGIE_INITIALE;
                    }
                    if (VoisinOuest(maCase).Alive == false)
                    {
                        VoisinOuest(newCell).Alive   = true;
                        VoisinOuest(newCell).Age     = 0;
                        VoisinOuest(newCell).Energie = ENERGIE_INITIALE;
                    }
                    if (VoisinSud(maCase).Alive == false)
                    {
                        VoisinSud(newCell).Alive   = true;
                        VoisinSud(newCell).Age     = 0;
                        VoisinSud(newCell).Energie = ENERGIE_INITIALE;
                    }
                    if (VoisinNordEst(maCase).Alive == false)
                    {
                        VoisinNordEst(newCell).Alive   = true;
                        VoisinNordEst(newCell).Age     = 0;
                        VoisinNordEst(newCell).Energie = ENERGIE_INITIALE;
                    }
                    if (VoisinNord(maCase).Alive == false)
                    {
                        VoisinNord(newCell).Alive   = true;
                        VoisinNord(newCell).Age     = 0;
                        VoisinNord(newCell).Energie = ENERGIE_INITIALE;
                    }
                    if (VoisinEst(maCase).Alive == false)
                    {
                        VoisinEst(newCell).Alive   = true;
                        VoisinEst(newCell).Age     = 0;
                        VoisinEst(newCell).Energie = ENERGIE_INITIALE;
                    }
                    if (VoisinNordOuest(maCase).Alive == false)
                    {
                        VoisinNordOuest(newCell).Alive   = true;
                        VoisinNordOuest(newCell).Age     = 0;
                        VoisinNordOuest(newCell).Energie = ENERGIE_INITIALE;
                    }
                    if (VoisinSudEst(maCase).Alive == false)
                    {
                        VoisinSudEst(newCell).Alive   = true;
                        VoisinSudEst(newCell).Age     = 0;
                        VoisinSudEst(newCell).Energie = ENERGIE_INITIALE;
                    }
                    newCell.Energie -= ENERGIE_REPRODUCTION; // perte d'énergie après reproduction
                }
            }
            return(newCell);
        }