internal List <int?> Scan(int row, int column) //Returns a List object of all the possibilities for a given square { SudokuNumber sd = entries[CurrentEntry(row, column)]; List <int?> rowPossibilities = new List <int?> { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; List <int?> columnPossibilities = new List <int?> { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; List <int?> gridPossibilities = new List <int?> { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int?value = entries[CurrentEntry(row, column)].value; entries[CurrentEntry(row, column)].value = null; for (int i = 1; i < 10; i++) { if (entries[CurrentEntry(i, column)].correct) { rowPossibilities.Remove(entries[CurrentEntry(i, column)].value); } if (entries[CurrentEntry(row, i)].correct) { columnPossibilities.Remove(entries[CurrentEntry(row, i)].value); } } int grid = GetGrid(row, column); int[] gridCorner = GetGridCorner(grid); for (int i = gridCorner[0]; i < (gridCorner[0] + 3); i++) { for (int j = gridCorner[1]; j < (gridCorner[1] + 3); j++) { if (entries[CurrentEntry(i, j)].correct) { gridPossibilities.Remove(entries[CurrentEntry(i, j)].value); } } } entries[CurrentEntry(row, column)].value = value; sd.possibilities = rowPossibilities.Intersect(columnPossibilities.Intersect(gridPossibilities)).ToList(); return(sd.possibilities); }
void MyButtonClick(object sender, EventArgs e) //Event handler used for any number button click { if (buttons.Contains((Button)sender)) { char[] buttonName = ((Button)sender).Name.ToCharArray(); int row = buttonName[1] - 48; int column = buttonName[3] - 48; //This line is to make conditional statement more clear SudokuNumber buttonNumber = game.entries[Sudoku.CurrentEntry(row, column)]; if (!buttonNumber.correct & lastButton == ((Button)sender)) { int?newValue = game.Increment(row, column); ((Button)sender).Text = Convert.ToString(newValue); } lastButton = ((Button)sender); } }