// -=Æ |) /-\ |\| |\| Æ=- import java.applet.*; import java.awt.*; public class ballbounce extends Applet { int iMaxX, iMaxY, iX, iY, iIteration, iSpeed, iBorder, iXDir, iYDir, iBallX, iBallY, iRed, iGreen, iBlue; Color clrBackGround, clrBall; private AudioClip sndStart, sndStop, sndBump; public ballbounce() { } public String getAppletInfo() { return "Name: ballbounce\r\n" + "Author: \r\n" + "Created with Microsoft Visual J++ Version 6.0"; } public void init() { iMaxX = 255; iMaxY = 255; iX = 50; //Starting pos for ball iY = 100; // " " " " " iIteration = 1500; iSpeed = 100; iBorder = 25; iXDir = +1; iYDir = +1; iBallX = Integer.parseInt(getParameter("BallX") ); iBallY = Integer.parseInt(getParameter("BallY") ); iRed = Integer.parseInt(getParameter("Red") ); iGreen = Integer.parseInt(getParameter("Green") ); iBlue = Integer.parseInt(getParameter("Blue") ); resize( iMaxX, iMaxY ); clrBackGround = new Color ( 0, 0, 0 ); //clrBall = new Color ( iRed, iGreen, iBlue ); sndStart = getAudioClip (getDocumentBase(), "start.au" ); sndStop = getAudioClip (getDocumentBase(), "stop.au" ); sndBump = getAudioClip (getDocumentBase(), "bump.au" ); } public void destroy() { } public void paint(Graphics g) { g.setColor ( clrBackGround ); g.fillRect ( 0, 0, iMaxX, iMaxY ); //Border for ( int i = 0 ; i < iBorder+1 ; i++ ) { g.setColor ( new Color ( 10*i, 0, 0 )); g.drawRect ( i, i, iMaxX-i-i-1, iMaxY-i-i-1); } sndStart.play(); for ( int i = 0 ; i < iIteration ; i++ ) { iRed = iRed-3; iGreen = iGreen+1; iBlue = iBlue+2; g.setColor ( new Color ( iRed, iGreen, iBlue ) ); g.fillOval ( iX, iY, iBallX, iBallY ); try { Thread.sleep ( iSpeed ); } catch ( InterruptedException ex ) { stop(); } if ( i < iIteration-1 ) { g.setColor ( clrBackGround ); g.fillOval ( iX, iY, iBallX, iBallY ); } if ( iX < iBorder+3 ) { iXDir = +1; iSpeed = 2*iSpeed/3; sndBump.play(); } if ( iY < iBorder+3 ) { iYDir = +1; iSpeed = 2*iSpeed/3; sndBump.play(); } if ( iX > iMaxX-iBallX-iBorder-3 ) { iXDir = -1; iSpeed = 2*iSpeed/3; sndBump.play(); } if ( iY > iMaxY-iBallY-iBorder-3) { iYDir = -1; iSpeed = 2*iSpeed/3; sndBump.play(); } iX += iXDir; iY += 2*iYDir; } sndStop.play(); } public void start() { } public void stop() { sndStart.stop(); sndStop.stop(); sndBump.stop(); } }