示例#1
0
        public void initialize(string[] lines)
        {
            for (int i = 0; i < 9; i++)
            {
                for (int j = 0; j < 9; j++)
                {
                    sudoku[i, j] = new Cell();
                }
            }

            int counter = 0;

            foreach(string line in lines)
            {
                for (int i = 0; i < line.Length - 1; i++)
                    sudoku[counter, i].value = Int32.Parse(line[i].ToString());

                counter++;
            }
        }
示例#2
0
 public void initialize(Cell[,] generated)
 {
     for (int i = 0; i < 9; i++)
         for (int j = 0; j < 9; j++)
         {
             sudoku[i, j] = new Cell();
             sudoku[i, j] = generated[i, j];
         }
 }
示例#3
0
        /*
         * Difficuly Level
         */
        public Cell[,] generateSudoku(DifficultyLevel.levels level)
        {
            int willOpen = 0;

            switch (level)
            {
                case DifficultyLevel.levels.easy:
                    willOpen = 30;
                    break;
                case DifficultyLevel.levels.normal:
                    willOpen = 25;
                    break;
                case DifficultyLevel.levels.harder:
                    willOpen = 20;
                    break;
                case DifficultyLevel.levels.veteran:
                    willOpen = 15;
                    break;
            }

            for (int i = 0; i < 9; i++)
                for (int j = 0; j < 9; j++)
                {
                    sudoku[i, j] = new Cell();
                    tmp[i, j] = new Cell();
                }

            SudokuSolver ss = new SudokuSolver();
            ss.initialize(sudoku);
            Random rand = new Random();

            while (true)
            {

                for (int i = 0; i < willOpen; )
                {
                    int row = rand.Next(0, 8);
                    int col = rand.Next(0, 8);

                    if (sudoku[row, col].value == 0)
                    {
                        int value = rand.Next(1, 9);
                        while (!isValid(row, col, value))
                            value = rand.Next(1, 9);

                        Cell cell = new Cell();
                        cell.row = row;
                        cell.column = col;
                        cell.value = value;
                        points.Add(cell);
                        sudoku[row, col].value = value;
                        i++;
                    }
                }

                if (ss.solveIt())
                    break;
                else
                {
                    clearSudoku();
                    ss.initialize(sudoku);
                }

            }

            maskIt();
            return sudoku;
        }