📄 foundcanvas.java
字号:
package found;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.*;
import java.io.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import javax.microedition.rms.*;
public class FoundCanvas
extends GameCanvas implements Runnable {
private static final int rDemonNum = 3;
private static final int trapNum = 5;
private static final int foodNum = 2;
private static final int yDemonNum = 5;
private static final int birdNum = 5;
private static final int elephantNum = 5;
private Random rand;
private Display display;
private boolean sleeping;
private LayerManager manager;
private int xView, yView;
private TiledLayer landLayer;
private TiledLayer wallLayer;
private Image infoBar;
private Sprite playerSprite;
private Sprite[] trapSprite = new Sprite[trapNum];
private Sprite[] foodSprite = new Sprite[foodNum];
private Sprite[] rDemonSprite = new Sprite[rDemonNum];
private Sprite[] yDemonSprite = new Sprite[yDemonNum];
private ChaseSprite[] birdSprite = new ChaseSprite[birdNum];
private ChaseSprite[] elephantSprite = new ChaseSprite[elephantNum];
private ChaseSprite BelialSprite;
private Player musicPlayer;
private Player scorePlayer;
private Player hurtPlayer;
private Player hHurtPlayer;
private Player diePlayer;
private boolean gameOver;
private int score;
private int blood;
private int frameDelay;
public int[] highScores = new int[5];
private int sequenceLfet[] = {
9, 10, 11, 10};
private int sequenceUp[] = {
0, 1, 2, 1};
private int sequenceDown[] = {
6, 7, 8, 7};
private int sequenceRight[] = {
3, 4, 5, 4};
public FoundCanvas(Display d) {
super(true);
display = d;
rand = new Random();
frameDelay = 35;
}
public void start() {
display.setCurrent(this);
readHiScores();
try {
infoBar = Image.createImage("/res/info.png");
landLayer = new TiledLayer(30, 30,
Image.createImage("/res/BackGround.png"),
32, 32);
wallLayer = new TiledLayer(30, 30, Image.createImage("/res/barrier.png"),
32,
32);
}
catch (IOException e) {
System.err.println("Failed loading images!");
}
for (int i = 0; i < GameMap.land.length; i++) {
int column = i % 30;
int row = (i - column) / 30;
landLayer.setCell(column, row, GameMap.land[i]);
}
for (int i = 0; i < GameMap.wall.length; i++) {
int column = i % 30;
int row = (i - column) / 30;
wallLayer.setCell(column, row, GameMap.wall[i]);
}
try {
playerSprite = new Sprite(Image.createImage("/res/hero.png"), 24,
28);
int sequence1[] = {
0, 1, 2, 1, 0};
int sequence2[] = {
0, 0, 0, 1, 1, 1};
int sequence3[] = {
0, 1, 2, 3, 2, 1, 0};
for (int i = 0; i < trapNum; i++) {
trapSprite[i] = new Sprite(Image.createImage("/res/trap.png"),
30, 30);
trapSprite[i].setFrameSequence(sequence3);
placeSprite(trapSprite[i], wallLayer);
}
for (int i = 0; i < rDemonNum; i++) {
rDemonSprite[i] = new Sprite(Image.createImage("/res/red.png"),
24, 22);
rDemonSprite[i].setFrameSequence(sequence1);
placeSprite(rDemonSprite[i], wallLayer);
}
for (int i = 0; i < foodNum; i++) {
foodSprite[i] = new Sprite(Image.createImage("/res/food.png"),
25, 26);
foodSprite[i].setFrameSequence(sequence2);
placeSprite(foodSprite[i], wallLayer);
}
for (int i = 0; i < yDemonNum; i++) {
yDemonSprite[i] = new Sprite(Image.createImage("/res/yellow.png"),
24, 22);
yDemonSprite[i].setFrameSequence(sequence1);
placeSprite(yDemonSprite[i], wallLayer);
}
for (int i = 0; i < birdNum; i++) {
birdSprite[i] = new ChaseSprite(Image.createImage("/res/bird.png"),
24, 24, 5, null, false, playerSprite, 1
);
placeSprite(birdSprite[i], wallLayer);
}
for (int i = 0; i < elephantNum; i++) {
elephantSprite[i] = new ChaseSprite(Image.createImage(
"/res/elephant.png"),
24, 28, 3, wallLayer, true,
playerSprite, 3);
placeSprite(elephantSprite[i], wallLayer);
}
BelialSprite = new ChaseSprite(Image.createImage("/res/Belial.png"),
33, 44, 1, wallLayer,
true, playerSprite, 10);
BelialSprite.setPosition( (wallLayer.getWidth() -
BelialSprite.getWidth()) / 2,
(wallLayer.getHeight() -
BelialSprite.getHeight()) / 2);
}
catch (IOException e) {
System.err.println("Failed loading images!");
}
// Create the layer manager
manager = new LayerManager();
manager.append(playerSprite);
//manager.append(BelialSprite);
if (score > 100){
manager.append(BelialSprite);
}
for (int i = 0; i < trapNum; i++) {
manager.append(trapSprite[i]);
}
for (int i = 0; i < foodNum; i++) {
manager.append(foodSprite[i]);
}
for (int i = 0; i < rDemonNum; i++) {
manager.append(rDemonSprite[i]);
}
for (int i = 0; i < yDemonNum; i++) {
manager.append(yDemonSprite[i]);
}
for (int i = 0; i < birdNum; i++) {
manager.append(birdSprite[i]);
}
for (int i = 0; i < elephantNum; i++) {
manager.append(elephantSprite[i]);
}
manager.append(wallLayer);
manager.append(landLayer);
try {
/* is = getClass().getResourceAsStream("/res/background.mid");
musicPlayer = Manager.createPlayer(is, "audio/midi");
musicPlayer.prefetch();
musicPlayer.setLoopCount( -1);*/
InputStream is = getClass().getResourceAsStream("/res/score.wav");
scorePlayer = Manager.createPlayer(is, "audio/X-wav");
scorePlayer.prefetch();
is = getClass().getResourceAsStream("/res/ouch.wav");
hurtPlayer = Manager.createPlayer(is, "audio/X-wav");
hurtPlayer.prefetch();
is = getClass().getResourceAsStream("/res/ouch_05.wav");
hHurtPlayer = Manager.createPlayer(is, "audio/X-wav");
hHurtPlayer.prefetch();
is = getClass().getResourceAsStream("/res/Die.wav");
diePlayer = Manager.createPlayer(is, "audio/X-wav");
diePlayer.prefetch();
/* is = getClass().getResourceAsStream("/res/GameOver.wav");
gameoverPlayer = Manager.createPlayer(is, "audio/X-wav");
gameoverPlayer.prefetch();*/
}
catch (IOException ioe) {
}
catch (MediaException me) {
}
newGame();
sleeping = false;
Thread t = new Thread(this);
t.start();
}
public void stop() {
//musicPlayer.close();
scorePlayer.close();
hurtPlayer.close();
//gameoverPlayer.close();
sleeping = true;
writeHiScores();
}
public void run() {
Graphics g = getGraphics();
while (!sleeping) {
update();
draw(g);
}
try {
Thread.sleep(frameDelay);
}
catch (InterruptedException ie) {}
}
private void update() {
if (gameOver) {
int keyState = getKeyStates();
if ( (keyState & FIRE_PRESSED) != 0) {
newGame();
}
return;
}
int keyState = getKeyStates();
int xMove = 0, yMove = 0;
if ( (keyState & LEFT_PRESSED) != 0) {
xMove = -4;
playerSprite.setFrameSequence(sequenceLfet);
}
else if ( (keyState & RIGHT_PRESSED) != 0) {
xMove = 4;
playerSprite.setFrameSequence(sequenceRight);
}
if ( (keyState & UP_PRESSED) != 0) {
yMove = -4;
playerSprite.setFrameSequence(sequenceUp);
}
else if ( (keyState & DOWN_PRESSED) != 0) {
yMove = 4;
playerSprite.setFrameSequence(sequenceDown);
}
if (xMove != 0 || yMove != 0) {
manager.setViewWindow(xView + xMove, yView + yMove, getWidth(),
getHeight() - infoBar.getHeight());
playerSprite.move(xMove, yMove);
}
if (playerSprite.collidesWith(wallLayer, true)) {
manager.setViewWindow(xView, yView, getWidth(),
getHeight() - infoBar.getHeight());
playerSprite.move( -xMove, -yMove);
}
else {
xView += xMove;
yView += yMove;
}
for (int i = 0; i < rDemonNum; i++) {
rDemonSprite[i].nextFrame();
if (playerSprite.collidesWith(rDemonSprite[i], true)) {
try {
scorePlayer.start();
}
catch (MediaException me) {
}
score += 10;
placeSprite(rDemonSprite[i], wallLayer);
}
}
for (int i = 0; i < trapNum; i++) {
trapSprite[i].nextFrame();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -