import java.applet.Applet; import java.awt.*; import com.genuts.gameui.*; /** * Displays different types of sprites as tiles on the board.
* Some of them are animated, some others move.
* The order of tiles is taken from the class AnimateTiles. */ public class AnimateBoard extends Applet { private PlayField playfield = null; public void init() { setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); // Loading images Image tileImage = getImage(getClass().getResource("tile.gif")); Image rollImage = getImage(getClass().getResource("roll.gif")); Image rollLeftImage = getImage(getClass().getResource("roll-left.gif")); Image rollRightImage = getImage(getClass().getResource("roll-right.gif")); Image bubbleImage = getImage(getClass().getResource("bubble.gif")); Image backgroundImage = getImage(getClass().getResource("background.jpg")); MediaTracker tracker = new MediaTracker(this); tracker.addImage(tileImage, 0); tracker.addImage(rollImage, 0); tracker.addImage(rollLeftImage, 0); tracker.addImage(rollRightImage, 0); tracker.addImage(bubbleImage, 0); tracker.addImage(backgroundImage, 0); try { tracker.waitForID(0); } catch (InterruptedException e) { System.out.println("Loading interrupted"); } // Gets the size of a tile int tileSize = tileImage.getWidth(null); // Creates the playfield playfield = new PlayField(AnimateTiles.tiles[0].length*tileSize, AnimateTiles.tiles.length*tileSize); playfield.setBackground(Color.white); playfield.setBackgroundImage(backgroundImage); // Display tiles from class AnimateTiles. // 6 types of tiles: // * 0 : no tile // * 1 : simple tile (no animation, no movement) // * 2 : flat rolling tile (animation, no movement) // * 3 : left rolling tile (animation, no movement) // * 4 : right rolling tile (animation, no movement) // * 5 : footbridge tile (animation, movement) for (int y = 0; y < AnimateTiles.tiles.length; y++) { for (int x = 0; x < AnimateTiles.tiles[y].length; x++) { Sprite tile = null; switch (AnimateTiles.tiles[y][x]) { case 0: break; case 1: tile = new Sprite(tileImage); tile.setId(0); break; case 2: tile = new AnimatedSprite(rollImage, 4, 1, 3); tile.setId(0); break; case 3: tile = new AnimatedSprite(rollLeftImage, 4, 1, 3); tile.setId(0); break; case 4: tile = new AnimatedSprite(rollRightImage, 4, 1, 3); tile.setId(0); break; case 5: AnimatedSprite anim = new AnimatedSprite(bubbleImage, 5, 1, 3); // Randomly desynchronize the animation of footbridge sprites. anim.setCurrentPictureNumber(((int) (Math.random()*1000))%5); tile = new TileWrapper(anim); tile.setId(0); break; } if (tile != null) { tile.setPosition(x*tileSize, y*tileSize); playfield.addSprite(tile); } } } // Displays the playfield add(playfield); } public void start() { // Activate the playfield playfield.setPause(false); } public void stop() { if (playfield != null) { playfield.stop(); } } }