Пример #1
0
 /// <summary>
 /// Set the status of a cell (Alive or Dead) according to the following rules:
 /// 1.- Any live cell with fewer than two live neighbours dies, as if caused by under-population.
 /// 2.- Any live cell with two or three live neighbours lives on to the next generation.
 /// 3.- Any live cell with more than three live neighbours dies, as if by over-population.
 /// 4.- Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.
 /// </summary>
 /// <param name="neighbors"></param>
 public void SetAliveStatus(Cell[] neighbors)
 {
     int neighborsAlive = neighbors.Where(x => x.IsAlive).Count();
     if (IsAlive && (neighborsAlive == 3 || neighborsAlive == 2))//Should live
         IsAlive = true;
     if (IsAlive && neighborsAlive > 3 || neighborsAlive < 2)
         IsAlive = false;
     if (!IsAlive && neighborsAlive == 3)//Born
         IsAlive = true;
 }