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

📄 gamelogic.java~1~

📁 一个类似炸弹人的游戏(city hunter)
💻 JAVA~1~
📖 第 1 页 / 共 5 页
字号:
    }
    else
    {
      String no = "";
      int k = str.length();
      int j = -1;
      for (int i = 0; i < k; i++)
      {
        char ch = str.charAt(i);
        if (ch == ',')
        {
          if (j == -1)
          { ///第一个放CPU数
            m_iCPUPlayNo = (byte) Integer.parseInt(no);
            M_iCPlay = new int[m_iCPUPlayNo][7];
          }
      //    if (j == -2)
     //     { ///怪物种类
     //       m_inocpu = (byte) Integer.parseInt(no);

     //     }
           else if (j / 7== m_iCPUPlayNo)
          { //////////最后7个放玩家自己的信息
            M_iHPlay[j % 7] = (byte) Integer.parseInt(no);
          }
          else
          {
            M_iCPlay[j /7][j % 7] = (byte) Integer.parseInt(no);
          }
          j = j + 1;
          no = "";
        }
        else
        {
          no = no + ch;
        }
      }
      for (j = 0; j < m_iCPUPlayNo; j++)
      {
        M_iCPlay[j][1] = M_iCPlay[j][1] << 4;
        M_iCPlay[j][2] = M_iCPlay[j][2] << 4;
      }
      M_iHPlay[1] = M_iHPlay[1] << 4;
      M_iHPlay[2] = M_iHPlay[2] << 4;
    }
  }

  private void readmapSet() {
    String str = readfile(Toll_Gate, 1);
    if (str.equals("filenull"))
    {
      StrErr = "Toll_Gatemap file Can't open";
    }
    else
    {
      String no = "";
      int k = str.length();
      int j = -2;
      for (int i = 0; i < k; i++)
      {
        char ch = str.charAt(i);
        if (ch == ',')
        {
          if (j == -2)
          {
            m_imapnoW = Integer.parseInt(no);
          }
          else if (j == -1)
          {
            m_imapnoH = Integer.parseInt(no);
            M_imapno = new byte[m_imapnoH][m_imapnoW];
          }
          else
          {
            M_imapno[j / m_imapnoW][j %
                m_imapnoW] = (byte) (Integer.parseInt(no));
          }
          j = j + 1;
          no = "";
        }
        else
        {
          no = no + ch;
        }
      }
    }
  }

  private String readfile(int i, int type) {
    String filename = "";
    if (i <= 9 && type == 0)
    {
      filename = "/image/Toll_Gate" + "0" + i + ".png";
    }
    else if (i >= 10 && type == 0)
    {
      filename = "/image/Toll_Gate" + i + ".png";
    }
    else if (i <= 9 && type == 1)
    {
      filename = "/image/Toll_Gatemap" + "0" + i + ".png";
    }
    else if (i >= 10 && type == 1)
    {
      filename = "/image/Toll_Gatemap" + i + ".png";
    }
    try
    {
      byte[] buffer1 = new byte[1024];
      InputStream is = null;
      String buf = new String();
      is = this.getClass().getResourceAsStream(filename);
      while (is.read(buffer1) < 0)
      {}
      is.close();
      filename = new String(buffer1);
    }
    catch (Exception ex)
    {
      filename = "filenull";
    }
    return filename;
  }

  //===================//
  //  Load and Del a PNG file  //
  //===================//
  private void DelImage(int start, int end) {

  }

  private void DelImage(int start) {

  }

  private void LoadImage(int start, int end) {

  }

  private static Image LoadImage(int iID) {
    String sString;
    sString = "image/monster";
    if (iID < 10)
    {
      sString += "0";
    }
    sString += "" + iID;
    return LoadImage("/" + sString + ".png");
  }

  private static Image LoadImage(String sImageFile) {
    Image pImage = null;
    try
    {
      pImage = Image.createImage(sImageFile);
    }
    catch (Exception e)
    {
      System.out.println("[CANVAS] Error loading image: " + sImageFile);
      System.out.println(e);
    }
    return pImage;
  }

  //=======================//
  //  Draw screen routine  //
  //=======================//
  public void paint(Graphics g) {


    Graphics pScreen;
    int i, j, k, l, iPercent, iY, iFrame, iValue;

    //  g.translate(m_iScreenX, m_iScreenY);
    //    g.setClip(0, 0, 200, 200);
    pScreen = g;
    if (m_iStage == STAGE_GAME)
    {
      DisposalHplay();
      DisposalCPUplay();
      DisposalBomb();
      CheckDie(); /////////////

      //if (m_bPause == true)
      //{            return;          }
      //  Draw background  //
      /////////////////////////////////////////算好偏移位置
      if (M_iHPlay[1] <= m_moveminx)
      {
        m_movex = 0;
      }
      else if (M_iHPlay[1] >= m_movemaxx)
      {
        m_movex = m_movemaxx - (SCREEN_WIDTH >> 1) + 8;
      }
      else
      {
        m_movex = M_iHPlay[1] - m_moveminx;

      }
      if (M_iHPlay[2] <= m_moveminy)
      {
        m_movey = 0;
      }
      else if (M_iHPlay[2] >= m_movemaxy)
      {
        m_movey = m_movemaxy - (SCREEN_HEIGHT >> 1) + 8;
      }
      else
      {
        m_movey = M_iHPlay[2] - m_moveminy;

      }

      //     g.setColor(0xd4f294);
      //     g.fillRect(0, 0, 200, 200);
      i = 0;
      j = 0;
      l = (m_movex + SCREEN_WIDTH) >> 4;
      if ( (l << 4) < (m_movex + SCREEN_WIDTH))
      {
        l = l + 1;

      }

      k = (m_movey + SCREEN_HEIGHT) >> 4;
      if ( (k << 4) < (m_movey + SCREEN_HEIGHT))
      {
        k = k + 1;
      }

      //    private int m_imapnoW; //////大地图中用小块地图的宽的个数.
      //   private int m_imapnoH; //////大地图中用小块地图的高的个数.
      if (l >= m_imapnoW + 1)
      { //  防止 程序崩溃的代码 by coolfire以后要根据地图值改
        l = m_imapnoW;
      }
      if (k >= m_imapnoH + 1)
      {
        k = m_imapnoH;
        //     算好画哪些地图;

      }
      for (i = m_movey >> 4; i < k; i++)
      {
        for (j = (m_movex >> 4); j < l; j++)
        {
          if (i == 13 || j == 11)
          {
            System.out.println("" + i + "  " + j);
          }
          if (M_imapno[i][j] >= 19 && M_imapno[i][j] <= 20)
          {
            g.drawImage(m_Bombwall[0], j * m_mapTYPE_W - m_movex,
                        i * m_mapTYPE_H - m_movey, 0);
            M_imapno[i][j]--;
          }
          if (M_imapno[i][j] >= 17 && M_imapno[i][j] <= 18)
          {
            g.drawImage(m_Bombwall[1], j * m_mapTYPE_W - m_movex,
                        i * m_mapTYPE_H - m_movey, 0);
            M_imapno[i][j]--;
          }

          if (M_imapno[i][j] > 3 && M_imapno[i][j] < 9)
            g.drawImage(M_imgmap[2], j * m_mapTYPE_W - m_movex,
                        i * m_mapTYPE_H - m_movey, 0);

          if (M_imapno[i][j] >= 0 && M_imapno[i][j] < 3)
            g.drawImage(M_imgmap[M_imapno[i][j]], j * m_mapTYPE_W - m_movex,
                        i * m_mapTYPE_H - m_movey, 0);

          if (M_imapno[i][j] == 16)
          {
            M_imapno[i][j] = 1;
          }

        }
      }
      ////Bomb///
      for (i = 0; i < m_bombtotal; i++)
      {
        if (M_Bomb[i][0] >= 1)
        {
          g.drawImage(M_imgbomb, (M_Bomb[i][1] << 4) - m_movex,
                      (M_Bomb[i][2] << 4) - m_movey, 0); //
        }
      }

      Disposaldetonation_spot(g);
/////////////////////////////////draw play and cpu
      //    g.drawImage(M_imgplay[8],M_iHPlay[1]-m_movex,M_iHPlay[2]-m_movey-4,0);

      for (i = 0; i < m_iCPUPlayNo; i++)
      {
        if (M_iCPlay[i][0] >= -30 && M_iCPlay[i][0] <= -10)
        {
          g.drawImage(m_diecpu[0], M_iCPlay[i][1] - m_movex,
                      M_iCPlay[i][2] - m_movey - 4, 0);
        }

        if (M_iCPlay[i][0] > -10 && M_iCPlay[i][0] <= -1)
        {
          g.drawImage(m_diecpu[1], M_iCPlay[i][1] - m_movex,
                      M_iCPlay[i][2] - m_movey - 4, 0);
        }

        if (M_iCPlay[i][0] > 0)
        {
          //  g.drawImage(M_imgplay[6], M_iCPlay[i][1] - m_movex,
          //                 M_iCPlay[i][2] - m_movey - 4, 0);  //画不同的cpu

          g.drawImage(m_imgenemy[M_iCPlay[i][0] - 1][M_iCPlay[i][3] * 2 +
                      M_iCPlay[i][4]], M_iCPlay[i][1] - m_movex,
                      M_iCPlay[i][2] - m_movey - 4, 0); //画不同的cpu

          /**
                    for(i=0;i<5;i++)
                    {
           if(M_Bomb[i][2]!=0)
           {
             //         g.drawImage(PlayImage[iCPlay[i][2]],iCPlay[i][0],iCPlay[i][1],0);
           }
                     }
                     //CPU玩家  //
                     for(i=0;i<m_iCPUPlayNo;i++)
                     {
            if(M_iCPlay[i][2]!=0)
            {
              g.drawImage(PlayImage[M_iCPlay[i][2]],M_iCPlay[i][1]-m_movex,M_iCPlay[i][2]-m_movey,0);
            }
                     }
                     //数文AND文字//
                     /**/
        }

      }

      if (M_iHPlay[0] > 0)
      {
        if (oldmandirect == (byte) M_iHPlay[3])
        {
          g.drawImage(m_imgman[M_iHPlay[3]][imgpoint], M_iHPlay[1] - m_movex,
                      M_iHPlay[2] - m_movey - 4, 0);
          imgpoint = (imgpoint + 1) % 3;
        }
        else
        {
          imgpoint = 0;
          g.drawImage(m_imgman[M_iHPlay[3]][imgpoint], M_iHPlay[1] - m_movex,
                      M_iHPlay[2] - m_movey - 4, 0);
        }
      }

      // draw game infomation
      g.drawImage(M_title, 0,
                  0, 0);
      drawNum(51, 3, m_iScore, g);

      drawNum(117, 3, m_iTimeLeft, g); //测试用,以后会根据关卡调整时间

      drawNum(164, 3, m_life, g); // 也是测试 ,因为 数据 还 没有 放在合适地方

      if (m_iTimeLeft-- < 1 || M_iHPlay[0] == 0)
        g.drawString("GAME OVER", 50,
                     100, 0); // 还没有写好函数跳到 game over 窗口

        //  下面 应该 还有判断 所有 的怪物 是否被杀的 代码

        // 还没有写 退出函数 所以 只能 强行退出

    }
  }

  private void Initloading() {

  }

  private void Runloading() {

  }

  private void InitTitle() {

  }

  private void RunTitle() {

  }

  private void InitHELP() {

  }

  private void RunHELP() {

  }

  private void InitSET() {

  }

  private void RunSET() {

  }

  private void InitRanking() {

  }

  private void RunRanking() {

  }

  private void InitInternet() {

  }

  private void RunInternet() {

  }

  private void InitGAMEOVER() {

  }

  private void RunGAMEOVER() {

  }

  private void InitGAME() {
    int i, j, k;
    m_iStage = STAGE_GAME;
    itimeNo = 0;
    InitGAMEimage();
    Loaddatabase();



    M_Bomb = new byte[m_bombtotal][5];
    for (i = 0; i < m_bombtotal; i++)
    {
      for (j = 0; j < 7; j++)
      {
        M_Bomb[i][j] = 0;

      }
    }
    M_detonation_spot = new byte[m_detonation_spottotal][4];
    for (i = 0; i < m_detonation_spottotal; i++)
    {
      for (j = 0; j < 4; j++)
      {
        M_detonation_spot[i][j] = 0;

      }
    }
    M_medal = new byte[m_medaltotal][3];
    for (i = 0; i < m_medaltotal; i++)
    {
      for (j = 0; j < 3; j++)
      {
        M_medal[i][j] = 0;
      }
    }
  }

   //  for draw score to screen
  public void drawNum(int x, int y, int n, Graphics gScreen)  {
      int iNo;

      if (n < 10)  {
        gScreen.drawImage(M_imgnum[n], x, y, 0);
      }  else

      if (n < 100)  {
        iNo = (n/10);
        gScreen.drawImage(M_imgnum[iNo], x-6, y, 0);
        iNo = (n%10);
        gScreen.drawImage(M_imgnum[iNo], x, y, 0);
      }  else

      if (n < 1000)  {
        iNo = (n/100);
   

⌨️ 快捷键说明

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