private Model.AbstractCell[,] CreateCellGrid() { var cellGrid = new Model.AbstractCell[NumberOfRows, NumberOfColumns]; InitGrid(cellGrid); CalculateHints(cellGrid); return(cellGrid); }
private static string Draw(Model.AbstractCell cell) { if (cell is Model.HintCell) { return(Draw((Model.HintCell)cell)); } else if (cell is Model.MineCell) { return(Draw((Model.MineCell)cell)); } else { throw new Exception("Unhandled Draw method for type " + cell.GetType()); } }
private int CountAdjacentCells(Model.AbstractCell cell, Model.AbstractCell[,] cellGrid) { int count = 0; int prevRow = Math.Max(0, cell.Row - 1); int nextRow = Math.Min(NumberOfRows - 1, cell.Row + 1); int prevColumn = Math.Max(0, cell.Column - 1); int nextColumn = Math.Min(NumberOfColumns - 1, cell.Column + 1); for (var i = prevRow; i <= nextRow; i++) { for (var j = prevColumn; j <= nextColumn; j++) { var isSameCell = i == cell.Row && j == cell.Column; if (!isSameCell && cellGrid[i, j] is Model.MineCell) { count++; } } } return(count); }