import java.awt.*;
import java.lang.*;
import java.applet.*;

public class Draw extends java.applet.Applet implements Runnable {
        int Maxx = 600;
        int Maxy = 600;
        int Numstars =900;
        int star[][] = new int[Numstars][5]; //[#][spec]//
        Color color = new Color((int)(java.lang.Math.random()*255),
                                (int)(java.lang.Math.random()*255),
                                (int)(java.lang.Math.random()*255));
        Thread draw = null;

        public void init(){
                int i;
                int j;
                setBackground (Color.black);
                resize(Maxx, Maxy);
                for (i=0; i<Numstars; i++){
                        star[i][1]=300;
                        star[i][2]=300;
                        j=(int)(java.lang.Math.random()*4);
                        switch (j){
                                case 0:
                                        star[i][3]=-1;
                                        star[i][4]=1;
                                        break;
                                case 1:
                                        star[i][3]=1;
                                        star[i][4]=-1;
                                        break;
                                case 2:
                                        star[i][3]=1;
                                        star[i][4]=1;
                                        break;
                                case 3:
                                        star[i][3]=-1;
                                        star[i][4]=-1;
                                        break;
                                }
                        star[i][3] = star[i][3] * (int)(java.lang.Math.random()*6+1); 
                        star[i][4] = star[i][4] * (int)(java.lang.Math.random()*6+1); 
                }

        }
        
        public void update(Graphics g){
                int i;
                int j;
                for (i=0; i<Numstars; i++){
                        g.setColor (Color.black);
                        g.drawLine (star[i][1],star[i][2],star[i][1]+star[i][3],star[i][2]+star[i][4]);
                        star[i][1] = star[i][1] + star[i][3]-((int)star[i][3]/2);
                        star[i][2] = star[i][2] + star[i][4]-((int)star[i][4]/2);
                        star[i][3] = star[i][3]*2;
                        star[i][4] = star[i][4]*2;
                        if ((star[i][1] <0) || (star[i][1] > Maxx) || (star[i][2] < 0)|| (star[i][2] > Maxy)){
                                star[i][1] = 300+(int)(java.lang.Math.random()*10);
                                star[i][2] = 300+(int)(java.lang.Math.random()*10);
                                j=(int)(java.lang.Math.random()*4);
                                switch (j){
                                        case 0:
                                                star[i][3]=-1;
                                                star[i][4]=1;
                                                break;
                                        case 1:
                                                star[i][3]=1;
                                                star[i][4]=-1;
                                                break;
                                        case 2:
                                                star[i][3]=1;
                                                star[i][4]=1;
                                                break;
                                        case 3:
                                                star[i][3]=-1;
                                                star[i][4]=-1;
                                                break;
                                        default:
                                                star[i][3]=1;
                                                star[i][4]=1;
                                                break;
                                }
                                star[i][3] = star[i][3] * (int)(java.lang.Math.random()*6+1);
                                star[i][4] = star[i][4] * (int)(java.lang.Math.random()*6+1);
                        }
                        color = new Color((int)(java.lang.Math.random()*255),
                                (int)(java.lang.Math.random()*255),
                                (int)(java.lang.Math.random()*255));
                        g.setColor (color);
                        g.drawLine (star[i][1],star[i][2],star[i][1]+star[i][3],star[i][2]+star[i][4]);
                }
        }       

        public void run() {
                while (draw !=null){
                        try {draw.sleep(25);} catch(InterruptedException e) {}
                        repaint();
                }
        }

        public void start() {
                if (draw ==null){
                        draw = new Thread(this);
                        draw.setPriority(draw.MIN_PRIORITY);
                        draw.start();
                }
        }

        public void stop() {
                draw=null;
        }

        public boolean mouseDown(java.awt.Event evt, int x, int y) {
                return true;
        }
        
}

