//
import java.awt.Graphics;
import java.awt.Rectangle;
class Actif1 extends Thread {
private Rectangle r1;
boolean stop = false;
Actif1(Rectangle r){
r1=r;
}
public void run() {
while (true) {
for (int i=0;i<80;++i){
r1.x=i;
try {Thread.sleep((int)Math.random()*40+5);}
catch(InterruptedException signal) {}
}
for (int i=80;i>0;--i){
r1.x=i;
try {Thread.sleep((int)Math.random()*40+5);}
catch(InterruptedException signal) {}
}
}
}
public void arret() {stop = true;}
}
class Actif2 extends Thread {
private Rectangle r1;
boolean stop = false;
Actif2(Rectangle r){
r1=r;
}
public void run() {
while (true) {
for (int i=0;i<80;++i){
r1.y=i;
try {Thread.sleep((int)Math.random()*40+5);}
catch(InterruptedException signal) {}
}
for (int i=80;i>0;--i){
r1.y=i;
try {Thread.sleep((int)Math.random()*40+5);}
catch(InterruptedException signal) {}
}
}
}
public void arret() {stop = true;}
}
public class Animation extends java.applet.Applet
implements Runnable {
boolean stop=false;
Thread actif;
Actif1 a1,b1,c1;
Actif2 a2,b2,c2;
Rectangle ra= new Rectangle(0,0,20,20);
Rectangle rb= new Rectangle(0,0,10,10);
Rectangle rc= new Rectangle(0,0,5,5);
public void start() {
if (actif==null); {
actif = new Thread(this);
actif.start();
}
}
public void stop() {
if (actif!=null); {
stop=true;
if(a1!=null) a1.arret();
if(a1!=null) b1.arret();
if(a1!=null) c1.arret();
if(a1!=null) a2.arret();
if(a1!=null) b2.arret();
if(a1!=null) c2.arret();
actif = null;
}
}
public void run() {
a1=new Actif1(ra);a1.start();
a2=new Actif2(ra); a2.start();
b1=new Actif1(rb);b1.start();
b2=new Actif2(rb); b2.start();
c1=new Actif1(rc);c1.start();
c2=new Actif2(rc); c2.start();
while (!stop) {
repaint();
try {Thread.sleep(10);}
catch(InterruptedException signal) {}
}
}
public void paint(Graphics g) {
g.fillRect(ra.x,ra.y,ra.width,ra.height);
g.fillRect(rb.x,rb.y,rb.width,rb.height);
g.fillRect(rc.x,rc.y,rc.width,rc.height);
}
}