/** 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;
  }