Esempio n. 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;
 }
Esempio n. 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;
 }
Esempio n. 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;
 }
Esempio n. 4
0
 private bool IsNeighbour(Position position, Position neighbourPosition)
 {
     return this.IsCellAliveAtPosition(neighbourPosition) && !position.Equals(neighbourPosition);
 }
Esempio n. 5
0
 private bool CellShouldRevive(Position position)
 {
     return !this.IsCellAliveAtPosition(position) && this.GetNumberOfNeighboursOf(position) == 3;
 }
Esempio n. 6
0
 public bool IsCellAliveAtPosition(Position position)
 {
     return CellsList.Contains(position);
 }
Esempio n. 7
0
 public void AddCellAtPosition(Position position)
 {
     CellsList.Add(position);
 }
Esempio n. 8
0
 private bool ShouldDie(Position position)
 {
     var numberOfNeighbours = this.GetNumberOfNeighboursOf(position);
     return numberOfNeighbours < 2 || numberOfNeighbours >= 4;
 }
Esempio n. 9
0
 private bool ShouldCheckRevive(Position position)
 {
     return GetNumberOfNeighboursOf(position) == 2;
 }