import java.awt.*; import java.awt.event.*; class MyFrame extends Frame implements Runnable{// t int w=600, h=600; int sleepTime=10;// t Thread thread=null;// t Ball[] ball=new Ball[200]; MyFrame(String s){ super(s); setSize(w, h); setBackground(Color.GRAY); setForeground(Color.WHITE); for(int i=0; i < ball.length; i=i+1){ int x=(int)(Math.random()*(double)w); int y=(int)(Math.random()*(double)h); int r=(int)(Math.random()*255.0); int g=(int)(Math.random()*255.0); int b=(int)(Math.random()*255.0); int vx=(int)(0.02*(Math.random()-0.5)*(double)w);// t int vy=(int)(0.02*(Math.random()-0.5)*(double)h);// t ball[i]=new Ball(x, y, 5, new Color(r, g, b)); ball[i].setVelocity(vx, vy); ball[i].setMyFrame(this); } } public void paint(Graphics g){ for(int i=0; i < ball.length; i=i+1){ ball[i].paint(g); } } public void start(){// t if(thread==null){ thread=new Thread(this); thread.start(); } } public void stop(){// t thread=null; } public void run(){// t while(Thread.currentThread()==thread){ for(int i=0; i < ball.length; i=i+1){ ball[i].move(); } repaint(); try{ Thread.sleep(sleepTime); }catch(InterruptedException e){ } } } public boolean checkLimit(int x, int y){// c return((x < 0)||(w < x)||(y < 0)||(h < y)); } }//end of class MyFrame class Ball{ MyFrame myFrame;// c int x, y, r; int vx, vy;// t Color c; public Ball(int x, int y, int r, Color c){ this.x=x; this.y=y; this.r=r; this.c=c; } public void paint(Graphics g){ Color gc=g.getColor(); g.setColor(c); g.fillOval(x-r, y-r, 2*r, 2*r); g.setColor(gc); } public void setVelocity(int vx, int vy){//t this.vx=vx; this.vy=vy; } public void setMyFrame(MyFrame myFrame){// c this.myFrame=myFrame; } public void move(){ x=x+vx; if(myFrame.checkLimit(x,y)){// c vx=-vx; x=x+vx; } y=y+vy; if(myFrame.checkLimit(x, y)){// c vy=-vy; y=y+vy; } } } public class ballplay{ public static void main(String[] args){ MyFrame myFrame=new MyFrame("BallTest"); myFrame.addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); myFrame.setVisible(true); myFrame.start();// t } }// end of class BallTest