Generate Bouncing Lines Using Applet Example
Submitted By: Sreenandu
- /*
- Generate Bouncing Lines Using Applet Example
- This Java example shows how to create bouncing lines using java Applet
- example.
- */
- import java.awt.*;
- import java.applet.Applet;
- public class BouncingLines extends Applet implements Runnable {
- Thread runner = null;
- final static int WIDTH = 200;
- final static int HEIGHT = 100;
- Image image;
- Graphics graphics;
- // bouncing lines member variables
- int[] x1;
- int[] y1;
- int[] x2;
- int[] y2;
- int dx1 = 2 + (int)( 3 * Math.random() );
- int dy1 = 2 + (int)( 3 * Math.random() );
- int dx2 = 2 + (int)( 3 * Math.random() );
- int dy2 = 2 + (int)( 3 * Math.random() );
- static int first = 0;
- final static int LINES = 50;
- public void init() {
- // create arrays to hold the line coordinates
- x1 = new int[LINES];
- y1 = new int[LINES];
- x2 = new int[LINES];
- y2 = new int[LINES];
- // initialise the first line
- x1[0] = (int)( WIDTH * Math.random() );
- y1[0] = (int)( HEIGHT * Math.random() );
- x2[0] = (int)( WIDTH * Math.random() );
- y2[0] = (int)( HEIGHT * Math.random() );
- // initialise all the other lines
- for ( int i = 1; i < LINES; i++ ) {
- x1[i] = x1[0];
- y1[i] = y1[0];
- x2[i] = x2[0];
- y2[i] = y2[0];
- }
- image = createImage( WIDTH, HEIGHT );
- graphics = image.getGraphics();
- }
- public void start() {
- // user visits the page, create a new thread
- if ( runner == null ) {
- runner = new Thread( this );
- runner.start();
- }
- }
- public void stop() {
- // user leaves the page, stop the thread
- if ( runner != null && runner.isAlive() )
- runner.stop();
- runner = null;
- }
- public void run() {
- while (runner != null) {
- repaint();
- try {
- Thread.sleep( 20 );
- } catch ( InterruptedException e ) {
- // do nothing
- }
- }
- }
- public void paint( Graphics g ) {
- update( g );
- }
- public void update( Graphics g ) {
- // clear the background to white
- graphics.setColor( Color.black );
- graphics.fillRect( 0, 0, WIDTH, HEIGHT );
- // draw the lines
- for(int r=4;r<=9;r++)
- {
- graphics.setColor( Color.green );
- int line = first;
- for ( int i = 0; i < LINES; i++ ) {
- graphics.drawLine( x1[line], y1[line],
- x2[line], y2[line] );
- line++;
- if ( line == LINES ) line = 0;
- }
- line = first;
- first--;
- if ( first < 0 ) first = LINES - 1;
- x1[first] = x1[line];
- y1[first] = y1[line];
- x2[first] = x2[line];
- y2[first] = y2[line];
- // move the "first" line
- if (x1[first] + dx2 < WIDTH)
- x1[first] += dx1;
- else
- dx1 = -(2 + (int)( 3 * Math.random() ));
- if (x1[first] + dx1 >= 0)
- x1[first] += dx1;
- else
- dx1 = 2 + (int)( 3 * Math.random() );
- if (y1[first] + dy1 < HEIGHT)
- y1[first] += dy1;
- else
- dy1 = -(2 + (int)( 3 * Math.random() ));
- if (y1[first] + dy1 >= 0)
- y1[first] += dy1;
- else
- dy1 = 2 + (int)( 3 * Math.random() );
- if (x2[first] + dx2 < WIDTH)
- x2[first] += dx2;
- else
- dx2 = -(2 + (int)( 3 * Math.random() ));
- if (x2[first] + dx2 >= 0)
- x2[first] += dx2;
- else
- dx2 = 2 + (int)( 3 * Math.random() );
- if (y2[first] + dy2 < HEIGHT)
- y2[first] += dy2;
- else
- dy2 = -(2 + (int)( 3 * Math.random() ));
- if (y2[first] + dy2 >= 0)
- y2[first] += dy2;
- else
- dy2 = 2 + (int)( 3 * Math.random() );
- // copy buffer to screen
- g.drawImage( image, 0, 0, this );
- }
- }
- }



