package particles;

import java.applet.Applet;
import java.awt.Canvas;
import java.awt.Graphics;
import java.util.Random;

public class ParticleApplet extends Applet {
@Override
public void init() {
    // TODO Auto-generated method stub
    super.init();
    setSize(500, 500);
    add(new ParticleCanvas(20));
}
}

class ParticleCanvas extends Canvas{
    Particle[] particles;
    public ParticleCanvas(int n) {
	setSize(500, 500);
	particles=new Particle[n];
	for(int i=0; i<n; i++)
	    particles[i]=new Particle(this);
	for(int i=0; i<n; i++)
	    particles[i].start();
    }
    
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        for(Particle p: particles){
            g.drawOval(p.x, p.y, 5,5);
        }
    }
}

class Particle extends Thread{
    int x;
    int y;
    ParticleCanvas canvas;
    public Particle(ParticleCanvas canvas) {
	this.canvas=canvas;
	x = (int)(Math.random()*canvas.getSize().width);
	y = (int)(Math.random()*canvas.getSize().height);
    }
    
    @Override
    public void run() {
        super.run();
        while(true){
            move();
            try {
		sleep(100);
	    } catch (InterruptedException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	    }
            canvas.repaint();
        }
    }

    private void move() {
	int mult;
	mult=(Math.random()<0.5?1:-1);
	x+=(mult*5);
	mult=(Math.random()<0.5?1:-1);
	y+=(mult*5);
    }
}
