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

📄 gamelogic.java.bak

📁 一个类似炸弹人的游戏(city hunter)
💻 BAK
📖 第 1 页 / 共 5 页
字号:
    }

  }

  //==================//
  //  Thread process  //
  //==================//
  public synchronized void start() {
    m_pThread = new Thread(this);
    m_pThread.start();
  }

  public synchronized void stop() {
    m_pThread = null;
  }

  public  final int rand_no(int a) {
    int r = rand.nextInt() % a;
    if (r < 0)
    {
      r = -r;
    }
    return r;
  }

  //====================//
  //  Handle key press  //
  //====================//

  private  final int ConvertKeyCode(int iKeyCode) {
    int iKey;

    iKey = iKeyCode;
    if (iKey == getKeyCode(UP) || iKey == KEY_NUM2)
    {
      iKey = KEY_UP;
    }
    else
    if (iKey == getKeyCode(DOWN) || iKey == KEY_NUM8)
    {
      iKey = KEY_DOWN;
    }
    else
    if (iKey == getKeyCode(LEFT) || iKey == KEY_NUM4)
    {
      iKey = KEY_LEFT;
    }
    else
    if (iKey == getKeyCode(RIGHT) || iKey == KEY_NUM6)
    {
      iKey = KEY_RIGHT;
    }
    else
    if (iKey == getKeyCode(FIRE) || iKey == KEY_NUM5)
    {
      iKey = KEY_FIRE;
    }

    if (iKey == KEY_NUM1)
    {
      iKey = KEY_UP | KEY_LEFT;
    }
    else
    if (iKey == KEY_NUM3)
    {
      iKey = KEY_UP | KEY_RIGHT;
    }
    else
    if (iKey == KEY_NUM7)
    {
      iKey = KEY_DOWN | KEY_LEFT;
    }
    else
    if (iKey == KEY_NUM9)
    {
      iKey = KEY_DOWN | KEY_RIGHT;
    }
    else

    if (iKey == KEY_STAR)
    {
      iKey = KEY_L;
    }
    else
    if (iKey == KEY_POUND)
    {
      iKey = KEY_R;
    }

    return iKey;
  }

  public void keyPressed(int iKeyCode) {

    m_iKey = ConvertKeyCode(iKeyCode);
    /*  switch (iKeyCode)
      {
        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);
      }  */

    KeyHandler(m_iKey, true);

  }

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

  //=======================//
  //  Toggle sound on/off  //
  //=======================//
 /* private static void ToggleSound() {

  }

  //===========================//
  //  Toggle vibration on/off  //
  //===========================//
  private static void ToggleVibration() {

  }

  //===============================//
  //  Save settings and quit game  //
  //===============================//
  private static void QuitGame() {

  }

  //============================//
  //  Init game to first level  //
  //============================//
  private static void InitGame() {

  }

  //=========================//
  //  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  final 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  final void CheckDie() {
    int k = 0;
    int i = 0;

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

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

      {
        M_iHPlay[0] = -36;
      }
    }

    // 怪物死亡动画
  //  for (i = 0; i < m_iCPUPlayNo; i++)
    for (i = m_iCPUPlayNo -1; i >= 0; i--)  // add for performence
    {
      if (M_iCPlay[i][0] < 0)
      {
        M_iCPlay[i][0]++;

        // 检测 炸弹 威力  以及 玩家pick宝贝
      }
    }
   int j = M_detonation_spot.length;  // add for performence
 //   for (; k < M_detonation_spot.length; k++)
    for (k = j - 1; k >= 0; k--)  // add for performence
    {

      if (M_detonation_spot[k][0] > 0 && M_detonation_spot[k][0] < 8)
      {
       // for (i = 0; i < m_iCPUPlayNo; i++) //为了测试方便,要根据怪物数子改过来
          for (i = m_iCPUPlayNo -1; i >= 0; i--)  // add for performence
        {
          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);

⌨️ 快捷键说明

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