PuzzleState start1 =
new PuzzleState('2', '8', '3', '1', '6', '4', '7', ' ', '5'); // 5 moves
PuzzleState start2 =
new PuzzleState('3', '6', '4', '1', ' ', '2', '8', '7', '5'); // 10 moves
PuzzleState start3 =
new PuzzleState('3', ' ', '4', '1', '6', '5', '8', '2', '7'); // 13 moves
PuzzleState start4 =
new PuzzleState('2', '1', '3', '8', ' ', '4', '6', '7', '5'); // 18 moves
PuzzleState start5 =
new PuzzleState('4', '2', ' ', '8', '3', '6', '7', '5', '1'); // 20 moves
PuzzleState start6 =
new PuzzleState('1', '6', '3', '4', ' ', '8', '7', '2', '5'); // 24 moves
PuzzleState start7 =
new PuzzleState('5', '2', '7', '8', ' ', '4', '3', '6', '1'); // 30 moves
PuzzleState start8 =
new PuzzleState('5', '6', '7', '4', ' ', '8', '3', '2', '1'); // 30 moves
PuzzleState finalState =
new PuzzleState('1', '2', '3', '8', ' ', '4', '7', '6', '5');
List<State> initialStates = new ArrayList<State>();
List<State> finalStates = new ArrayList<State>();
List<Integer> moveCounts = new ArrayList<Integer>();
initialStates.add(start1); finalStates.add(finalState); moveCounts.add(5);
initialStates.add(start2); finalStates.add(finalState); moveCounts.add(10);
initialStates.add(start3); finalStates.add(finalState); moveCounts.add(13);
initialStates.add(start4); finalStates.add(finalState); moveCounts.add(18);
initialStates.add(start5); finalStates.add(finalState); moveCounts.add(20);
initialStates.add(start6); finalStates.add(finalState); moveCounts.add(24);
initialStates.add(start7); finalStates.add(finalState); moveCounts.add(30);
initialStates.add(start8); finalStates.add(finalState); moveCounts.add(30);
setInitialStates(initialStates);
setFinalStates(finalStates);
setMoveCounts(moveCounts);
The following framework code would pop up the dialog:
new ProblemChooser(problem.getInitialStates(),
problem.getFinalStates(),
problem.getMoveCounts());
List<Canvas> initialCanvases = new ArrayList<Canvas>();
List<Canvas> finalCanvases = new ArrayList<Canvas>();
initialCanvases.add(new PuzzleCanvasIconified(start1));
initialCanvases.add(new PuzzleCanvasIconified(start2));
initialCanvases.add(new PuzzleCanvasIconified(start3));
initialCanvases.add(new PuzzleCanvasIconified(start4));
initialCanvases.add(new PuzzleCanvasIconified(start5));
initialCanvases.add(new PuzzleCanvasIconified(start6));
initialCanvases.add(new PuzzleCanvasIconified(start7));
initialCanvases.add(new PuzzleCanvasIconified(start8));
finalCanvases.add(new PuzzleCanvasIconified(finalState));
finalCanvases.add(new PuzzleCanvasIconified(finalState));
finalCanvases.add(new PuzzleCanvasIconified(finalState));
finalCanvases.add(new PuzzleCanvasIconified(finalState));
finalCanvases.add(new PuzzleCanvasIconified(finalState));
finalCanvases.add(new PuzzleCanvasIconified(finalState));
finalCanvases.add(new PuzzleCanvasIconified(finalState));
finalCanvases.add(new PuzzleCanvasIconified(finalState));
setInitialCanvases(initialCanvases);
setFinalCanvases(finalCanvases);
The following framework code would pop up the dialog:
new ProblemChooser(problem.getInitialStates(),
problem.getFinalStates(),
problem.getMoveCounts(),
problem.getInitialCanvases(),
problem.getFinalCanvases());
public SimpleVertex() {
this("");
}
You should be able to run the BlockConsole.java file and get
behavior like that in this applet: