home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1999 October / pcp156b.iso / alphawrk / JAX / DOC50.ZIP / doc50 / demo / Disk.class (.txt) next >
Encoding:
Java Class File  |  1999-03-03  |  2.0 KB  |  53 lines

  1. import java.awt.Color;
  2. import ltk.DisplayListCanvas;
  3. import ltk.Graphical;
  4.  
  5. class Disk extends Graphical {
  6.    static int speed = 5;
  7.    Peg peg;
  8.  
  9.    void moveTo(Peg var1) {
  10.       this.peg.removeDisk(this);
  11.       this.move(super.area.x, this.peg.area.y - super.area.h - 10, 2 * speed);
  12.       this.peg = var1;
  13.       this.move(this.peg.area.x + this.peg.area.w / 2 - super.area.w / 2, super.area.y, speed);
  14.       this.move(super.area.x, this.peg.area.y + this.peg.area.h - (this.peg.nDisks + 1) * super.area.h, 2 * speed);
  15.       this.peg.addDisk(this);
  16.    }
  17.  
  18.    public void move(int var1, int var2, int var3) {
  19.       super.move(var1, var2, var3);
  20.       Thread.yield();
  21.  
  22.       while(Hanoi.take_a_break) {
  23.          try {
  24.             Thread.sleep(1000L);
  25.          } catch (InterruptedException var5) {
  26.             break;
  27.          }
  28.       }
  29.  
  30.    }
  31.  
  32.    public synchronized void draw() {
  33.       super.canvas.setColor(Color.yellow);
  34.       super.canvas.fillRoundRect(super.area.x, super.area.y, super.area.w, super.area.h, super.area.h / 4, super.area.h / 4);
  35.       super.canvas.setColor(Color.black);
  36.       super.canvas.drawRoundRect(super.area.x, super.area.y, super.area.w, super.area.h, super.area.h / 4, super.area.h / 4);
  37.    }
  38.  
  39.    public synchronized void erase() {
  40.    }
  41.  
  42.    public String toString() {
  43.       return "Disk[" + "x=" + super.area.x + "," + "y=" + super.area.y + "," + "resting at peg " + this.peg.id + "]";
  44.    }
  45.  
  46.    Disk(DisplayListCanvas var1, Peg var2, int var3, int var4) {
  47.       super(var1, var2.area.x + var2.area.w / 2 - var3 / 2, var2.area.y + var2.area.h - (var2.nDisks + 1) * var4, var3, var4);
  48.       this.peg = var2;
  49.       var2.addDisk(this);
  50.       ((Graphical)this).update();
  51.    }
  52. }
  53.