// SmooshedLetters2.java // Smooshes up my name for web page // Smooshes up DR. STEPHEN G. BUELL // Returns with JAVA AND either FINANCE or FIN 125 import java.awt.*; import java.applet.Applet; public class SmooshedLetters2 extends Applet implements Runnable { private int xPos[ ]; private int x[ ]; private int k; private int cXLine, cYLine, xSpace; private boolean flip; private int rn; // random number for color private Font f; private Color colors[ ] = new Color[ 5 ]; private Thread threadL; private Graphics gOff; // off-secreen graphics buffer private Image buffer; // off-screen buffer public void init( ) { cXLine = 210; // measured from left of the applet window cYLine = 48; // measured from top of applet window xSpace = 18; k = 9; xPos = new int[ 18 ]; x = new int[ 18 ]; for ( int i = 0; i < xPos.length; i++ ) { xPos[ i ] = cXLine - k * xSpace; // Speed of each letter's movement in spaces per repaint x[ i ] = k--; } flip = true; // initialize colors array colors[ 0 ] = Color.red; colors[ 1 ] = Color.blue; colors[ 2 ] = Color.green; colors[ 3 ] = Color.black; colors[ 4 ] = Color.magenta; // create off-screen buffer buffer = createImage( 420, 50 ); // creates image buffer gOff = buffer.getGraphics( ); // gets graphics context threadL = new Thread( this, "Letter Thread" ); threadL.start( ); f = new Font( "TimesRoman", Font.BOLD, 42 ); // FONT SIZE +3 = 36?? gOff.setFont( f ); } public void stop( ) { threadL.stop( ); } public void run( ) { while ( true ) { // sleep for .13 seconds try { threadL.sleep( 130 ); } catch ( InterruptedException e ) { e.printStackTrace( ); } // set background color to white gOff.setColor( Color.white ); gOff.fillRect( 0, 0, size( ).width, size( ).height ); // draw letters gOff.setColor( colors[ rn ] ); k = 0; gOff.drawString( flip ? "D" : " ", xPos[ k ], cYLine ); gOff.drawString( flip ? "R." : "J", xPos[ ++k ], cYLine ); gOff.drawString( flip ? " " : "A", xPos[ ++k ], cYLine ); gOff.drawString( flip ? "S" : "V", xPos[ ++k ], cYLine ); gOff.drawString( flip ? "T" : "A", xPos[ ++k ], cYLine ); gOff.drawString( flip ? "E" : " ", xPos[ ++k ], cYLine ); gOff.drawString( flip ? "P" : "A", xPos[ ++k ], cYLine ); gOff.drawString( flip ? "H" : "N", xPos[ ++k ], cYLine ); gOff.drawString( flip ? "E" : "D", xPos[ ++k ], cYLine ); gOff.drawString( flip ? "N" : " ", xPos[ ++k ], cYLine ); gOff.drawString( flip ? " " : "F", xPos[ ++k ], cYLine ); gOff.drawString( flip ? "G." : "I", xPos[ ++k ], cYLine ); gOff.drawString( flip ? " " : "N", xPos[ ++k ], cYLine ); gOff.drawString( flip ? "B" : " ", xPos[ ++k ], cYLine ); gOff.drawString( flip ? "U" : "1", xPos[ ++k ], cYLine ); gOff.drawString( flip ? "E" : "2", xPos[ ++k ], cYLine ); gOff.drawString( flip ? "L" : "5", xPos[ ++k ], cYLine ); gOff.drawString( flip ? "L" : " ", xPos[ ++k ], cYLine ); //xPos1 += x1; if ( xPos[ 0 ] >= cXLine - 5 ) { for ( int i = 0; i < x.length; i++ ) { x[ i ] *= -1; } flip = !flip; rn = ( int ) ( 5 * Math.random( ) ); // get new random color } if ( xPos[ 0 ] <= 10 ) { for ( int i = 0; i < x.length; i++ ) { x[ i ] *= -1; } } for ( int i = 0; i < xPos.length; i++ ) { xPos[ i ] += x[ i ]; } repaint( ); } } public void paint( Graphics g ) { g.drawImage( buffer, 0, 0, this ); } // override update to eliminate flicker // do not clear background public void update( Graphics g ) { paint( g ); } }