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

📄 gamelogic.java~1~

📁 一个类似炸弹人的游戏(city hunter)
💻 JAVA~1~
📖 第 1 页 / 共 5 页
字号:
            k = 16;
          }
          M_iHPlay[1] = ( (x >> 4) << 4) + k;
          M_iHPlay[2] = y;
        }
        i = 3;
      }
      M_iHPlay[3] = i;
    }
  }

  //============================//
  //  Generate a random number  //
  //============================//
  private static int rand(int iRange) {
    return (m_rRandom.nextInt() & 65535) % iRange;
  }

  //=================================//
  //  Combine variables to a string  //
  //=================================//
  private static String GetRecordString() {
    int i;
    String sRecord = "";

    sRecord = m_iTopScore + "/" +
        m_bSoundOn + "/" +
        m_bVibrateOn + "/" +
        m_iPlayed + "/" +
        "";
    for (i = sRecord.length(); i < MAX_SAVELENGTH; i++)
    {
      sRecord += "*";
    }
    return sRecord;
  }

  //===============================//
  //  Extract string to variables  //
  //===============================//
  private void ExtractString(String sRecord) {
    int i, iLength, j;
    String sResult;
    String pData[];
    //  Initialize variables  //
    i = 0;
    j = 0;
    iLength = sRecord.length();
    sResult = "";
    pData = new String[MAX_SAVEDATA];
    //  Extract data to pData[]  //
    while (i < iLength)
    {
      if (sRecord.charAt(i) != '/')
      {
        sResult += sRecord.charAt(i);
      }
      else
      {
        pData[j] = sResult;
        sResult = "";
        j++;
      }
      i++;
    }
    //  Restore values  //
    //  Use
    try
    {
      i = 0;
      m_iTopScore = Integer.valueOf(pData[i++]).intValue();
      if (pData[i++].equals("true"))
      {
        m_bSoundOn = true;
      }
      else
      {
        m_bSoundOn = false;
      }
      if (pData[i++].equals("true"))
      {
        m_bVibrateOn = true;
      }
      else
      {
        m_bVibrateOn = false;
      }
      m_iPlayed = (byte) (Integer.valueOf(pData[i++]).intValue());
    }
    catch (Exception e)
    {}
  }

  //=========================//
  //  Change to a new stage  //
  //=========================//
  private void ChangeStage(int iNewStage) {
    m_iStage = iNewStage;
    m_iKey = KEY_NONE;
    m_iCounter = 0;
    m_bRefresh = true;
    repaint();
  }

  //==========================//
  //  Get free sprite object  //
  //==========================//
  /**
       private int[] findmynewtowards(int i)
       {
    int towards[]={0,0,0,0};
    int x,y,k,l=0,m=0,n=0;
    x=M_iCPlay[i][1]/m_mapTYPE_W;
    y=M_iCPlay[i][2]/m_mapTYPE_H;
    for(k=0;k<4;k++)
    {
      if(k==0)
      {
       m=x;
       n=y-1;
      }
      else if(k==1)
      {
        m=x-1;
        n=y;
      }
      else if(k==2)
      {
        m=x;
        n=y+1;
      }
      else
      {
        m=x+1;
        n=y;
      }
      if(M_imapno[m][n]==2)
      {
        l=l+1;
        towards[l]=k;
      }
    }
    towards[0]=l;
    return towards;
       }
       /**/
 //  private int findmove(int i) {
 //    return 1;
 //  }

/*  private Sprite GetFreeSprite() {
    int i;

    for (i = 0; i < MAX_SPRITE; i++)
    {
      if (m_pSprite[i].iType == TYPE_NULL)
      {
        return m_pSprite[i];
      }
    }
    return null;
  } */

  //=====================//
  //  Main game process  //
  //=====================//
  public void run() {
    while (true)
    {
      Thread.yield();
      lTimeStart = System.currentTimeMillis();

      //  Frame rate control  //
      repaint();
      serviceRepaints();
      WaitFrames(MAX_FRAME_WAIT);
      }
    }

  private final void WaitFrames(long lFrameWait)  {
      for(; System.currentTimeMillis()-lTimeStart < lFrameWait; Thread.yield());
    }


  //========================//
  //  Initialize variables  //
  //========================//
  private void Flow_INIT() {

}

  //===================================================//
  //  Logo screen: Load image from resource to memory  //
  //===================================================//
  private void Flow_LOGO() {

  }

  //====================================//
  //  Title screen: Wait select option  //
  //====================================//
  private void Flow_TITLE() {

  }

  //===============//
  //  Help screen  //
  //===============//
  private void Flow_HELP() {

  }

  //===================//
  //  Gameover screen  //
  //===================//
  private void Flow_GAMEOVER() {

  }

  //===============//
  //  Game screen  //
  //===============//
  private void Flow_GAME() {
  /*  Sprite pSprite;
    int i, j, iX, iY, iID, iSelection;
    //-------------------//
    //  Check for pause  //
    //-------------------//
    if (m_iKey == KEY_L)
    {
      m_bPause = !m_bPause;
      m_iKey = KEY_NONE;
      repaint();
    }
    if (m_bPause == true)
    {
      return;
    }
    //-----------------//
    //  Box animation  //
    //-----------------//
    m_iBoxAnim = (m_iBoxAnim + 1) & 31;
    //------------------------//
    //  Show level and ready  //
    //------------------------//
    if (m_iCounter < 30)
    {
      m_iCounter++;
    }
    else
    {
      //  Key press check  //
      iSelection = 0;
      if (m_iKey != KEY_NONE)
      {
        if (m_iKey == (KEY_NUM + 1) || m_iKey == (KEY_NUM + 4) ||
            m_iKey == (KEY_NUM + 7))
        {
          iSelection = 1;
        }

        if (m_iKey == (KEY_NUM + 2) || m_iKey == (KEY_NUM + 5) ||
            m_iKey == (KEY_NUM + 8))
        {
          iSelection = 2;
        }
        if (m_iKey == (KEY_NUM + 3) || m_iKey == (KEY_NUM + 6) ||
            m_iKey == (KEY_NUM + 9))
        {
          iSelection = 3;
        }
        m_iKey = KEY_NONE;
      }

      //  Checking  //
      if (iSelection > 0 && m_iToyLeft > 0)
      {
        if (iSelection == m_iToyPart[m_iToyCurrent])
        {
          m_iToyCurrent++;
          m_iToyLeft--;
          m_pSprite[m_iSpritePointer].iType = TYPE_NULL;

          //  Set sprite to empty if all dolls were queued  //
          if (m_iToyLeft < MAX_SPRITE)
          {
            //  Level clear  //
            if (m_iToyLeft <= 0)
            {
              m_iCounter = 40;
            }
          }
          else
          {
            //  Create a new doll and queue at the end  //
            i = m_iSpritePointer;
            j = (m_iSpritePointer + 8 - 1) & 7;

            m_pSprite[m_iSpritePointer].iType = TYPE_DOLL;
            m_pSprite[i].iX = m_pSprite[j].iX + 28;
            m_pSprite[i].iDX = -4;
            m_pSprite[i].iImageID = m_iToyPart[m_iToyPointer];
            m_pSprite[i].iCounter = m_pSprite[j].iCounter;

            m_iSpritePointer = (m_iSpritePointer + 1) & 7;
//              m_iToyPointer = (m_iToyPointer+1)&63;
            m_iToyPointer++;
          }

          //  Move all dolls  //
          for (i = 0; i < MAX_SPRITE; i++)
          {
            if (m_pSprite[i].iType == TYPE_DOLL)
            {
              m_pSprite[i].iCounter += 7;
            }
          }

          AddSign(36, 88, IMG_RIGHT);
          m_iScore += (4 + m_iLevel);
        }
        else
        {
          //  Wrong selection  //
          if (m_pEffect != null && m_bVibrateOn == true)
          {
            m_pEffect.vibrate();
          }

          m_iTimeLeft -= 40;
          AddSign(36, 88, IMG_WRONG);
        }
      } */

      //  Update small dolls animation  //
  /*    for (i = 0; i < MAX_SPRITE; i++)
      {
        if (m_pSprite[i].iType == TYPE_DOLL)
        {
          if (m_pSprite[i].iCounter > 0)
          {
            m_pSprite[i].iCounter--;
            m_pSprite[i].iX += m_pSprite[i].iDX;
          }
        }
      }  */

      //  Time check  //
  /*    m_iTimeLeft--;
      if (m_iTimeLeft <= 0)
      {
        m_pImage[IMG_INFO] = null;
        m_pImage[IMG_NO] = null;
        m_pImage[IMG_LEVEL] = null;
        m_pImage[IMG_READY] = null;
        m_pImage[IMG_GO] = null;
        System.gc();
        ChangeStage(STAGE_GAMEOVER);
        if (m_iScore > m_iTopScore)
        {
          m_iTopScore = m_iScore;
        }
      }
    }

    //  Finish game delay  //
    if (m_iCounter >= 40)
    {
      m_iCounter++;
      if (m_iCounter >= 60)
      {
        m_iCounter = 0;
        m_iLevel++;
        SetLevel(m_iLevel);
      }
    }

    //-----------------//
    //  Update screen  //
    //-----------------//
    repaint();

    //-------------------------//
    //  Update sign animation  //
    //-------------------------//
    for (i = 0; i < m_pSign.length; i++)
    {
      if (m_pSignCount[i] > 0)
      {
        m_pSignCount[i]--;
        m_pSignY[i] -= 2;
      }
    }  */
  }

//----  Graphics engine  ---------------------------------------------------//

  private void Loaddatabase() {

    M_iHPlay = new int[7];
    ReadCPUPlaySet();//////配备玩家andCPU以做好
    readmapSet();//////配备地图以做好

    m_moveminx = (SCREEN_WIDTH >> 1) - 8;
    m_movemaxx = M_imapno[0].length * 16 - (SCREEN_WIDTH >> 1) - 8;
    m_moveminy = (SCREEN_HEIGHT >> 1) - 8;
    m_movemaxy = M_imapno.length * 16 - (SCREEN_HEIGHT >> 1) - 8;

    m_drawx = SCREEN_WIDTH >> 4;
    if (SCREEN_WIDTH > (m_drawx << 4))
    {
      m_drawx = m_drawx + 1;
    }
    m_drawy = SCREEN_HEIGHT >> 4;
    if (SCREEN_HEIGHT > (m_drawy << 4))
    {
      m_drawy = m_drawy + 1; //处理屏幕上画多少快

    }
    int i = 0;
    M_Bomb = new byte[m_bombtotal][5];
    for (i = 0; i < m_bombtotal; i++)
    {
      M_Bomb[i][0] = 0;
      M_Bomb[i][1] = 0;
      M_Bomb[i][2] = 0;
      M_Bomb[i][3] = 0;
      M_Bomb[i][4] = 0;
    }
    M_detonation_spot = new byte[64][4]; // 40?
    for (i = 0; i < 40; i++)
    {
      M_detonation_spot[i][0] = 0;
      M_detonation_spot[i][1] = 0;
      M_detonation_spot[i][2] = 0;
      M_detonation_spot[i][3] = 0;
    }


    ///////////////////读配备文件

    InitGAMEimage(); ///////////////////地图初始化
///////////////////////////////////////////以下是本在配备文件中做的///////////////////////////


    //0生命  1X 2Y 3方向 4力量 5速度 6炸数.
  /*  M_iHPlay[0] = 2;
    M_iHPlay[1] = 16;
    M_iHPlay[2] = 16;
    M_iHPlay[3] = 0;
    M_iHPlay[4] = 2;
    M_iHPlay[5] = 5;
    M_iHPlay[6] = 3;
    M_iCPlay = new int[4][7];

    for (i = 0; i < 4; i++)
    {
      M_iCPlay[i][0] = 1;
      M_iCPlay[i][1] = 16;
      M_iCPlay[i][2] = 48;
      M_iCPlay[i][3] = 0;
      M_iCPlay[i][5] = 2;
      M_iCPlay[i][5] = 1;
      M_iCPlay[i][6] = 0;
    }
    M_iCPlay[0][1] = 16;
    M_iCPlay[0][5] = 4;
    M_iCPlay[0][2] = 48;
    M_iCPlay[1][1] = 16;
    M_iCPlay[1][5] = 2;
    M_iCPlay[1][2] = 96;

    M_iCPlay[2][1] = 16;
    M_iCPlay[2][5] = 5;
    M_iCPlay[2][2] = 96;

    M_iCPlay[3][1] = 16;
    M_iCPlay[3][2] = 96; */

  }

  private void ReadCPUPlaySet() {
    Toll_Gate = 0;
    String str = readfile(Toll_Gate, 0); ///////////得到文件内容
    if (str.equals("filenull"))
    {
      StrErr = "Toll_Gate file Can't open";

⌨️ 快捷键说明

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