package org.best.example;
/*
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 );
}
}
}
/*
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 );
}
}
}
No comments:
Post a Comment