El ejemplo de las líneas flotantes es más difícil
de describir que su código. Se ejecuta sobre un bucle infinito
y son líneas que se están moviendo continuamente
por la ventana que ocupa el applet, rebotando en los bordes y
moviéndose continuamente. El código del fichero
Lineas.java, es el que contiene las sentencias que crean el applet
que se visualiza a continuación. Repasar el código delalgoritmo para entenderlo, que es bastante simple.
import java.awt.*; import java.applet.Applet; public class Lineas extends Applet { int LINEAS = 25; int gSup = 3; int gInf = 3; int gIzq = 2; int gDch = 6; int apAncho,apAlto; int gLineas[][] = new int[LINEAS][4]; public void init() { Dimension d = size(); apAncho = d.width; apAlto = d.height; } public void start() { gLineas[0][0] = aleatorio( apAncho ); gLineas[0][1] = aleatorio( apAlto ); gLineas[0][2] = aleatorio( apAncho ); gLineas[0][3] = aleatorio( apAlto ); for( int i=1; i < LINEAS; i++ ) { CopiaLinea( i,i-1 ); RecalcLinea( i ); } repaint(); } public void paint( Graphics g ) { while( true ) { for( int i=LINEAS-1; i > 0; i-- ) CopiaLinea( i,i-1 ); RecalcLinea( 0 ); g.setColor( Color.black ); g.drawLine( gLineas[0][0],gLineas[0][1], gLineas[0][2],gLineas[0][3] ); g.setColor( getBackground() ); g.drawLine( gLineas[LINEAS-1][0],gLineas[LINEAS-1][1], gLineas[LINEAS-1][2],gLineas[LINEAS-1][3] ); } } private void CopiaLinea( int desde,int hasta ) { for( int i=0; i < 4; i++ ) gLineas[desde][i] = gLineas[hasta][i]; } public int aleatorio( int rango ) { double retornoMath; retornoMath = Math.random(); return( (int)(retornoMath * rango) ); } private void RecalcLinea( int i ) { gLineas[i][1] += gSup; if( (gLineas[i][1] < 0 ) || (gLineas[i][1] > apAlto) ) { gSup *= -1; gLineas[i][1] += 2*gSup; } gLineas[i][3] += gInf; if( (gLineas[i][3] < 0 ) || (gLineas[i][3] > apAlto) ) { gInf *= -1; gLineas[i][3] += 2*gInf; } gLineas[i][0] += gIzq; if( (gLineas[i][0] < 0 ) || (gLineas[i][0] > apAncho) ) { gIzq *= -1; gLineas[i][0] += 2*gIzq; } gLineas[i][2] += gDch; if( (gLineas[i][2] < 0 ) || (gLineas[i][2] > apAncho) ) { gDch *= -1; gLineas[i][2] += 2*gDch; } } }
|
[Anterior] [Indice] [Siguiente] |