protected void execute() {
   SudokuModel model = (SudokuModel) manager.getModel();
   SudokuRunField runField = new SudokuRunField(model);
   SudokuGenerator g = new SudokuGenerator();
   g.setField(runField);
   int maxTreeCount = SudokuPreferences.instance.getGenerateTreeCountLimit();
   boolean useTemplate = model.getProblemInfo().isGenerateByTemplate();
   int[] template = model.getProblemInfo().getNumbers();
   if (useTemplate) {
     int q = checkUseTemplate(template);
     if (q == JOptionPane.NO_OPTION) useTemplate = false;
     else if (q == JOptionPane.CANCEL_OPTION) return;
   }
   // TODO we can set options (int stepsLimit, int narrowest) when maxTreeCount = 1.
   int[] numbers =
       (!useTemplate)
           ? g.generate(maxTreeCount, -1, -1)
           : g.processForm(model.getProblemInfo().getNumbers(), maxTreeCount)
       // g.generate(model.getProblemInfo().getNumbers(), maxTreeCount);
       ;
   SudokuProblemInfo p = model.getProblemInfo();
   for (int i = 0; i < numbers.length; i++) p.setNumberAt(i, numbers[i] + 1);
   model.setSolutionInfo("Tree count=" + g.getTreeCount());
 }
Пример #2
0
 public Game createAndStart() {
   int[][] solution = SudokuGenerator.createSolution();
   int[][] initialBoardState = SudokuGenerator.createGame(NUMBER_OF_BLANK_FIELDS, solution);
   game = new Game(solution, initialBoardState);
   return game;
 }