diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2017-02-06 11:41:36 -0500 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2017-02-06 11:41:36 -0500 |
| commit | 89cdf3efb49335e7c07a68a5a64657eeec2288a6 (patch) | |
| tree | cdc0fd8165e65b1637fa54cac11c932acefc8a89 /labs/lab07_tohSolver/THSolverFrame.java | |
| download | coe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.tar.gz coe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.tar.bz2 coe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.zip | |
Diffstat (limited to 'labs/lab07_tohSolver/THSolverFrame.java')
| -rw-r--r-- | labs/lab07_tohSolver/THSolverFrame.java | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/labs/lab07_tohSolver/THSolverFrame.java b/labs/lab07_tohSolver/THSolverFrame.java new file mode 100644 index 0000000..53a15bb --- /dev/null +++ b/labs/lab07_tohSolver/THSolverFrame.java @@ -0,0 +1,70 @@ +/*Alexander Pickering + *Data Structures Mon. Wed. @ 09:30 + *Lab 7 + */ +import javax.swing.JFrame; + +public class THSolverFrame +{ + public static void main(String[] args) throws InterruptedException + { + int numberOfDiscs = 10; + TowerOfHanoi towers = new TowerOfHanoi(numberOfDiscs); + THComponent thc = new THComponent(towers); + + + JFrame frame = new JFrame(); + frame.setTitle("Tower of Hanoi"); + frame.setSize(500,500); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + frame.add(thc); + + frame.setVisible(true); + + //Thread.sleep(5000); + + solveTower(towers, thc,numberOfDiscs); + + System.out.println("DONE!!!"); + } + + public static void solveTower(TowerOfHanoi towers, THComponent thc, int numPlates) throws InterruptedException + { + movePlateAndUp(towers,0,numPlates,2,thc); + } + private static void movePlateAndUp(TowerOfHanoi towers, int towerfrom, int depth, int towerto, THComponent thc) throws InterruptedException + { + if(depth == 1) + { + //We are the top block + towers.moveTopDisc(towerfrom,towerto); + animate(thc); + } + else + { + //Find a tower to put everything on top of + int unusedTower = 0; + if(towerfrom == 0 || towerto == 0) + { + unusedTower = 1; + if(towerfrom == 1 || towerto == 1) + { + unusedTower = 2; + } + } + //Move everything on top of what we want to move somewhere else + movePlateAndUp(towers,towerfrom,depth-1,unusedTower,thc); + //Move us + towers.moveTopDisc(towerfrom,towerto); + animate(thc); + //Move everything that was on top of use back on top of us + movePlateAndUp(towers,unusedTower,depth-1,towerto,thc); + } + } + private static void animate(THComponent thc) throws InterruptedException + { + thc.repaint(); + Thread.sleep(50); + } +} |
