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

📄 game.java

📁 j2me简单实例,j2me教程加源码,希望大家喜欢
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                break;
              case BONUS_BANANA:
                bonusVector.addElement(new Bonus(imgBonus[5],
                                                 BONUS_BANANA, i, j));
                break;
              case TOOL_BAT:
                toolVector.addElement(new Tool(imgTool[0],
                                               TOOL_BAT, i, j));
                break;
              case TOOL_BOTTLE:
                toolVector.addElement(new Tool(imgTool[1],
                                               TOOL_BOTTLE, i, j));
                break;
              case TOOL_MOTOHAT:
                toolVector.addElement(new Tool(imgTool[2],
                                               TOOL_MOTOHAT, i, j));
                break;
              case ENEMY_PIG:
                enemyVector.addElement(new Enemy(imgxEnemy[0],
                                                 ENEMY_PIG, i, j));
                break;
              case ENEMY_PANDA:
                enemyVector.addElement(new Enemy(imgxEnemy[1],
                                                 ENEMY_PANDA, i, j));
                break;
              case ENEMY_FROG:
                enemyVector.addElement(new Enemy(imgxEnemy[2],
                                                 ENEMY_FROG, i, j));
                break;
              case FRAISE_DB:
                fraiseVector.addElement(new Fraise(imgFraise[0],
                    FRAISE_DB, i, j));
                break;
              case FRAISE_KXT:
                fraiseVector.addElement(new Fraise(imgFraise[1],
                    FRAISE_KXT, i, j));
                break;
              case FRAISE_LG:
                fraiseVector.addElement(new Fraise(imgFraise[2],
                    FRAISE_LG, i, j));
                break;
              case FRAISE_LJT:
                fraiseVector.addElement(new Fraise(imgFraise[3],
                    FRAISE_LJT, i, j));
                break;
              case FRAISE_LT:
                fraiseVector.addElement(new Fraise(imgFraise[4],
                    FRAISE_LT, i, j));
                break;
              case FRAISE_XZ:
                fraiseVector.addElement(new Fraise(imgFraise[5],
                    FRAISE_XZ, i, j));
                break;
              case FRAISE_XSD:
                fraiseVector.addElement(new Fraise(imgFraise[6],
                    FRAISE_XSD, i, j));
                break;
              case FRAISE_GGP:
                fraiseVector.addElement(new Fraise(imgFraise[7],
                    FRAISE_GGP, i, j));
                break;
            }
          }
        }
      }
      System.out.println("OK4");
      loadingGuage2++;
    }
    else if (loadingGuage2 == 4) {
      if (m_ReadyAnimation == null) {
        m_ReadyAnimation = new PieceSprite(loadImage(IMAGE_READY),
                                           RES_PATH + "ready.bin",
                                           (short) 100, true);
        m_ReadyAnimation.setAnimation(0, false);
      }

      //初始值
      MacroSpeed = 5; // 地图移动速度恢复为5
      totalBonus = 0; // 总得分为0
      isPass = false; // 未过关
      SaveData = new byte[2]; //初始化存储数组
      mapBase = 0; // 基准为0
      fgRockWidth = 2 * SCREEN_WIDTH;
      //三朵云彩的初始值
      bgCloudWidth[0] = 20;
      bgCloudWidth[1] = 80;
      bgCloudWidth[2] = 150;
      currentSnow = randSnowCount.nextInt();
      bgBuildWidth = 0;
      wordWidth = 0;
      System.out.println("OK5");
      loadingGuage2++;
    }
  }

  /**
   * 系统方法:paint()
   * @param g Graphics
   */
  long timePassed, m_prevFrameTime;
  long beginTime = System.currentTimeMillis();
  protected void paint(Graphics g) {
    //#if MOTO_E680
    //#else
    backG = g;
    //#endif
    timePassed = System.currentTimeMillis() - m_prevFrameTime;
    switch (gameState) {
      case STATE_LOGO1:
        drawLogo1(backG);
        break;
      case STATE_LOGO2:
        drawLogo2(backG);
        break;
      case STATE_COVER:
        drawCover(backG);
        break;
      case STATE_LOADING:
        drawLoading(backG);
        break;
      case STATE_DEMO:
        drawDemo(backG);
        break;
      case STATE_MAINMENU:
        doMainMenuState(backG);
        break;
      case STATE_GAMEMENU:
        doGameMenuState(backG);
        break;
      case STATE_PAUSE:
        doPauseMenu(backG);
        break;
      case STATE_GAME_SAVING:
        doGameSaving(backG);
        break;
      case STATE_OPTIONSMENU:
        doOptionsMenuState(backG);
        break;
      case STATE_HELP:
        doHelpState(backG);
        break;
      case STATE_CREDITS:
        doCreditsState(backG);
        break;
      case STATE_GAMEREADY:
        drawReady(backG);
        break;
      case STATE_GAME:
        doGameState(backG);
        break;
      case STATE_INIT:
        doInitState(backG);
        break;
      case STATE_END:
        doEndState(backG);
        break;
    }
//        m_prevFrameTime += timePassed;
//
//        int POSY = 160;
//        backG.setClip(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
//        backG.setColor(0x00FF00);
//        backG.drawString("F: " + (1000 / (timePassed + 1)), 65, POSY, 20);
//        backG.drawString("M: " + Runtime.getRuntime().freeMemory() / 1024, 0, POSY, 20);
//        backG.drawString("TIME:" + (System.currentTimeMillis() - beginTime) / 1000, 100,
//                POSY + 20, 20);
    //#if MOTO_E680
//#         g.drawRegion(backImage, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, PieceSprite.TRANS_ROT270, 0, 0,
//#                 Graphics.TOP | Graphics.LEFT);
    //#endif
  }

  public void doInitState(Graphics g) {
    g.setColor(0);
    g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    g.setColor(115, 200, 6);
    g.fillArc(SCREEN_WIDTH / 2 - 40, SCREEN_HEIGHT / 2 - 40, 80, 80, 0,
              72 * loadingGuage2);
    g.setColor(0);
    g.fillArc(SCREEN_WIDTH / 2 - 20, SCREEN_HEIGHT / 2 - 20, 40, 40, 0,
              72 * loadingGuage2);
    g.setColor(0xFFFFFF);
    ToolBox.drawOutlinedText(g, m_MenuFont, HINT[12],
                             SCREEN_WIDTH / 2,
                             SCREEN_HEIGHT / 2,
                             Graphics.VCENTER | Graphics.HCENTER);
//        try {
//            Thread.sleep(1000);
//        } catch (InterruptedException ex) {
//            ex.printStackTrace();
//        }
  }

  public void drawDemo(Graphics g) {
    g.setColor(0);
    g.setFont(m_CreditsFont);
    g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    drawDemoAnimation(g);
    g.setColor(COLOR_ACTIVE);
    if (m_DemoAnimation.currentFrameNr <= 6) {
      g.drawString(HINT[4], SCREEN_WIDTH / 2, 10,
                   Graphics.HCENTER | Graphics.TOP);
    }
    else if (m_DemoAnimation.currentFrameNr >= 7
             && m_DemoAnimation.currentFrameNr <= 17) {
      g.drawString(HINT[5], SCREEN_WIDTH / 2, 10,
                   Graphics.HCENTER | Graphics.TOP);
    }
    else if (m_DemoAnimation.currentFrameNr >= 18) {
      g.drawString(HINT[6],
                   SCREEN_WIDTH / 2, 10, Graphics.HCENTER | Graphics.TOP);
    }
  }

  public void doGameState(Graphics g) {
    if (bSelectKeyDown == false && bGameMenuAnimationOver()) {
      drawBackground(g); // 画背景
      drawBonus(g); // 画奖品
      drawTool(g); // 画工具
      drawFraise(g); // 画障碍物
      drawEnemy(g); // 画敌人
      drawRole(g); // 画角色
      drawSkateboard(g); // 画滑板
      drawForeground(g); // 画前景
      drawSnow(g); //画雨雪
      drawDecoration(g); // 画装饰
      drawString(g); // 画提示语
    }
    if (bSelectKeyDown && bGameMenuAnimationOver()) {
      changeState(STATE_PAUSE);
    }
  }

  public void doEndState(Graphics g) {
    g.setClip(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    g.setColor(0);
    g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    thisRole.player.setNextFrame();
    thisRole.player.paint(g, 0, SCREEN_HEIGHT / 2, PieceSprite.TRANS_NONE);
    g.setColor(0xFFFFFF);
    ToolBox.drawOutlinedText(g, m_CreditsFont, HINT[3],
                             SCREEN_WIDTH / 2, 20,
                             Graphics.HCENTER | Graphics.VCENTER);
  }

  public void drawString(Graphics g) {
    if (thisRole.getRoleStatus() == ROLESTATUS_INJURE) {
      g.setClip(SCREEN_WIDTH / 2 - wordWidth,
                (SCREEN_HEIGHT - m_MenuFont.getHeight()) / 2 - 2,
                wordWidth * 2, m_MenuFont.getHeight() + 4);
      wordWidth += 4;
      ToolBox.drawOutlinedText(g, m_MenuFont, HINT[0], SCREEN_WIDTH / 2,
                               SCREEN_HEIGHT / 2,
                               Graphics.HCENTER | Graphics.VCENTER);
    }
    else {
      if (MacroSpeed == 0) {
        if (totalBonus < EVERYBONUS[currentScreen][currentRole]) {
          g.setClip(SCREEN_WIDTH - 20 - wordWidth,
                    (SCREEN_HEIGHT - m_MenuFont.getHeight()) / 2 - 2,
                    wordWidth, m_MenuFont.getHeight() + 4);
          wordWidth += 6;
          ToolBox.drawOutlinedText(g, m_MenuFont, HINT[1], SCREEN_WIDTH / 2,
                                   SCREEN_HEIGHT / 2,
                                   Graphics.HCENTER | Graphics.VCENTER);
        }
        else {
          g.setClip(20, (SCREEN_HEIGHT - m_MenuFont.getHeight()) / 2 - 2,
                    wordWidth, m_MenuFont.getHeight() + 4);
          wordWidth += 6;
          ToolBox.drawOutlinedText(g, m_MenuFont, HINT[2], SCREEN_WIDTH / 2,
                                   SCREEN_HEIGHT / 2,
                                   Graphics.HCENTER | Graphics.VCENTER);
        }
      }
    }
    g.setClip(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
  }

  /**
   * 画右键菜单
   * @param g Graphics
   */
  protected void doPauseMenu(Graphics g) {
    int currPosition = 0;
    g.setClip(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    g.setColor(0);
    g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    g.setColor(COLOR_ACTIVE);

    drawGameMenuAnimation(g);
    if (bSelectKeyDown == false && bGameMenuAnimationOver()) {
      drawSelector(MENU_GAME_PAUSE, g);
      /* menu options */
      /// PORTING - #graphics
      for (int i = 0; i < MENU_GAME_PAUSE.length; i++) {
        ToolBox.drawOutlinedText(g, m_MenuFont, MENU_GAME_PAUSE[i],
                                 SCREEN_WIDTH / 2,
                                 MENU_Y +
                                 (currPosition++ * MENU_GAP));
      }
    }
    if (bSelectKeyDown && bGameMenuAnimationOver()) {
      switch (m_Position) {
        case 0:
          WriteData();
          changeState(STATE_GAME_SAVING);
          break;
        case 1:
          changeState(STATE_GAME);
          m_Paused = false;
          break;
        case 2:
          m_Position = 0;
          exit();
          changeState(STATE_MAINMENU);
          break;
      }
    }
  }

  /**
   * 存储完毕
   * @param g Graphics
   */
  protected void doGameSaving(Graphics g) {
    int currPosition = 0;
    g.setClip(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    g.setColor(0);
    g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    g.setColor(COLOR_ACTIVE);
    drawGameMenuAnimation(g);
    if (bSelectKeyDown == false && bGameMenuAnimationOver()) {
      ToolBox.drawOutlinedText(g, m_MenuFont, MSG_SAVING,
                               SCREEN_WIDTH / 2,
                               (SCREEN_HEIGHT / 2) +
                               (currPosition++ * SAVERESUME_GAP));
    }
    if (bSelectKeyDown && bGameMenuAnimationOver()) {
      changeState(STATE_PAUSE);
    }
  }

  /**
   * bGameMenuAnimationOver
   * 检测菜单动画是否播放完成
   *
   * @return boolean
   */
  public boolean bGameMenuAnimationOver() {
    if (m_MenuFrameAnimation.currentFrameNr ==
        m_MenuFrameAnimation.currentAnimation.length - 1) {
      return true;
    }
    else {
      return false;
    }
  }

  public boolean bCoverAnimationOver() {
    if (m_CoverAnimation.currentFrameNr ==

⌨️ 快捷键说明

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