Esempio n. 1
0
        /// <summary>
        /// Difficulty:
        /// 0 - Easy
        /// 1 - Medium
        /// 2 - Hard
        /// 3 - Expert
        /// </summary>
        /// <param name="difficulty"></param>
        public void Generate(int difficulty)
        {
            bool maxBacktacking;

            do
            {
                maxBacktacking = false;
                Backtracking   = 0;
                _board.Clear();
                List <int>[,] triedNumbers = new List <int> [_board.GetBoardSize(), _board.GetBoardSize()];
                for (int i = 0; i < _board.GetBoardSize(); i++)
                {
                    for (int j = 0; j < _board.GetBoardSize(); j++)
                    {
                        if (Backtracking > 40000)
                        {
                            maxBacktacking = true;
                            break;
                        }
                        triedNumbers[i, j] = new List <int>();
                        fillBoard(i, j, ref triedNumbers);
                    }
                    if (maxBacktacking)
                    {
                        break;
                    }
                }

                Console.WriteLine("Backtracking iterations: {0}", Backtracking);
            } while (maxBacktacking);

            switch (_board.GetBoardSize()) //cells to clear depending on boardsize
            {
            case 4:
                remove(4, 6, 8, 10, difficulty);
                break;

            case 6:
                remove(12, 18, 24, 30, difficulty);
                break;

            case 9:
                remove(13, 30, 47, 64, difficulty);
                break;

            case 12:
                remove(40, 60, 80, 100, difficulty);
                break;

            case 16:
                remove(50, 75, 100, 150, difficulty);
                break;
            }

            _board.ConvertExistingNumbersToPredefined(); //set remaining numbers as predefined
        }
Esempio n. 2
0
 // Locks the current numbers and makes them predefined
 public void LockNumbers()
 {
     if (_board != null)
     {
         if (Validator.ValidateBoard(_board))
         {
             _board.ConvertExistingNumbersToPredefined();
         }
         else
         {
             throw new InvalidBoardException();
         }
     }
     else
     {
         throw new GameNotStartedException();
     }
 }