import java.applet.*; import java.awt.*; import javax.swing.*; public class SwimDash extends JApplet implements Runnable{ private Thread thread; private MediaTracker tracker; private SwimingPool pool; private java.util.List sprites; private static final int SPRITE_NUMBER = 8; private static final String BACKGROUND_FILENAME = "waterBackground.gif"; private static final String FOREGROUND_FILENAME = "waterForeground.gif"; private static final String SPRITE_FILENAME = "swimmer"; private static final String SPRITE_FILESUFFIX = "gif"; public void init(){ tracker = new MediaTracker(this); Image foregroundImage = getImage(getDocumentBase(), FOREGROUND_FILENAME); Image backgroundImage = getImage(getDocumentBase(), BACKGROUND_FILENAME); tracker.addImage(foregroundImage, 0); tracker.addImage(backgroundImage, 0); sprites = new java.util.ArrayList(8); for(int i = 0 ; i < SPRITE_NUMBER ; i++){ Image tempImage = getImage(getDocumentBase(), SPRITE_FILENAME + i + "." + SPRITE_FILESUFFIX); sprites.add(tempImage); tracker.addImage(tempImage, 0); } pool = new SwimingPool(this, sprites, foregroundImage, backgroundImage); getContentPane().setLayout(new BorderLayout()); getContentPane().add(pool, BorderLayout.CENTER); } public void start(){} public void stop(){ thread = null; } public void gameStart(){ thread = new Thread(this); thread.start(); } public void gameStop(){ stop(); } public void run(){ try{ tracker.waitForID(0); }catch(InterruptedException e){ return; } Thread currentThread = Thread.currentThread(); while(currentThread == thread){ pool.increaseIndex(); pool.repaint(); try{ Thread.sleep(100); }catch(InterruptedException ex){} } } }