// The Ballz animation applet import java.awt.*; public class Ballz extends AniApplet { final int numballs=8; // number of balls final int grid=25; // grid spacing Ball[] balls; // paint a grid public void paintGrid(Graphics g) { int i; // draw grid for (i=grid;i<getSize().height;i+=grid) g.drawLine(0,i,getSize().width,i); for (i=grid;i<getSize().width;i+=grid) g.drawLine(i,0,i,getSize().height); } public void init() { Graphics g=getVirtualGraphics(); int i; paintGrid(g); // grid is constant on background // initialize the ball array balls = new Ball[numballs]; for (i=0;i<numballs;i++) balls[i]=new Ball(); for (i=0;i<numballs;i++) { // set random start conditions balls[i].x=Math.random()*getSize().width; balls[i].y=Math.random()*getSize().height; balls[i].maxheight=(int)(getSize().height- Math.random()*getSize().height/2); balls[i].maxwidth=getSize().width; balls[i].color=new Color((int)(Math.random()*0xFFFFFF)); balls[i].speed=Math.random()*.8 + .2; if (Math.random()>.5) balls[i].dir=-1; } } // This is the animation routine public void animate() { int i; // move balls for (i=0;i<numballs;i++) balls[i].step(); // repaint repaint(); } public void paint(Graphics g) { super.paint(g); // let parent draw background int i; Color oldcolor = g.getColor(); // draw each ball for (i=0;i<numballs;i++) { int x1,y1; x1=(int) balls[i].x; y1=getSize().height-(int) balls[i].y; g.setColor(balls[i].color); g.fillOval(x1-10,y1-10,20,20); } g.setColor(oldcolor); } }