public GenerationController(Vector gridSize) { this.GridSize = gridSize; _grid = new Grid(this.GridSize); _timmer = new Stopwatch(); }
public static List<Line> GenerateGridLines(Vector gridVector, Vector cellVector) { var lines = new List<Line>(); lines.AddRange(GridLinesGenerator.GenerateVerticalLines(gridVector, cellVector)); lines.AddRange(GridLinesGenerator.GenerateHorizontalLines(gridVector, cellVector)); return lines; }
private Vector[,] GetCellNeighbours(int cellPositionX, int cellPositionY) { var neighbours = new Vector[3, 3] { {new Vector(cellPositionX - 1, cellPositionY - 1), new Vector(cellPositionX - 1, cellPositionY), new Vector(cellPositionX - 1, cellPositionY + 1)}, {new Vector(cellPositionX, cellPositionY - 1), new Vector(int.MinValue, int.MinValue), new Vector(cellPositionX, cellPositionY + 1)}, {new Vector(cellPositionX + 1, cellPositionY - 1), new Vector(cellPositionX + 1, cellPositionY), new Vector(cellPositionX + 1, cellPositionY + 1)} }; return neighbours; }
public Grid(Vector gridSize) { Cells = new Cell[gridSize.X, gridSize.Y]; this.InitializeCells(); _cellsMarkedToBirth = new List<Cell>(); _cellsMarkedToDeath = new List<Cell>(); _cellsWidth = this.Cells.GetLength(0); _cellsHeight = this.Cells.GetLength(1); }
public void SetInitialState_LiveCells_ConfirmGrid(int[] aliveCells) { var gridSize = new Vector(3, 3); var cells = new List<Vector>(); var generationController = new GenerationController(gridSize); for (int i = 0; i < aliveCells.Length; i = i + 2) cells.Add(new Vector(aliveCells[i], aliveCells[i + 1])); generationController.SetInitialState(cells); foreach (var cell in cells) Assert.IsTrue(generationController.GetAliveCells().Contains(cell)); }
public Form1() { InitializeComponent(); _isRunning = true; var gridSize = new Vector(3, 3); _generationController = new GenerationController(gridSize); _generationController.OnGenerationComplete += _generationController_OnGenerationComplete; _cellSize = new Vector(x: this.pctCanvas.Size.Width / _generationController.GridSize.X, y: this.pctCanvas.Size.Height / _generationController.GridSize.Y); this.GridLines = new List<Line>(); this.GridLines.AddRange(GridLinesGenerator.GenerateGridLines(_generationController.GridSize, _cellSize)); }
private static IEnumerable<Line> GenerateVerticalLines(Vector gridVector, Vector cellVector) { int verticalLines = gridVector.X / cellVector.X; var start = new Vector(0, 0); var end = new Vector(0, gridVector.Y); var lines = new List<Line>(); lines.Add(new Line(start, end)); for (int i = 0; i < verticalLines; i++) { start = new Vector(start.X + cellVector.X, start.Y); end = new Vector(end.X + cellVector.X, end.Y); lines.Add(new Line(start, end)); } return lines; }
private static IEnumerable<Line> GenerateHorizontalLines(Vector gridVector, Vector cellVector) { int horizontalLines = gridVector.Y / cellVector.Y; var lines = new List<Line>(); var start = new Vector(0, 0); var end = new Vector(gridVector.X, 0); lines.Add(new Line(start, end)); for (int i = 0; i < horizontalLines; i++) { start = new Vector(start.X, start.Y + cellVector.Y); end = new Vector(end.X, end.Y + cellVector.Y); lines.Add(new Line(start, end)); } return lines; }
private bool IsValidCellIndex(Vector neighbour) { if (neighbour.X == int.MinValue || neighbour.Y == int.MinValue) return false; if ((neighbour.X >= 0 && neighbour.X < _cellsWidth) && (neighbour.Y >= 0 && neighbour.Y < _cellsHeight)) return true; return false; }
private void FillAliveCells(Graphics graphics, Vector cell) { throw new NotImplementedException(); }