import java.awt.Graphics; import java.awt.Color; import java.lang.Integer; // // // // // // // public class BouncingBoxes extends DoubleBuf { // constants // the number of milliseconds between // screen redraws final static int REFRESH_DELAY = 20; // defaults changable via param interface static int NUM_OF_BOXES = 1; static int MIN_DIAM = 20; static int MAX_DIAM = 60; static int MIN_SPEED = 1; static int MAX_SPEED = 4; BoxSprite b[]; public void start() { NUM_OF_BOXES = Integer.parseInt(getParameter("num_of_boxes")); MIN_DIAM = Integer.parseInt(getParameter("min_diam" )); MAX_DIAM = Integer.parseInt(getParameter("max_diam" )); MIN_SPEED = Integer.parseInt(getParameter("min_speed" )); MAX_SPEED = Integer.parseInt(getParameter("max_speed" )); int appwidth = this.getSize().width; int appheight = this.getSize().height; int diam; // we use this to make sure they're square b = new BoxSprite[NUM_OF_BOXES]; for (int i = 0; i < NUM_OF_BOXES; ++i) { diam = randi(MIN_DIAM,MAX_DIAM); b[i] = new BoxSprite( // x,y pos randi(0,appwidth), randi(0,appheight), // x,y vel randi(MIN_SPEED,MAX_SPEED),randi(MIN_SPEED,MAX_SPEED), // x,y dim //randi(MIN_DIAM,MAX_DIAM),randi(MIN_DIAM,MAX_DIAM), diam,diam, randcolor(), this ); b[i].is_filled = false; //randbool(); b[i].has_motion_blur = false; //randbool(); } } public void paint(Graphics g) { for (int i = 0; i < NUM_OF_BOXES; ++i) { b[i].update(); b[i].paint(g); } repaint(REFRESH_DELAY); } public boolean randbool() { if ((int)(Math.random() * 2) == 1) { return true; } else { return false; } } public int randi(int low, int high) { return (int)((Math.random() * (high - low)) + low); } public Color randcolor() { Color color; int r = (int)(Math.random() * 6); switch (r) { case 0: color = Color.red; break; case 1: color = Color.magenta; break; case 2: color = Color.blue; break; case 3: color = Color.cyan; break; case 4: color = Color.green; break; default: color = Color.yellow; break; } return color; } }