Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }