import java.awt.*; public class myCanvas extends Canvas implements Runnable { ballObject Blue = new ballObject(); ballObject Red = new ballObject(); ballObject Green = new ballObject(); // volatile Thread blinker; Thread runThread = new Thread(); boolean first, east, west, north, south, pause; int Xpos, Ypos; Color black = new Color(0, 0, 0); Color red = new Color(255, 0, 0); Color blue = new Color(0, 0, 255); Color green = new Color(0, 128, 0); myCanvas() { first = true; repaint(); Red.Xpos = 70; Red.Ypos = 50; Red.east = true; Red.south = true; Red.incEast = 1; Red.incSouth = 3; Red.pause = false; Blue.Xpos = 50; Blue.Ypos = 30; Blue.west = true; Blue.north = true; Blue.incWest = 4; Blue.incNorth = 5; Red.pause = false; Green.Xpos = 110; Green.Ypos = 50; Green.west = true; Green.south = true; Green.incWest = 8; Green.incSouth = 10; Green.pause = false; new Thread(this).start(); } // myCanvas public void run() { while(true) { try { Thread.sleep(50); } catch (Exception e) {}; repaint(); } // while } // run public void runRed() { Red.pause = false; return; } //start Red public void haltRed() { Red.pause = true; return; } // end stop Red public void start() { runThread = new Thread(this); runThread.start(); } //start public void paint(Graphics g) { g.setColor(black); g.drawRect(9, 9, 200, 200); g.setColor(red); Red.position(); g.fillOval(Red.Xpos, Red.Ypos, 20, 20); g.setColor(blue); Blue.position(); g.fillOval(Blue.Xpos, Blue.Ypos, 20, 20); g.setColor(green); Green.position(); g.fillOval(Green.Xpos, Green.Ypos, 20, 20); } // paint } // class myCanvas