package aima.gui.fx.applications.search.games;
import aima.gui.fx.framework.IntegrableApplication;
import aima.gui.fx.views.SudokuViewCtrl;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
/**
* Simple Sudoku puzzle application. It provides a playground for programming
* experiments with CSP algorithms. But note that no CSP implementation is included here.
*
* @author Ruediger Lunde
*/
public class SimpleSudokuApp extends IntegrableApplication {
/** Example taken from https://en.wikipedia.org/wiki/Sudoku. */
public final static String puzzle1 = "" + //
"53..7...." + //
"6..195..." + //
".98....6." + //
"8...6...3" + //
"4..8.3..1" + //
"7...2...6" + //
".6....28." + //
"...419..5" + //
"....8..79";
/** Example taken from https://de.wikipedia.org/wiki/Sudoku. */
public final static String puzzle2 = "" + //
".3......." + //
"...195..." + //
"..8....6." + //
"8...6...." + //
"4..8....1" + //
"....2...." + //
".6....28." + //
"...419..5" + //
".......7.";
/** Example taken from http://sudoku.tagesspiegel.de/sudoku-sehr-schwer. */
public final static String puzzle3 = "" + //
".....9.7." + //
"....82.5." + //
"327....4." + //
".16.4...." + //
".5....3.." + //
"....9.7.." + //
"...6....5" + //
"8.2......" + //
"..42....8";
public static void main(String[] args) {
launch(args);
}
protected SudokuViewCtrl stateViewCtrl;
@Override
public String getTitle() {
return "Simple Sudoku App";
}
@Override
public Pane createRootPane() {
StackPane root = new StackPane();
stateViewCtrl = new SudokuViewCtrl(root);
return root;
}
@Override
public void initialize() {
initView(puzzle1);
}
@Override
public void cleanup() {
}
protected void initView(String puzzle) {
stateViewCtrl.clear(true);
for (int i = 0; i < puzzle.length(); i++) {
char ch = puzzle.charAt(i);
if (ch >= '1' && ch <= '9')
stateViewCtrl.fixDigit(i % 9 + 1, i / 9 + 1, ch - '0');
}
}
}