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); }
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); }