Пример #1
0
 public GameOfLineEngine(IDefineANeigbourCounter counter, IDefineARulesEngine rulesEngine, IDefineAnOutputter output, IDefineLoopHandler loopHandler)
 {
     this.counter     = ReturnParameter.OrThrowIfNull(counter, nameof(counter));
     this.rulesEngine = ReturnParameter.OrThrowIfNull(rulesEngine, nameof(rulesEngine));
     this.output      = ReturnParameter.OrThrowIfNull(output, nameof(output));
     this.loopHandler = ReturnParameter.OrThrowIfNull(loopHandler, nameof(loopHandler));
 }
Пример #2
0
        private static bool[,] Process(IDefineANeigbourCounter counter, IDefineARulesEngine rulesEngine, bool[,] grid)
        {
            var newGrid = new bool[grid.GetLength(0), grid.GetLength(1)];

            for (var x = 0; x < grid.GetLength(0); x++)
            {
                for (var y = 0; y < grid.GetLength(1); y++)
                {
                    var liveNeighbours = counter.Count(grid, x, y);
                    newGrid[x, y] = rulesEngine.DetermineNewState(grid[x, y], liveNeighbours);
                }
            }

            return(newGrid);
        }