import java.awt.*; import java.applet.Applet; class Ball { int x = 7, xChange = 7; int y = 2, yChange = 2; int diameter = 10; Color color = Color.RED; Ball() { } Ball(int x, int y, int xChange, int yChange, int diameter, Color color) { this.x = x; this.y = y; this.xChange = xChange; this.yChange = yChange; this.diameter = diameter; this.color = color; } } class Bounds { int LeftX = 50, RightX = 150; int TopY = 50, BottomY = 150; } public class BallBox5 extends Applet { int numBalls = 5; Ball [] balls = new Ball[5]; Bounds box; public void init() { box = new Bounds(); balls[0] = new Ball(); balls[1] = new Ball(7, 2, 3, 5, 12, Color.GREEN); balls[2] = new Ball(7, 2, 4, -1, 8, Color.BLUE); balls[3] = new Ball(7, 2, 5, 2, 9, Color.CYAN); balls[4] = new Ball(7, 2, 3, -4, 11, Color.MAGENTA); } private void eraseBall(Graphics g, Ball ball) { g.fillOval(ball.x + box.LeftX, ball.y + box.TopY, ball.diameter, ball.diameter); } private void moveAndDrawBall(Graphics g, Ball ball) { int width = box.RightX - box.LeftX; int height = box.BottomY - box.TopY; if (ball.x <= 0) ball.xChange = -ball.xChange; if (ball.x >= width) ball.xChange = -ball.xChange; if (ball.y <= 0) ball.yChange = -ball.yChange; if (ball.y >= height) ball.yChange = -ball.yChange; ball.x = ball.x + ball.xChange; ball.y = ball.y + ball.yChange; g.setColor(ball.color); g.fillOval(ball.x + box.LeftX, ball.y + box.TopY, ball.diameter, ball.diameter); } public void paint(Graphics g) { g.drawRect(box.LeftX, box.TopY, box.RightX - box.LeftX, box.BottomY - box.TopY); for (int n = 1; n < 300; n++) { Color backgroundColor = getBackground(); g.setColor(backgroundColor); for (int i = 0; i < numBalls; i++) { eraseBall(g, balls[i]); } for (int i = 0; i < numBalls; i++) { moveAndDrawBall(g, balls[i]); } try { Thread.sleep(50); } catch (InterruptedException e) { System.err.println("sleep exception"); } } } }