Ejemplo n.º 1
0
        private void fillBoard(int row, int column, ref List <int>[,] triedNumbers)
        {
            List <int> possibleValuesInCell;

            do
            {
                if (Backtracking > 40000)//max times to run fillboard, jumps out of method
                {
                    return;
                }

                _board.ClearNumber(row, column);
                possibleValuesInCell = new List <int>().GenerateAllPossibleValues(_board.GetBoardSize()); // list numbers depending on boardsize ((1-4),(1-6),(1-9),(1-12),(1-16))
                RemoveInvalidValuesFromCell(ref possibleValuesInCell, row, column);                       //  remove invalid numbers for the cell
                foreach (int triedNumber in triedNumbers[row, column])                                    //remove tried numbers in cell from possibleValuesInCell
                {
                    possibleValuesInCell.Remove(triedNumber);
                }


                if (possibleValuesInCell.Count == 0)
                {
                    triedNumbers[row, column].Clear();
                    int prevRow;
                    int prevColumn;
                    if (column == 0)
                    {
                        prevRow    = row - 1;
                        prevColumn = _board.GetBoardSize() - 1;
                    }
                    else
                    {
                        prevRow    = row;
                        prevColumn = column - 1;
                    }
                    fillBoard(prevRow, prevColumn, ref triedNumbers);
                }

                else
                {
                    int randomIndex  = RandomNumberGen(0, possibleValuesInCell.Count);    // Choose random index
                    int randomNumber = possibleValuesInCell.ElementAt <int>(randomIndex); // Get number in index

                    _board.SetNumber(row, column, randomNumber, false);
                    triedNumbers[row, column].Add(randomNumber);
                }

                Backtracking = Backtracking + 1;
            } while (possibleValuesInCell.Count == 0);
        }
Ejemplo n.º 2
0
 public void ClearNumber(int row, int column)
 {
     if (_board != null)
     {
         _board.ClearNumber(row, column);
     }
     else
     {
         throw new GameNotStartedException();
     }
 }