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

📄 game.java

📁 孤单惊魂
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
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 Game
    extends GameCanvas implements Runnable, CommandListener {
  private static Displayable instance;
  private Command pauseCommand = new Command("暂停", Command.SCREEN, 2);
  private Command backCommand = new Command("返回", Command.EXIT, 1);
  private Command saveCommand = new Command("保存", Command.SCREEN, 3);
  private Command playCommand = new Command("继续", Command.SCREEN, 4);
  private Command musicOnCommand = new Command("打开音乐", Command.SCREEN, 5);
  private Command musicOffCommand = new Command("关闭音乐", Command.SCREEN, 6);
  private int[] hiScores = new int[5]; //存储分数的数组
  private int SCREEN_WIDTH = getWidth();
  private int SCREEN_HEIGHT = getHeight(); //获得屏幕大小,便于调用
  private int score, positionX = SCREEN_WIDTH, positionY = 15; //得分及跑动的文字的位置
  private int N = 10; //存档变量大小
  private int ring, ring1; //绝对防御
  private int playerX, playerY;
  private Random rand; //随机数
  private int frameDelay, time; //帧速及游戏限制时间
  private int pass = 0; //设置关卡
  private LayerManager layers;
  private int xView, yView;
  private TiledLayer floorLayer;
  private TiledLayer landLayer;
  private Image infoBar;
  private Image death; //死亡图片
  private Image over; //gameover图片
  private Image win; //过关图片
  private Image sucess; //通关图片
  private Sprite playerSprite; //玩家
  private Sprite GoodsSprite; //宝箱
  private Sprite BreadSprite; //面包
  private Sprite explosionSprite; //爆炸效果图
  private Sprite ringSprite; //无敌
  private int explosionCnt = 0;
  private Sprite[] mineSprite;
  private MonsterSprite[] monster2Sprite;
  private MonsterSprite[] monster1Sprite;
  private MonsterSprite bossSprite;
  private Player musicPlayer;
  private Player rescuePlayer;
  private Player minePlayer;
  private Player gameoverPlayer;
  private Player winPlayer;
  private int randX;
  private int randY;
  int[] saveMessage = new int[N]; //存档数组
  private boolean gameOver, pause, rightforward = true, volume, sleeping;
  private int energy, goodsSaved, dif, amount;
  synchronized public static Displayable getInstance() {
    instance = new Game();
    return instance;
  }
  public Game() {
    super(true);
    volume = Settings.volume1;
    addCommand(backCommand);
    addCommand(saveCommand);
    addCommand(pauseCommand);
    if (volume) {
      addCommand(musicOffCommand);
    }
    else {
      addCommand(musicOnCommand);
    }
    setCommandListener(this);
    rand = new Random(); // 初始化随机数
    //新游戏等级
    if (! (Navigator.resume)) {
      dif = Settings.difficulty;
    }
    //获取上次游戏等级
    else {
      int[] D = new int[N];
      readRecord(D);
      dif = D[5];
    }
    amount = 2 + dif; //按难度级别怪物数量计算
    mineSprite = new Sprite[amount];
    monster2Sprite = new MonsterSprite[amount];
    monster1Sprite = new MonsterSprite[amount];
    frameDelay = 50; // 设置帧速
    start();
  }

  public void start() {
    // 创建信息栏图像及背景层,精灵动画加载图片
    try {
      infoBar = Image.createImage("/InfoBar.png");
      death = Image.createImage("/Death.png");
      over = Image.createImage("/over.png");
      win = Image.createImage("/win.png");
      sucess = Image.createImage("/sucess.png");
      floorLayer = new TiledLayer(28, 28, Image.createImage("/f.png"), 20, 20);
      landLayer = new TiledLayer(28, 28, Image.createImage("/tu.png"), 20, 20);
    }
    catch (IOException e) {
      System.err.println("Failed loading images!");
    }
    int[] floorMap = {
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
        0, 0, 0, 0,
        0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4,
        0, 0, 0, 0,
        0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
        0, 0, 0, 0,
        0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4,
        0, 0, 0, 0,
        0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
        0, 0, 0, 0,
        0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4,
        0, 0, 0, 0,
        0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
        0, 0, 0, 0,
        0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4,
        0,
        0, 0, 0,
        0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
        0,
        0, 0, 0,
        0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4,
        0,
        0, 0, 0,
        0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
        0,
        0, 0, 0,
        0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4,
        0,
        0, 0, 0,
        0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
        0,
        0, 0, 0,
        0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4,
        0,
        0, 0, 0,
        0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
        0,
        0, 0, 0,
        0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4,
        0,
        0, 0, 0,
        0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
        0,
        0, 0, 0,
        0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4,
        0,
        0, 0, 0,
        0, 0, 0, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
        0,
        0, 0, 0,
        0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4,
        0,
        0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0,
        0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0,
        0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0,
        0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0,
        0, 0, 0
    };
    for (int i = 0; i < floorMap.length; i++) {
      int column = i % 28;
      int row = (i - column) / 28;
      floorLayer.setCell(column, row, floorMap[i]);
    }
    // 初始化游戏音乐播放
    try {
      InputStream is = getClass().getResourceAsStream("Music.mid");
      musicPlayer = Manager.createPlayer(is, "audio/midi");
      musicPlayer.prefetch();
      musicPlayer.setLoopCount( -1);
      is = getClass().getResourceAsStream("Rescue.mid");
      rescuePlayer = Manager.createPlayer(is, "audio/midi");
      rescuePlayer.prefetch();
      is = getClass().getResourceAsStream("Mine.wav");
      minePlayer = Manager.createPlayer(is, "audio/X-wav");
      minePlayer.prefetch();
      is = getClass().getResourceAsStream("GameOver.wav");
      gameoverPlayer = Manager.createPlayer(is, "audio/X-wav");
      gameoverPlayer.prefetch();
      is = getClass().getResourceAsStream("Win.wav");
      winPlayer = Manager.createPlayer(is, "audio/X-wav");
      winPlayer.prefetch();

    }
    catch (IOException ioe) {
    }
    catch (MediaException me) {
    }
    readHiScores(); //读取存储器玩家分数,以便于更新
    newGame(); //开始新游戏
    sleeping = false; // 启动线程
    pause = false; //暂停开关
    Thread t = new Thread(this);
    t.start();
  }

  private void newGame() {
    if (pass == 5) {
      pass = 0;
    }
    if (Navigator.resume) {
      int[] loadGame = new int[N];
      readRecord(loadGame);
      pass = loadGame[7];
    }
    // 初始化地图
    System.gc();
    try {
      Thread.sleep(500);
    }
    catch (Exception e) {}
    switch (pass) {
      case 0: //图一
        int[] landMap0 = {
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            1,
            1, 1, 1, 1,
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            1,
            1, 1, 1, 1,
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            1,
            1, 1, 1, 1,
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            1,
            1, 1, 1, 1,
            1, 1, 1, 1, 3, 4, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3,
            4,
            1,
            1, 1, 1,
            1, 1, 1, 1, 5, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            5,
            38,
            1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            6,
            1,
            1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 49, 50, 49, 50,
            0,
            0,
            6, 1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 16, 17, 7, 7, 7, 0, 0, 0, 51, 52, 51, 52, 51,
            52,
            0,
            0, 6, 1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50,
            0,
            0, 6,
            1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 0,
            0,
            6,
            1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 12, 0, 0, 36, 36, 36, 49, 50, 6, 0, 0, 0, 49,
            50,
            0,
            0, 6, 1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 11, 0, 0, 0, 0, 0, 51, 52, 49, 50, 0, 0, 51,
            52,
            0, 0,
            6, 1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 16, 17, 0, 0, 0, 0, 0, 0, 51, 52, 6, 0, 0, 0,
            0,
            0, 6,
            1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 18, 19, 7, 7, 7, 0, 0, 0, 0, 49, 50, 0, 0, 0,
            0,
            0, 6,
            1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 0, 0, 0,
            0,
            6,
            1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0,
            0,
            6, 1,
            1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 0, 39, 39, 49, 50, 0, 0, 0, 0, 0, 36, 0, 0, 0,
            0,
            0,
            6, 1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 0, 0, 0, 51, 52, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0,
            0,
            6,
            1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 14, 15, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0,
            6,
            1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 34, 35, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0,
            6,
            1, 1, 1, 1,
            1, 1, 1, 1, 6, 0, 0, 0, 0, 16, 17, 40, 0, 0, 0, 49, 50, 49, 50, 49,
            50,
            49,
            50, 6, 1, 1, 1, 1,
            1, 1, 1, 1, 3, 4, 0, 0, 0, 18, 19, 40, 0, 0, 0, 51, 52, 51, 52, 51,
            52,
            51,
            52, 6, 1, 1, 1, 1,
            1, 1, 1, 1, 5, 38, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
            7,
            36,
            1, 1, 1, 1,
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            1,
            1,
            1, 1, 1,
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            1,
            1,
            1, 1, 1,
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            1,
            1,
            1, 1, 1,
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            1,
            1,
            1, 1, 1

        };
        for (int i = 0; i < landMap0.length; i++) {
          int column = i % 28;
          int row = (i - column) / 28;
          landLayer.setCell(column, row, landMap0[i]);
        }
        break;
      case 1: //图二
        int[] landMap1 = {
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            1,
            1,
            1, 1, 1,
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            1,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -