/* Interactive Tower of Hanoi *\ | Author: Kong-Kat Wong (wongk@cs.purdue.edu) | \* Date 1-19-1996 */ //be bear with my codes, considering it's my first Java applet! import java.awt.*; import java.applet.*; import java.util.*; public class Tower extends Applet { TowerPanel panel; TowerControl control; public void init() { resize(500,450); setLayout(new BorderLayout()); panel = new TowerPanel(); add("Center", panel); add("South", control = new TowerControl(panel)); } public void start() { panel.start(); } public void stop() { panel.stop(); } public boolean action(Event evt, Object arg) { if (arg instanceof Boolean) { if (((Checkbox)evt.target).getLabel().equals("Reset")) { panel.reset = ((Boolean)arg).booleanValue(); } else { panel.reset = ((Boolean)arg).booleanValue(); } return true; } return false; } } class Towering { int num_rings[] = new int[3]; int top_size[] = new int[3]; public Towering(int a){ num_rings[0] = a; num_rings[1] = 0; num_rings[2] = 0; top_size[0] = 40; top_size[1] = 1000; top_size[2] = 1000; } public void reset(int b){ num_rings[0] = b; num_rings[1] = 0; num_rings[2] = 0; top_size[0] = 40; top_size[1] = 1000; top_size[2] = 1000; } } class ring { int ring_size[] = new int[10]; int old_x[] = new int[10]; int which_x[] = new int[10]; int which_y[] = new int[10]; int order[] = new int[10]; int which_tower[] = new int[10]; public ring(int a){ for(int i = 0; i=(rings.which_x[k]-rings.ring_size[k]/2))&&(x<=((rings.which_x[k]-rings.ring_size[k]/2)+rings.ring_size[k]))){ if((y>=rings.which_y[k])&&(y<=(rings.which_y[k]+30))){ pick_ring = k; }}}} return true; } public synchronized boolean mouseDrag(Event evt, int x, int y) { if(pick_ring!=1000){ rings.which_x[pick_ring] = x; rings.which_y[pick_ring] = y; //repaint(1,x-40,y-40,rings.ring_size[pick_ring]*5,200); repaint(); } return true; } public synchronized boolean mouseUp(Event evt, int x, int y) { if(pick_ring!=1000){ if((140>=rings.which_x[pick_ring])&&(100<=(rings.which_x[pick_ring]+rings.ring_size[pick_ring]))&&(rings.ring_size[pick_ring]=rings.which_x[pick_ring])&&(240<=(rings.which_x[pick_ring]+rings.ring_size[pick_ring]))&&(rings.ring_size[pick_ring]=rings.which_x[pick_ring])&&(390<=(rings.which_x[pick_ring]+rings.ring_size[pick_ring]))&&(rings.ring_size[pick_ring] -->