Пример #1
0
 private int GetNumberOfNeighboursOf(Position position)
 {
     var neighbours = 0;
     for (var i = position.X-1; i <= position.X+1 ; i++)
     {
         for (var j = position.Y-1; j <= position.Y+1 ; j++)
         {
             if (IsNeighbour(position, new Position(i,j))) neighbours++;
         }
     }
     return neighbours;
 }
Пример #2
0
 public List<Position> GetNeighbours(Position position)
 {
     var neighboursList = new List<Position>();
     for (var i = position.X - 1; i <= position.X + 1; i++)
     {
         for (var j = position.Y - 1; j <= position.Y + 1; j++)
         {
             if (this.IsCellAliveAtPosition(new Position(i, j))) neighboursList.Add(new Position(i,j));
         }
     }
     neighboursList.Remove(position);
     return neighboursList;
 }
Пример #3
0
 private IEnumerable<Position> ReviveNeighboursOf(Position position)
 {
     var neighbours = new List<Position>();
     for (var i = position.X - 1; i <= position.X + 1; i++)
     {
         for (var j = position.Y - 1; j <= position.Y + 1; j++)
         {
             if (CellShouldRevive(new Position(i,j))) neighbours.Add(new Position(i, j));
         }
     }
     return neighbours;
 }
Пример #4
0
 private bool IsNeighbour(Position position, Position neighbourPosition)
 {
     return this.IsCellAliveAtPosition(neighbourPosition) && !position.Equals(neighbourPosition);
 }
Пример #5
0
 private bool CellShouldRevive(Position position)
 {
     return !this.IsCellAliveAtPosition(position) && this.GetNumberOfNeighboursOf(position) == 3;
 }
Пример #6
0
 public bool IsCellAliveAtPosition(Position position)
 {
     return CellsList.Contains(position);
 }
Пример #7
0
 public void AddCellAtPosition(Position position)
 {
     CellsList.Add(position);
 }
Пример #8
0
 private bool ShouldDie(Position position)
 {
     var numberOfNeighbours = this.GetNumberOfNeighboursOf(position);
     return numberOfNeighbours < 2 || numberOfNeighbours >= 4;
 }
Пример #9
0
 private bool ShouldCheckRevive(Position position)
 {
     return GetNumberOfNeighboursOf(position) == 2;
 }