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

📄 gamelogic.java~1~

📁 一个类似炸弹人的游戏(city hunter)
💻 JAVA~1~
📖 第 1 页 / 共 5 页
字号:
      case 21:
        m_iKey = KEY_L;
        break;
      case 22:
        m_iKey = KEY_R;
        break;

      case 1:
        m_iKey = KEY_UP;
        break;
      case 6:
        m_iKey = KEY_DOWN;
        break;
      case 2:
        m_iKey = KEY_LEFT;
        break;
      case 5:
        m_iKey = KEY_RIGHT;
        break;
        //  Key 0..9  //
      case 48:
      case 49:
      case 50:
      case 51:
      case 52:
      case 53:
      case 54:
      case 55:
      case 56:
      case 57:
      case 58:
        m_iKey = KEY_NUM - 48 + iKeyCode;
        break;

        //  Key #, *  //
      case 35:
        ToggleSound();
        m_iKey = KEY_NONE;
        break;
      case 42:
        ToggleVibration();
        m_iKey = KEY_NONE;
        break;
    }
    if (iKeyCode == getKeyCode(FIRE))
    {
      m_iKey |= (KEY_NUM + 5);
    }  */

  }

  public void keyReleased(int iKeyCode) {
    m_iKey = KEY_NONE;
  }

  //=======================//
  //  Toggle sound on/off  //
  //=======================//
  private static void ToggleSound() {
    m_bSoundOn = !m_bSoundOn;
    if (m_bSoundOn == true)
    {
      m_pEffect.PlayBackgroundSound();
    }
    else
    {
      m_pEffect.StopSound();
    }
  }

  //===========================//
  //  Toggle vibration on/off  //
  //===========================//
  private static void ToggleVibration() {
    m_bVibrateOn = !m_bVibrateOn;
    if (m_bVibrateOn == true)
    {
      m_pEffect.vibrate();
    }
  }

  //===============================//
  //  Save settings and quit game  //
  //===============================//
  private static void QuitGame() {
    try
    {
      m_pRecord.UpdateRecord(GetRecordString());
    }
    catch (Exception e)
    {
    }
    try
    {
      m_pRecord.CloseRecord();
    }
    catch (Exception e)
    {
    }
    m_pParent.QuitGame();
  }

  //============================//
  //  Init game to first level  //
  //============================//
  private static void InitGame() {
    System.gc();
    m_iLevel = 0;
    m_iScore = 0;
    SetLevel(m_iLevel);
  }

  //=========================//
  //  Setup level variables  //
  //=========================//
  private static void SetLevel(int iLevel) {

  }

  //========================//
  //  Add a sign to screen  //
  //========================//
  private static void AddSign(int iX, int iY, int iSign) {

  }

  private void findBombpath(int i) { //////四个方向的查找爆炸点.
    byte j = 0, k = 0;
    byte cx = M_Bomb[i][1];
    byte cy = M_Bomb[i][2]; // cx and cy is bomb position

    while (M_detonation_spot[k][0] != 0)
    {
      k++;
    }
    for (j = 0; j <= M_Bomb[i][4]; j++)
    { // left
      if (M_imapno[cy][cx - j] == 1)
      { //////不能炸开注意不一定是2可能你要改过下同
        if (j == 0)
        {
          M_detonation_spot[k][0] = Bombing_c;
        }
        if (j >= 1 && j < M_Bomb[i][4])
        {
          M_detonation_spot[k][0] = Bombing_lr;
        }
        if (j == M_Bomb[i][4])
        {
          M_detonation_spot[k][0] = Bombing_lt;

        }
        M_detonation_spot[k][1] = (byte) (cx - j);
        M_detonation_spot[k][2] = cy;
        //         M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
        M_detonation_spot[k][3] = m_detonationtime;
        k++;
      }
      if (M_imapno[cy][cx - j] == 2)
      {
        M_imapno[cy][cx - j] = Bombing_wall;
        break;
      }
      if (M_imapno[cy][cx - j] == 3)
      {
        M_detonation_spot[k][0] = Bombing_c;
        M_detonation_spot[k][1] = (byte) (cx - j);
        M_detonation_spot[k][2] = cy;
      //         M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
        M_detonation_spot[k][3] = (byte)(m_detonationtime-1);
        M_imapno[cy][cx - j] = 1;
        k++;
        break;
      }

      if ( M_imapno[cy][cx - j] > 3 && M_imapno[cy][cx - j] < 9 )
       {  M_detonation_spot[k][0] = (byte)(M_imapno[cy][cx - j] + 16);
          M_detonation_spot[k][1] = (byte) (cx - j);
          M_detonation_spot[k][2] = cy;
          M_detonation_spot[k][3] = 120;
          M_imapno[cy][cx - j] = 1;
          k++;
          break;
       }

      if (M_imapno[cy][cx - j] == 0)
      {
        break;
      }

    }

    for (j = 1; j <= M_Bomb[i][4]; j++)
    { // right
      if (M_imapno[cy][cx + j] == 1)
      { //////

        if (j >= 1 && j < M_Bomb[i][4])
        {
          M_detonation_spot[k][0] = Bombing_lr;
        }
        if (j == M_Bomb[i][4])
        {
          M_detonation_spot[k][0] = Bombing_rt;

        }
        M_detonation_spot[k][1] = (byte) (cx + j);
        M_detonation_spot[k][2] = cy;
        //         M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
        M_detonation_spot[k][3] = m_detonationtime;
        k++;
      }
      if (M_imapno[cy][cx + j] == 2)
      {
        M_imapno[cy][cx + j] = Bombing_wall;
        break;
      }

      if (M_imapno[cy][cx + j] == 3)
      {
        M_detonation_spot[k][0] = Bombing_c;
        M_detonation_spot[k][1] = (byte) (cx + j);
        M_detonation_spot[k][2] = cy;
      //         M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
        M_detonation_spot[k][3] = (byte)(m_detonationtime-1);
        M_imapno[cy][cx + j] = 1;
        k++;
        break;
      }

      if ( M_imapno[cy][cx + j] > 3 && M_imapno[cy][cx + j] < 9 )
       {  M_detonation_spot[k][0] = (byte)(M_imapno[cy][cx + j] + 16);
          M_detonation_spot[k][1] = (byte) (cx + j);
          M_detonation_spot[k][2] = cy;
          System.out.println("" + M_detonation_spot[k][0] + "  " + M_detonation_spot[k][1]);
          M_detonation_spot[k][3] = 120;
          M_imapno[cy][cx + j] = 1;
          k++;
          break;
       }


      if (M_imapno[cy][cx + j] == 0)
      {
        break;
      }

    }

    for (j = 1; j <= M_Bomb[i][4]; j++)
    { //  up
      if (M_imapno[cy - j][cx] == 1)
      { //////

        if (j >= 1 && j < M_Bomb[i][4])
        {
          M_detonation_spot[k][0] = Bombing_ud;
        }
        if (j == M_Bomb[i][4])
        {
          M_detonation_spot[k][0] = Bombing_ut;

        }
        M_detonation_spot[k][1] = cx;
        M_detonation_spot[k][2] = (byte) (cy - j);
        //         M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
        M_detonation_spot[k][3] = m_detonationtime;
        k++;
      }
      if (M_imapno[cy - j][cx] == 2)
      {
        M_imapno[cy - j][cx] = Bombing_wall;
        break;
      }

      if (M_imapno[cy - j][cx] == 3)
     {
       M_detonation_spot[k][0] = Bombing_c;
       M_detonation_spot[k][1] =  cx;
       M_detonation_spot[k][2] = (byte)(cy - j);
     //         M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
       M_detonation_spot[k][3] = (byte)(m_detonationtime-1);
       M_imapno[cy - j][cx ] = 1;
       k++;
       break;
     }

     if ( M_imapno[cy - j][cx ] > 3 && M_imapno[cy - j][cx ] < 9 )
      {  M_detonation_spot[k][0] = (byte)(M_imapno[cy-j][cx ] + 16);
         System.out.println("" + M_detonation_spot[k][0] + "  " + M_detonation_spot[k][1]);
        M_detonation_spot[k][1] =  cx;
        M_detonation_spot[k][2] = (byte)(cy - j);
         M_detonation_spot[k][3] = 120;
         M_imapno[cy-j][cx ] = 1;
         k++;
         break;
      }

      if (M_imapno[cy - j][cx] == 0)
      {
        break;
      }

    }

    for (j = 1; j <= M_Bomb[i][4]; j++)
    { //  down
      if (M_imapno[cy + j][cx] == 1)
      { //////

        if (j >= 1 && j < M_Bomb[i][4])
        {
          M_detonation_spot[k][0] = Bombing_ud;
        }
        if (j == M_Bomb[i][4])
        {
          M_detonation_spot[k][0] = Bombing_dt;

        }
        M_detonation_spot[k][1] = cx;
        M_detonation_spot[k][2] = (byte) (cy + j);
        //         M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
        M_detonation_spot[k][3] = m_detonationtime;
        k++;
      }
      if (M_imapno[cy + j][cx] == 2)
      {
        M_imapno[cy + j][cx] = Bombing_wall;
        break;
      }

      if (M_imapno[cy + j][cx] == 3)
    {
      M_detonation_spot[k][0] = Bombing_c;
      M_detonation_spot[k][1] = cx;
        M_detonation_spot[k][2] = (byte) (cy + j);
    //         M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
      M_detonation_spot[k][3] = (byte)(m_detonationtime-1);
      M_imapno[cy + j][cx ] = 1;
      k++;
      break;
    }

    if ( M_imapno[cy + j][cx ] > 3 && M_imapno[cy + j][ cx ] < 9 )
     {  M_detonation_spot[k][0] = (byte)(M_imapno[cy + j][cx ] + 16);
       M_detonation_spot[k][1] =  cx;
      M_detonation_spot[k][2] = (byte)(cy + j);
        M_detonation_spot[k][3] = 120;
        M_imapno[cy + j][cx ] = 1;
        k++;
        break;
     }

      if (M_imapno[cy + j][cx] == 0)
      {
        break;
      }

    }

  }

  private void CheckDie() {
    int k = 0;
    byte i = 0;

    // 检测 玩家 和怪物 碰状
    for (i = 0; i < m_iCPUPlayNo; i++)   //为了测试方便,要根据怪物数子改过来
    {
      int temp1 = M_iCPlay[i][1] - M_iHPlay[1];
      int temp2 = M_iCPlay[i][2] - M_iHPlay[2];

        if ( Math.abs(temp1) < 15 && Math.abs(temp2) < 16 && M_iCPlay[i][0] > 0)

           {
               M_iHPlay[0] = 0;
           }
     }

     // 怪物死亡动画
     for (i = 0; i < m_iCPUPlayNo; i++)
         if ( M_iCPlay[i][0] < 0 )
             M_iCPlay[i][0]++;

    // 检测 炸弹 威力  以及 玩家pick宝贝
     for (; k < M_detonation_spot.length; k++)
    {


      if (M_detonation_spot[k][0] > 0 && M_detonation_spot[k][0] < 8)
      {
        for (i = 0; i < m_iCPUPlayNo; i++)   //为了测试方便,要根据怪物数子改过来
        {
          int temp1 = M_iCPlay[i][1] - (M_detonation_spot[k][1] << 4);
          int temp2 = M_iCPlay[i][2] - (M_detonation_spot[k][2] << 4);

          int temp3 = M_iHPlay[1] - (M_detonation_spot[k][1] << 4);
          int temp4 = M_iHPlay[2] - (M_detonation_spot[k][2] << 4);

          if (M_iHPlay[0] > 0)
          {
            if ( (Math.abs(temp3) < 15 && Math.abs(temp4) < 3) ||
                (Math.abs(temp3) < 3 && Math.abs(temp4) < 15))
            {
              M_iHPlay[0] = 0;
            }
          }



          if (M_iCPlay[i][0] > 0)
          {
            if ( (Math.abs(temp1) < 15 && Math.abs(temp2) < 3) ||
                (Math.abs(temp1) < 3 && Math.abs(temp2) < 15))
            {
              m_iScore +=M_iCPlay[i][0]*30;
              M_iCPlay[i][0] = -30;
            }
          }
        }

      }
     if (M_detonation_spot[k][0] >= 20 && M_detonation_spot[k][0] <= 24 && M_iHPlay[0] > 0)
      {
          int temp3 = M_iHPlay[1] - (M_detonation_spot[k][1] << 4);
          int temp4 = M_iHPlay[2] - (M_detonation_spot[k][2] << 4);
          byte a = M_detonation_spot[k][0];
          if ( (Math.abs(temp3) < 8 && Math.abs(temp4) < 3) ||
                (Math.abs(temp3) < 3 && Math.abs(temp4) < 8))
            {
               M_imapno[M_detonation_spot[k][2]][M_detonation_spot[k][1]] = 1;
               M_detonation_spot[k][0] = 0 ;
                switch (a)
               {
                  case 20:
                    m_iScore +=100;
                    break;
                  case 21:
                    if ( M_iHPlay[5] < 5)
                    M_iHPlay[5] += 1;
                    break;
                  case 22:
                    if ( M_iHPlay[4] < 4)
                    M_iHPlay[4] += 1;
                    break;
                  case 23:
                    if ( M_iHPlay[6] < 4)
                    M_iHPlay[6] += 1;
                  case 24:
                    m_life++;
                    break;
                }
              }
        }
    }



  }

  private void DisposalBomb() { /////////处理炸弹
    int i, k;
    for (i = 0; i < m_bombtotal; i++)
    {

      if (M_Bomb[i][0] >= 1)
      {
        M_Bomb[i][3]--; /////////////炸弹时间减1
        if (M_Bomb[i][3] == 0)
        {
          M_Bomb[i][0] = 0; /////////////消亡
          M_imapno[M_Bomb[i][2]][M_Bomb[i][1]] = 1; ////////改地图
          findBombpath(i); //////////设置暴炸点.
        }
      }
    } ////////////////////////////////////

    for (i = 0; i < m_bombtotal; i++)
   { ////////处理连暴
     if (M_Bomb[i][0] >= 1)
     {
       for (k = 0; k < M_detonation_spot.length; k++)
       {

         if (M_detonation_spot[k][0] >= 1 && M_detonation_spot[k][0] <=7 &&
             M_detonation_spot[k][1] == M_Bomb[i][1] &&
             M_detonation_spot[k][2] == M_Bomb[i][2])

⌨️ 快捷键说明

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