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

📄 playscreen.java

📁 一款运行于手机的Java游戏神灯传奇源代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        changeColorDelay = 3;
        g.setColor(0xffffff);
      } else {
        g.setColor(0xff0000);
      }
      //#if MOT_E398 || MOT_V600 || MOT_L7
      //# g.drawString(confirmButton, ThreadCanvas.SCREEN_WIDTH - buttonWidth, ThreadCanvas.SCREEN_HEIGHT - fontHeight, 0);
      //#else
        //#if MOT_E2
        //# g.drawString(confirmButton, ThreadCanvas.SCREEN_WIDTH - buttonWidth, ThreadCanvas.SCREEN_HEIGHT - fontHeight - 20, 0);
        //#else
        g.drawString(confirmButton, 0, ThreadCanvas.SCREEN_HEIGHT - fontHeight, 0);
        //#endif
      //#endif
      break;
    case PLAY_STATE:
      stage.render(g);
      if (!boss.isDead()) {
        boss.render(g);
      }
      // PLAYER

      player.render(g);


      // 宝物
      MovingObject treasure = treasurePool.getFirstUsed();
      while (treasure != null) {
        MovingObject next = treasure.getNextLinked();
        drawTreasure(g, treasure);
        treasure = next;
      }

      //玩家子弹
      MovingObject bullet = bulletPool.getFirstUsed();
      while (bullet != null) {
        MovingObject next = bullet.getNextLinked();
        player.drawBullet(g, bullet);
        bullet = next;
      }

      //敌人子弹
      MovingObject eBullet = enemyBulletPool.getFirstUsed();
      while (eBullet != null) {
        MovingObject next = eBullet.getNextLinked();
        boss.drawBullet(g, eBullet);
        eBullet = next;
      }
      //敌人
      Enemy enemy = (Enemy)enemyPool.getFirstUsed();
      while (enemy != null) {
        MovingObject next = enemy.getNextLinked();
        enemy.render(g);
        enemy = (Enemy)next;
      }
      drawBomb(g);
      drawUI(g);
      if(hasPass)
      {
        pass++;
        if(pass>=60)
        {
          Control.oldGunLevel = player.getGunLevel();
          Control.oldScore = player.getScore();
          Control.show(Control.PASS_STAGE);
          Enemy.bossImageSet = null;
          hasPass = false;
          pass = 0;
        }
      }
      if(player.getLife()==0)
      {
        pass++;
        g.setColor(0x000000);
        g.fillRect(0, 0, 240, pass*2);
        //#if NOK_7370 || MOT_E2
        //# g.fillRect(0, 320-pass*2, 240, pass*2);
        //#else
          //#if NOK_7260 || NOK_7210 || NOK_6101
          //# g.fillRect(0, 160-pass*2, 240, pass*2);
          //#else
          g.fillRect(0, 208-pass*2, 240, pass*2);
          //#endif
        //#endif
        if(pass>=60)
        {
          Player.playerImageSet = null;
          Player.bombImageSet = null;
          Player.headImageSet = null;
          Enemy.bossImageSet = null;
          PlayScreen.state = 0;
          Control.oldGunLevel = 1;
          Control.stage = 1;
          Control.oldScore = 0;
          pass = 0;
          Control.show(Control.TITLE_STAGE);
        }
      }
      break;
    }
  }

  /**
   * 绘制游戏中出现的宝物
   * @param g
   * @param treasureArg
   */
  public void drawTreasure(Graphics g, MovingObject treasureArg) {
    treasureImageSet.draw(g, treasureArg.currentState,
        treasureArg.currentFrame, treasureArg.getLocationX(),
        treasureArg.getLocationY());
  }
  /**
   * 绘制灵弹的相应表像
   *
   * @param g
   */
  private void drawBomb(Graphics g) {
    g.setColor(0xFFBA00);
    int tempX = BOMB_POINT_START_X;
    for (int i = 0; i < player.getBombPoint(); i++) {
      g.fillRect(tempX, BOMB_POINT_START_Y, BOMB_POINT_WIDTH,
          BOMB_POINT_HEIGHT);
      tempX += BOMB_POINT_SEPERATE;
    }
    tempX = BOMB_START_X;
    for (int i = 0; i < player.getBombNum(); i++) {
      g.drawImage(bombImage, tempX, BOMB_START_Y, 0);
      tempX += BOMB_WIDTH;
    }
  }

  private void drawUI(Graphics g) {
    g.setColor(0x00ff00);
    g.drawImage(ui,0,0,0);
    //#if NOK_7210 || NOK_7260 || NOK_6101
    //# g.fillRect(35,3,player.energy/3,4);
    //# player.headImageSet.draw(g,0,Control.currentPlayer,15,2);
    //# if(player.getLife()>=9){player.setLife(9);}
    //# player.numberImageSet.draw(g,0,player.getLife(),28,2);
    //# g.setColor(0xffffff);
    //# player.numberImageSet.draw(g,0,player.getScore()%100000/10000,91,2);
    //# player.numberImageSet.draw(g,0,player.getScore()%10000/1000,97,2);
    //# player.numberImageSet.draw(g,0,player.getScore()%1000/100,103,2);
    //# player.numberImageSet.draw(g,0,player.getScore()%100/10,109,2);
    //# player.numberImageSet.draw(g,0,player.getScore()%10,115,2);
    //#else
      //#if NOK_7370 || MOT_E2
      //# g.fillRect(67,6,player.energy/2,4);
      //# player.headImageSet.draw(g,0,Control.currentPlayer,30,3);
      //# if(player.getLife()>=9){player.setLife(9);}
      //# player.numberImageSet.draw(g,0,player.getLife(),48,4);
      //# g.setColor(0xffffff);
      //# player.numberImageSet.draw(g,0,player.getScore()/100000,170,3);
      //# player.numberImageSet.draw(g,0,player.getScore()%100000/10000,176,3);
      //# player.numberImageSet.draw(g,0,player.getScore()%10000/1000,182,3);
      //# player.numberImageSet.draw(g,0,player.getScore()%1000/100,188,3);
      //# player.numberImageSet.draw(g,0,player.getScore()%100/10,194,3);
      //# player.numberImageSet.draw(g,0,player.getScore()%10,200,3);
      //#else
        //#if NOK_6230i
        //# g.fillRect(60,6,player.energy/2,4);
        //# player.headImageSet.draw(g,0,Control.currentPlayer,25,3);
        //# if(player.getLife()>=9){player.setLife(9);}
        //# player.numberImageSet.draw(g,0,player.getLife(),43,4);
        //# g.setColor(0xffffff);
        //# player.numberImageSet.draw(g,0,player.getScore()/100000,140,3);
        //# player.numberImageSet.draw(g,0,player.getScore()%100000/10000,146,3);
        //# player.numberImageSet.draw(g,0,player.getScore()%10000/1000,152,3);
        //# player.numberImageSet.draw(g,0,player.getScore()%1000/100,158,3);
        //# player.numberImageSet.draw(g,0,player.getScore()%100/10,164,3);
        //# player.numberImageSet.draw(g,0,player.getScore()%10,170,3);
        //#else
        g.fillRect(50,6,player.energy/2,4);
        player.headImageSet.draw(g,0,Control.currentPlayer,20,3);
        if(player.getLife()>=9){player.setLife(9);}
        player.numberImageSet.draw(g,0,player.getLife(),38,4);
        g.setColor(0xffffff);
        player.numberImageSet.draw(g,0,player.getScore()/100000,130,3);
        player.numberImageSet.draw(g,0,player.getScore()%100000/10000,136,3);
        player.numberImageSet.draw(g,0,player.getScore()%10000/1000,142,3);
        player.numberImageSet.draw(g,0,player.getScore()%1000/100,148,3);
        player.numberImageSet.draw(g,0,player.getScore()%100/10,154,3);
        player.numberImageSet.draw(g,0,player.getScore()%10,160,3);
        //#endif
      //#endif
    //#endif
  }

  protected void keyPressed(int keycode) {
    switch (state) {
    case START_STATE:
      switch (keycode) {
      case KeyMap.FIRE:
        //#if MOT_E398 || MOT_V600 || MOT_L7 || MOT_E2
        //# case KeyMap.RIGHT_SOFT:
        //#else
      case KeyMap.LEFT_SOFT:
        //#endif
//        PlayScreen.state = 0;
        if (Control.getStage() > 1) {
          state = PLAY_STATE;
          stage.initial(Control.getStage());
        } else {
          stage.initial(Control.getStage());
          state = PLAY_STATE;
        }
        player.setScore(Control.oldScore);
        break;
      }
      break;
    case PLAY_STATE:
      switch (keycode) {
      case KeyMap.UP:
        setControlKeys(true, false, false, false);
        break;
      case KeyMap.DOWN:
        setControlKeys(false, true, false, false);
        break;
      case KeyMap.LEFT:
        setControlKeys(false, false, true, false);
        break;
      case KeyMap.RIGHT:
        setControlKeys(false, false, false, true);
        break;
      case KeyMap.NUM0:
        isKeyFire = true;
        break;
        //#if MOT_E398 || MOT_V600 || MOT_L7 || MOT_E2
        //# case KeyMap.RIGHT_SOFT:
        //#else
      case KeyMap.LEFT_SOFT:
      //#endif
        Control.show(Control.MENU_STAGE);
        break;
      case KeyMap.NUM1:
      case KeyMap.NUM3:
        player.fireBomb();
        break;
      }
      break;
    }

  }

  protected void keyReleased(int keyCode) {
    switch (keyCode) {
    default:
      setControlKeys(false, false, false, false);
      break;
    case KeyMap.UP:
      isKeyUp = false;
      break;
    case KeyMap.DOWN:
      isKeyDown = false;
      break;
    case KeyMap.LEFT:
      isKeyLeft = false;
      break;
    case KeyMap.RIGHT:
      isKeyRight = false;
      break;
    case KeyMap.NUM0:
      isKeyFire = false;
      break;
    }

  }

  public void playGameStage() {
    if (isKeyUp)
      player.keyUp();
    if (isKeyDown)
      player.keyDown();
    if (isKeyLeft)
      player.keyLeft();
    if (isKeyRight) {
      player.keyRight();
    }
    if (isKeyFire) {
      delayChangeAuto++;
      if (delayChangeAuto == 15) {
        delayChangeAuto = 0;
        player.changeAuto();
      }
    } else {
      delayChangeAuto = 0;
    }
    if (!isKeyLeft && !isKeyRight) {
      player.releaseFire();
    }
    collisionDetection();

    // PLAYER

    player.cycle();
    int posX = player.getLocationX() + player.getWidth() / 2;
    int posY = player.getLocationY() + player.getHeight() / 2;

    // BOSS
    if (!boss.isDead()) {
      boss.cycle(posX, posY);
    }
    // 宝物
    MovingObject treasure = getTreasurePool().getFirstUsed();
    while (treasure != null) {
      MovingObject next = treasure.getNextLinked();
      treasure.cycle();
      treasure.animateCycle();
      if (treasure.getLocationX() < 0 || treasure.getLocationX()-10 > ThreadCanvas.SCREEN_WIDTH) {
        treasure.setSpeedX(-treasure.getSpeedX());
      } else if (treasure.getLocationY() - 10 < PLAY_START_Y || treasure.getLocationY() > PLAY_END_Y) {
        treasure.setSpeedY(-treasure.getSpeedY());
      }
      if (treasure.isDestroy() && treasure.getTotalCycles() > 3) {
        releaseTreasure(treasure);
      }
      treasure = next;
    }

//		子弹
    MovingObject bullet = getBulletPool().getFirstUsed();
    while (bullet != null) {
      MovingObject next = bullet.getNextLinked();
      if(bullet.getLocationX() < 0 || bullet.getLocationX() > ThreadCanvas.SCREEN_WIDTH
          || bullet.getLocationY() - 10 < 0 || bullet.getLocationY() >ThreadCanvas.SCREEN_HEIGHT)
      {
        releaseBullet(bullet);
      }
      bullet.cycle();
      bullet.animateCycle();
      bullet = next;
    }
//		敌人子弹
    MovingObject eBullet = getEnemyBulletPool().getFirstUsed();
    while (eBullet != null) {
      MovingObject next = eBullet.getNextLinked();
      eBullet.cycle();
      eBullet.animateCycle();
      if(eBullet.getLocationX() < 0 || eBullet.getLocationX() > ThreadCanvas.SCREEN_WIDTH
          || eBullet.getLocationY() < 0 || eBullet.getLocationY() >ThreadCanvas.SCREEN_HEIGHT)
      {
        releaseEnemyBullet(eBullet);
      }
      eBullet = next;
    }

⌨️ 快捷键说明

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