Example #1
0
 private void updateMessage() {
   if (sudoku.isSolved()) {
     messageText.setText("Gratulerer! Du har en gyldig l�sning.");
   } else if (!sudoku.isLegalGrid()) {
     messageText.setText("Tildeling av verdier er ugyldig.");
   }
 }
Example #2
0
 @FXML
 private void startGame() {
   fillGrid(null);
   String level = levelTextField.getText();
   sudoku.init(level, new ArrayList<Edit>());
   imageGrid.setRowCount(ISudoku.BOARD_SIZE);
   imageGrid.setColumnCount(ISudoku.BOARD_SIZE);
   updateState(true);
   ensureKeyboardFocus();
 }
Example #3
0
  @Override
  protected boolean keyPressed(KeyCode code) {
    if (code.isDigitKey()
        && code.ordinal() > KeyCode.DIGIT0.ordinal()
        && code.ordinal() <= KeyCode.DIGIT9.ordinal()) {
      int value = code.ordinal() - KeyCode.DIGIT0.ordinal();

      if (value > 0 && sudoku.isValidAssignment(selectedX, selectedY, value)) {
        sudoku.placeDigit(selectedX, selectedY, value);
      }
    } else if (code.equals(KeyCode.BACK_SPACE) || code.equals(KeyCode.DELETE)) {
      if (sudoku.isValidAssignment(selectedX, selectedY, null)) {
        sudoku.placeDigit(selectedX, selectedY, null);
      }
    }

    updateState(true);

    return true;
  }
Example #4
0
  @Override
  public void updateState(boolean fullUpdate) {
    for (int x = 0; x < ISudoku.BOARD_SIZE; x++) {
      for (int y = 0; y < ISudoku.BOARD_SIZE; y++) {
        int block = sudoku.getBlock(x, y);
        String prefix = "";
        if (!(sudoku.isLegalBlock(block) && sudoku.isLegalColumn(x) && sudoku.isLegalRow(y))) {
          prefix = CELL_INVALID_INDICATOR;
        }
        if (x == selectedX && y == selectedY) {
          prefix = CELL_SELECTED_INDICATOR;
        }
        if (sudoku.isAssignable(x, y)) {
          prefix = CELL_ASSIGNABLE_INDICATOR + prefix;
        }

        Integer value = sudoku.getCellValue(x, y);
        String content = value != null ? Integer.toString(value) : "";

        setCell(x, y, prefix + content);
      }
    }

    updateMessage();
  }