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

📄 engine.java

📁 小游戏,MIDP2.0,非常不错的!请试用下!
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
// 游戏引擎类

public class Engine
    extends Thread {

// 状态常量
  protected static final int STATE_SPLASH = 0; //显示闪屏
  protected static final int STATE_LOAD = 1; //继续游戏
  protected static final int STATE_INTRO = 2; //说明
// 菜单
  protected static final int STATE_MENU = 3; //主菜单
  protected static final int STATE_ISDIE=4444;
// 玩游戏
 // protected static final int STATE_PLAYING = 5; //游戏中
  //protected static final int STATE_STAGE1 = 51;
  //protected static final int STATE_STAGE2 = 52;
  protected static final int STATE_WIN = 53; //胜利
  protected static final int STATE_GAMEOVER = 54; //失败

  //protected static final int STATE_HELP = 6;//
  //protected static final int STATE_SETTING = 7;
  //protected static final int STATE_ABOUT = 8;
  //protected static final int STATE_GAMEOVER = 9;

  protected static final int STATE_RESTARTGAME = 11;
  protected static final int STATE_PAUSE = 12;
  protected static final int STATE_OPEN = 13;
  protected static final int STATE_NEW = 14; //开始游戏
  protected static final int STATE_PLAY = 15;
  protected static final int STATE_SAVE = 16;
  protected static final int STATE_PLAYMENU = 17; //游戏中途菜单
  protected static final int STATE_MENUSELECT = 18;
  protected static final int STATE_COPYRIGHT = 19;
  protected static final int STATE_PLAYINTRO = 20;
  protected static final int STATE_PLAYCOPYRIGHT = 21;
  protected static final int STATE_VOLUME = 22;
  //protected static final int STATE_NEXT = 23;
  protected static final int STATE_PASS = 24;
  protected static final int STATE_SCORE = 25; //得分记录score
  protected static final int STATE_GRADE = 26; //游戏的难度
  protected static final int STATE_LOSE=27;

  // 主线程
  private Thread threadRunner;
  private CanoeingMIDlet canoeingMIDlet;
  private StageCanvas stageCanvas;
  private int runSleep=100;//线程值

  // 当前状态变量
  public int gameState = 0;
  // 上一个状态变量
  public int lastGameState = 0;
  // 第一次暂停的时间
  private long lStopWatchStartTime = 0;
  // 游戏主人公

  // private Sprite player;

  // 载入游戏的上一个状态变量
  public int lastLoadGameState = 0;

  // 构造函数
  public Engine() {
    gameState = STATE_SPLASH; //打开游戏  进度条
    threadRunner = new Thread(this);
  }

  public void setStageCanvas(StageCanvas canvas) {
    stageCanvas = canvas;
  }

  /**
    public Engine(StageCanvas canvas) {
    }
   */
  // 设置游戏当前状态
  private void setGameState(int state) {
    gameState = state;
  }

  // 取得游戏的当前状态

  public int getGameState() {

    return this.gameState;
  }

  // 取得游戏的上一个状态
  public int getLastGameState() {
    return this.lastGameState;

  }

  // 重置停止等待的时间
  protected void resetStopWatch() {
    lStopWatchStartTime = System.currentTimeMillis();
  }

  // 取得停止的时间
  protected long getStopWatchTime() {
    return System.currentTimeMillis() - lStopWatchStartTime;
  }

  // 线程休眠mS
  protected void runnerSleep(int ms) {
    try {
      threadRunner.sleep(ms);
    }
    catch (Exception exception) {}

  }

  // 开始游戏
  public void start() {
    if (threadRunner == null) {
      threadRunner = new Thread(this); //this
    }
    threadRunner.start();

  }

  // 按键控制
  protected void keyController(int key_code) { //, int game_action) {

    switch (gameState) {
      case STATE_SPLASH: //Bbmf-image
         break;

      case STATE_INTRO: // 在游戏介绍
      //  if (key_code == 53) {
         if (key_code == -7) {
          if (lastLoadGameState == Engine.STATE_PLAYMENU) {//游戏中途菜单介绍
            gameState = Engine.STATE_PLAYMENU;
          }
          else {
            gameState = Engine.STATE_MENU;
          }
          this.stageCanvas.isRepaint = true;
        }
        break;

      case STATE_SCORE: //得分记录
      //  if (key_code == 53) {
        if (key_code == -7) {
          if (lastLoadGameState == Engine.STATE_PLAYMENU) {
            gameState = Engine.STATE_PLAYMENU;
          }
          else {
            gameState = Engine.STATE_MENU;
          }
          this.stageCanvas.isRepaint = true;
        }
        break;

      case STATE_COPYRIGHT: // 厂商咨询
      //  if (key_code == 53) {
        if (key_code == -7) {
          if (lastLoadGameState == Engine.STATE_PLAYMENU) {
            gameState = Engine.STATE_PLAYMENU;
          }
          else {
            gameState = Engine.STATE_MENU;
          }
          this.stageCanvas.isRepaint = true;
        }
        break;

//********************************************************************************************
      case STATE_MENU: //按上下方向键移动菜单,按确定键选择菜单项

        //  this.lastLoadGameState = STATE_MENU;
        int menuSelected = stageCanvas.getMenuIndex();

        switch (key_code) {
          case -1: //key_up
            if (menuSelected == 0)
              stageCanvas.setMenuIndex(5);
            else {
              menuSelected--;
              stageCanvas.setMenuIndex(menuSelected);
            }
            break;
          case -2: //key_down
            if (menuSelected == 5)
              stageCanvas.setMenuIndex(0);
            else {
              menuSelected++;
              stageCanvas.setMenuIndex(menuSelected);
              //  System.out.println("menuSelected is :" + menuSelected);

            }
            break;

        //  case 53: //  5号键
            case -6://左软键
            switch (menuSelected) {
              case 0:

                gameState = Engine.STATE_GRADE;
                break;

              case 1: //
                gameState = Engine.STATE_INTRO; //介绍说明
                 break;

              case 2: //
                gameState = Engine.STATE_SCORE; //得分记录
                break;

              case 3: //
                gameState = Engine.STATE_VOLUME; //声音开关
                 break;
              case 4:
                gameState = Engine.STATE_COPYRIGHT; //厂商咨询
                break;

              case 5: //退出游戏
                CanoeingMIDlet.quitApp();
                break;
            }
            break;
        }
        this.stageCanvas.isRepaint = true;
        break;
//*******************************************************************************************************
      case STATE_NEW: //开始游戏

        switch (key_code) {
          case -7://右软键
            gameState = Engine.STATE_PLAYMENU; //游戏中途副菜单
            break;
         //   case 53:
           //   gameState=Engine.STATE_NEW;
            ///  System.out.println("this is moving stone!");
            //  break;
        }

      //  this.stageCanvas.stoneY=120;
      this.stageCanvas.isRepaint = true;


        break;

      case STATE_PLAY: //游戏进行中
        switch (key_code) {
        //  case 52://4号键
          case -3:
            stageCanvas.canKey = 1;

            break;
         //  case 54://6号键
          case -4:
            stageCanvas.canKey = 2;
            break;

          case -7://右软键
            gameState = Engine.STATE_PLAYMENU; //游戏中途副菜单
            break;


          case 35://# --pause
             gameState=Engine.STATE_PAUSE;
            break;
        }
        this.stageCanvas.isRepaint = true;
        break;

 //*****************************************************
  //#   pause
      case STATE_PAUSE:
        switch (key_code) {

⌨️ 快捷键说明

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