summaryrefslogtreecommitdiff
path: root/labs/lab07_tohSolver/THSolverFrame.java
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2017-02-06 11:41:36 -0500
committerAlexander Pickering <alexandermpickering@gmail.com>2017-02-06 11:41:36 -0500
commit89cdf3efb49335e7c07a68a5a64657eeec2288a6 (patch)
treecdc0fd8165e65b1637fa54cac11c932acefc8a89 /labs/lab07_tohSolver/THSolverFrame.java
downloadcoe0445-master.tar.gz
coe0445-master.tar.bz2
coe0445-master.zip
Inital commitHEADmaster
Diffstat (limited to 'labs/lab07_tohSolver/THSolverFrame.java')
-rw-r--r--labs/lab07_tohSolver/THSolverFrame.java70
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);
+ }
+}