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."); } }
@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(); }
@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; }
@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(); }