⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 foundcanvas.java

📁 用Kjava写的一个简单的小游戏!供初学者研究研究
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -