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();
}
}
}