Bouncing Circle : Animation « 2D Graphics GUI « Java

Bouncing Circle

```
/*
* This code is from the book Java Examples in a Nutshell, 2nd Edition.
* It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
* You may study, use, and modify it for any non-commercial purpose.
* You may distribute it non-commercially as long as you retain this notice.
* For a commercial use license, or to purchase the book (recommended),
* visit http://www.davidflanagan.com/javaexamples2.
*/

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;

/** An applet that displays a simple animation */
public class BouncingCircle extends Applet implements Runnable {
int x = 150, y = 50, r = 50; // Position and radius of the circle

int dx = 11, dy = 7; // Trajectory of circle

/** This method simply draws the circle at its current position */
public void paint(Graphics g) {
g.setColor(Color.red);
g.fillOval(x - r, y - r, r * 2, r * 2);
}

/**
* This method moves (and bounces) the circle and then requests a redraw.
* The animator thread calls this method periodically.
*/
public void animate() {
// Bounce if we've hit an edge.
Rectangle bounds = getBounds();
if ((x - r + dx < 0) || (x + r + dx > bounds.width))
dx = -dx;
if ((y - r + dy < 0) || (y + r + dy > bounds.height))
dy = -dy;

// Move the circle.
x += dx;
y += dy;

// Ask the browser to call our paint() method to draw the circle
// at its new position.
repaint();
}

/**
* This method is from the Runnable interface. It is the body of the thread
* that performs the animation. The thread itself is created and started in
* the start() method.
*/
public void run() {
animate(); // Update and request redraw
try {
} // Wait 100 milliseconds
catch (InterruptedException e) {
} // Ignore interruptions
}
}

/** Start animating when the browser starts the applet */
public void start() {
// The thread that called start now returns to its caller.
// Meanwhile, the new animator thread has called the run() method
}

/** Stop animating when the browser stops the applet */
public void stop() {
// Set the flag that causes the run() method to end
}
}

```

Related examples in the same category

 1 Is Event Dispatcher Thread 2 Timer based animation 3 A rotating and scaling rectangle. 4 Fade out an image: image gradually get more transparent until it is completely invisible. 5 Font size animation 6 Hypnosis animation 7 Noise Image 8 How to create Animation: Paint and thread 9 How to create animation 10 Animation: bounce 11 Image Bouncer 12 Text animation 13 Buffered Animation Demo 14 Hypnosis Spiral 15 Animator Demo 16 Towers of Hanoi 17 Make your own animation from a series of images 18 Composition technique in this animation. 19 Animated Button 20 Animated Message Panel 21 Animated PasswordField 22 Animated TextField 23 A simple spring simulation in one dimension 24 Shows an animated bouncing ball 25 Shows animated bouncing balls