/** Shows the sudoku solver inside the root layout. */ public void initSudokuLayout() { try { // Load person overview. FXMLLoader loader = new FXMLLoader(); loader.setLocation(MainApp.class.getResource("view/sudoku.fxml")); AnchorPane sudoku = (AnchorPane) loader.load(); // Set sudoku solver into the center of root layout. rootLayout.setCenter(sudoku); // Set controller to Main Stage sudokuController controller = loader.getController(); controller.setMainApp(this); // Verweis auf Controller um beim set Sudoku die GUI neu zu laden scontroller = controller; } catch (IOException e) { e.printStackTrace(); } }
public boolean setSudoku(Sudoku s) { sudoku = s; scontroller.sudokuChanged(); return true; }
public boolean setSudoku(int[][] array) { int horizontal = array.length; // Prüft prinzipielle Groesse if (horizontal != 9) return false; for (int i = 0; i < 9; i++) { if (array[i].length != 9) return false; } for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { if (array[i][j] > 9 || array[i][j] < 0) return false; } } boolean[] zahlVerfügbar = new boolean[9]; // Prüft ob Zeilen (bis jetzt) nach Sudokuregeln gefüllt wurden for (int i = 0; i < 9; i++) { // macht alle Zahlen wieder verfügbar setBoolarrayAll(zahlVerfügbar, true); for (int j = 0; j < 9; j++) { int zahl = array[i][j]; if (zahl != 0) { if (!zahlVerfügbar[zahl - 1]) return false; else zahlVerfügbar[zahl - 1] = false; } } } // Prüft ob Spalten (bis jetzt) nach Sudokuregeln gefüllt wurden for (int i = 0; i < 9; i++) { // macht alle Zahlen wieder verfügbar setBoolarrayAll(zahlVerfügbar, true); for (int j = 0; j < 9; j++) { int zahl = array[j][i]; if (zahl != 0) { if (!zahlVerfügbar[zahl - 1]) return false; else zahlVerfügbar[zahl - 1] = false; } } } // Prüft ob die 9er- Kästchen (bis jetzt) nach Sudokuregeln gefüllt // wurden // Jede Anfangswerte fürs Kästchen for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { setBoolarrayAll(zahlVerfügbar, true); for (int a = i * 3; a < (i + 1) * 3; a++) { for (int b = j * 3; b < (j + 1) * 3; b++) { int zahl = array[a][b]; if (zahl != 0) { if (!zahlVerfügbar[zahl - 1]) return false; else zahlVerfügbar[zahl - 1] = false; } } } } } sudoku.setSudoku(array); scontroller.sudokuChanged(); return true; }