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

📄 gamegame.java

📁 J2ME的游戏原代码!希望能帮助有需要帮助的师兄弟们!
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
DefUpdateKidnappers(DefKidnapper_t[] pKidnappers,
		    short nrOfKidnappers,
		    DefTheShot_t[] pEnemyShots,
		    short nrOfShots,
		    DefWorld_t pWorld,
		    DefPlayer_t pPlayer,
		    DefHuman_t[] pHumans,
		    short nrOfHumans,
		    byte nrOfKidnappings,
		    byte terrainHeight)
{
  short ix; 
  byte Cnt = 0; 
  boolean isKilled;

  isKilled = false;

  for (ix = 0; ix < nrOfKidnappers; ix++)
  {

    if (pKidnappers[ix].enemy.Valid)
    {
      Cnt++;




      pKidnappers[ix].enemy.FrameDelayCnt++;
      if (pKidnappers[ix].enemy.FrameDelayCnt >= pKidnappers[ix].enemy.FrameDelay)
      {
        pKidnappers[ix].enemy.FrameDelayCnt = 0;
        pKidnappers[ix].enemy.FrameIx = (byte)((pKidnappers[ix].enemy.FrameIx + 1) % pKidnappers[ix].enemy.pAnim.nrOfFrames);

        pKidnappers[ix].enemy.reflectable.collidable.object.pAppearance = pKidnappers[ix].enemy.pAnim.pAppearance[pKidnappers[ix].enemy.FrameIx];

      }


      pKidnappers[ix].enemy.xpos = (short)(pKidnappers[ix].enemy.xpos + pKidnappers[ix].enemy.xspeed);
      pKidnappers[ix].enemy.ypos = (short)(pKidnappers[ix].enemy.ypos + pKidnappers[ix].enemy.yspeed);


      if (pKidnappers[ix].enemy.xpos < 0)
      {
        pKidnappers[ix].enemy.xpos = (short)(pKidnappers[ix].enemy.xpos + pWorld.width);
      }
      if (pKidnappers[ix].enemy.xpos >= pWorld.width)
      {
        pKidnappers[ix].enemy.xpos = (short)(pKidnappers[ix].enemy.xpos + (-pWorld.width));
      }


      switch (pKidnappers[ix].enemy.status)
      {
        case  8 :
        pKidnappers[ix].enemy.xspeed = (short) (GARand() % ( 2  + 1));
        pKidnappers[ix].enemy.yspeed = (short) (GARand() % ( 1  + 1));
        pKidnappers[ix].enemy.status =  1 ;
        break;

        case  5 :
        if (pKidnappers[ix].pHuman.status !=  1  || (pKidnappers[ix].enemy.yspeed > -1 && pKidnappers[ix].enemy.yspeed < 1))
        {


          nrOfKidnappings--;
          pKidnappers[ix].enemy.status =  1 ;
          pKidnappers[ix].enemy.xspeed = (short) (GARand() % ( 2  + 1));
          pKidnappers[ix].enemy.yspeed = (short) (-(GARand() % ( 1  + 1)));
          pKidnappers[ix].enemy.status =  1 ;
        }
        else


        if (pKidnappers[ix].enemy.xpos >= pKidnappers[ix].pHuman.reflectable.collidable.object.xpos - 2
        && pKidnappers[ix].enemy.xpos <= pKidnappers[ix].pHuman.reflectable.collidable.object.xpos + 2 && pKidnappers[ix].enemy.ypos > pWorld.height - 10)
        {


          pKidnappers[ix].enemy.status =  6 ;
          pKidnappers[ix].enemy.xspeed = 0;
          pKidnappers[ix].enemy.yspeed = - 1 ;



          pKidnappers[ix].enemy.reflectable.radarAppearance = RA_Kidnapped;

        }
        else

        if (pKidnappers[ix].enemy.ypos >= pWorld.height - 6)
        {

          pKidnappers[ix].enemy.status =  1 ;
          pKidnappers[ix].enemy.yspeed = (short) (-(GARand() % ( 1  + 1)));
          nrOfKidnappings--;
        }
        break;

        case  6 :


        pKidnappers[ix].enemy.reflectable.collidable.object.pAppearance = pKidnappers[ix].enemy.pAnim.pAppearance[2];
        if (pKidnappers[ix].enemy.ypos <= 0)
        {


          if (DefTransformToSuperalien(pKidnappers[ix], ix))
          {
            Cnt--;
            isKilled = true;
            pKidnappers[ix].enemy.Valid = false;
          }
        }
        else
        {

          if (pKidnappers[ix].enemy.yspeed == (- 1 ))
          {
            pKidnappers[ix].enemy.yspeed = 0;
          }
          else
          {
            pKidnappers[ix].enemy.yspeed = - 1 ;
          }
        }
        break;
        default:

        if (GARand() % 100 > DefGlobalState_p.GameState.kidnapperShoot)
        {


          short[] xspeed = new short[1];
          short[] yspeed = new short[1];

          if (DefCalculateSpeeds(pKidnappers[ix].enemy.xpos,
				 pKidnappers[ix].enemy.ypos,
				 pPlayer.xpos, pPlayer.ypos, (short)30, xspeed, yspeed,  (short)1 ,  (short)1 , (byte)1, pWorld))
          {
            DefEnemyFireShot(pEnemyShots, nrOfShots, pKidnappers[ix].enemy.xpos, pKidnappers[ix].enemy.ypos, xspeed[0], yspeed[0]);
          }
        }
        else

        if (GARand() % 100 > DefGlobalState_p.GameState.kidnapperKidnap
        && pKidnappers[ix].enemy.status !=  5 
        && pKidnappers[ix].enemy.status !=  6  && nrOfKidnappings <  2 )
        {

          if (DefDoKidnapp(pKidnappers[ix], pHumans, nrOfHumans, pWorld))
          {
            nrOfKidnappings++;
          }
        }
      }

      if (isKilled == false)
      {

        if (pKidnappers[ix].enemy.ypos <= 0)
        {

          pKidnappers[ix].enemy.ypos = 0;
          pKidnappers[ix].enemy.xspeed = (short) (GARand() % ( 2  + 1));
          pKidnappers[ix].enemy.yspeed = (short) (GARand() % ( 1  + 1));
        }
        else if (pKidnappers[ix].enemy.ypos >= pWorld.height - 6 && pKidnappers[ix].enemy.status ==  1 )
        {

          pKidnappers[ix].enemy.status =  1 ;
          pKidnappers[ix].enemy.yspeed = (short) (-(GARand() % ( 1  + 1)));
        }
        else if (pKidnappers[ix].enemy.FrameIx == 0 && pKidnappers[ix].enemy.status ==  1 )
        {
          pKidnappers[ix].enemy.xspeed = (short) (GARand() % ( 2  + 1));
          pKidnappers[ix].enemy.yspeed = (short) (GARand() % ( 1  + 1));
        }


        pKidnappers[ix].enemy.reflectable.collidable.object.xpos = pKidnappers[ix].enemy.xpos;
        pKidnappers[ix].enemy.reflectable.collidable.object.ypos = pKidnappers[ix].enemy.ypos;
      }
    }
  }

  return Cnt;
}




/**
  *
  *
  *
  * @param pBombers
  * @param nrOfBombers
  * @param pWorld
  * @param pMines
  * @param nrOfMines
  * @param terrainHeight
  *
  * @returns
  */
byte
DefUpdateBombers(DefBomber_t[] pBombers,
short nrOfBombers,
DefWorld_t pWorld,
DefMine_t[] pMines,
short nrOfMines,
byte terrainHeight)
{
  short ix;
  byte Cnt = 0; 

  for (ix = 0; ix < nrOfBombers; ix++)
  {
    if (pBombers[ix].enemy.Valid)
    {
      Cnt++;



      pBombers[ix].enemy.FrameDelayCnt++;
      if (pBombers[ix].enemy.FrameDelayCnt >= pBombers[ix].enemy.FrameDelay)
      {
        pBombers[ix].enemy.FrameDelayCnt = 0;
        pBombers[ix].enemy.FrameIx = (byte)((pBombers[ix].enemy.FrameIx + 1) % pBombers[ix].enemy.pAnim.nrOfFrames);
        pBombers[ix].enemy.reflectable.collidable.object.pAppearance = pBombers[ix].enemy.pAnim.pAppearance[pBombers[ix].enemy.FrameIx];
      }


      if (GARand() % 100 >  94 )
      {
        DefDropMine(pBombers[ix].enemy.xpos, pBombers[ix].enemy.ypos, pMines, nrOfMines);
      }
      else 
      {

        pBombers[ix].enemy.xpos++;

        if (pBombers[ix].enemy.xpos < 0)
        {
          pBombers[ix].enemy.xpos = (short)(pBombers[ix].enemy.xpos + pWorld.width);
        }
        if (pBombers[ix].enemy.xpos >= pWorld.width)
        {
          pBombers[ix].enemy.xpos = (short)(pBombers[ix].enemy.xpos + (-pWorld.width));
        }



        if (pBombers[ix].stepper == pBombers[ix].stepBoundary)
        {
          pBombers[ix].stepBoundary = (short)(-pBombers[ix].stepBoundary);
        }


        if (pBombers[ix].stepBoundary > 0)
        {
          pBombers[ix].stepper++;
        }
        else
        {
          pBombers[ix].stepper--;
        }

        pBombers[ix].enemy.ypos = (short)(((terrainHeight -  5 ) / 2) + pBombers[ix].stepper);
        pBombers[ix].enemy.reflectable.collidable.object.xpos = pBombers[ix].enemy.xpos;
        pBombers[ix].enemy.reflectable.collidable.object.ypos = pBombers[ix].enemy.ypos;
      }
    }
  }
  return Cnt;
} 




/**
  * Updates the super aliens. Makes the aliens behave in different ways.
  *
  */
byte
DefUpdateSuperAliens(DefSuperAlien_t[] pSuperAliens,
short nrOfSuperAliens,
DefTheShot_t[] pEnemyShots,
short nrOfShots,
DefWorld_t pWorld,
DefPlayer_t pPlayer,
byte terrainHeight)
{
  short ix;
  byte Cnt = 0; 

  for (ix = 0; ix < nrOfSuperAliens; ix++)
  {
    if (pSuperAliens[ix].enemy.Valid)
    {
      byte seekPercentage=0;
      byte shootPercentage=0;

      Cnt++;



      pSuperAliens[ix].enemy.xpos = (short)(pSuperAliens[ix].enemy.xpos + pSuperAliens[ix].enemy.xspeed);
      pSuperAliens[ix].enemy.ypos = (short)(pSuperAliens[ix].enemy.ypos + pSuperAliens[ix].enemy.yspeed);

      if (pSuperAliens[ix].enemy.xpos < 0)
      {
        pSuperAliens[ix].enemy.xpos = (short)(pSuperAliens[ix].enemy.xpos + pWorld.width);
      }
      if (pSuperAliens[ix].enemy.xpos >= pWorld.width)
      {
        pSuperAliens[ix].enemy.xpos = (short)(pSuperAliens[ix].enemy.xpos + (-pWorld.width));
      }


      if (pSuperAliens[ix].enemy.status ==  8 )
      {
        pSuperAliens[ix].enemy.xspeed = (short) (GARand() % ( 4  + 1) -  4  / 2);
        pSuperAliens[ix].enemy.yspeed = (short) ((GARand() % ( 3  + 1)) / 2);
        pSuperAliens[ix].enemy.status =  1 ;
      }
      else if (pSuperAliens[ix].enemy.status ==  1 )
      {
        shootPercentage =  93 ;
        seekPercentage =  93 ;
        pSuperAliens[ix].madCounter++;
        if (pSuperAliens[ix].madCounter > 200)
        {
          pSuperAliens[ix].enemy.status =  7 ;
        }
      }
      else
      {
        shootPercentage =  89 ;
        seekPercentage =  85 ;
      }
      if (GARand() % 100 > shootPercentage)
      {


        short[] xspeed = new short[1];
        short[] yspeed = new short[1];

        if (DefCalculateSpeeds(pSuperAliens[ix].enemy.xpos,
        pSuperAliens[ix].enemy.ypos, pPlayer.xpos, pPlayer.ypos,
        (short)30, xspeed, yspeed,  (short)2 ,  (short)2 , (byte)2, pWorld))
        {
          DefEnemyFireShot(pEnemyShots, nrOfShots, pSuperAliens[ix].enemy.xpos, pSuperAliens[ix].enemy.ypos, xspeed[0], yspeed[0]);
        }
      }
      else if (GARand() % 100 > seekPercentage)
      {

	short[] tmpX = new short[1];
	short[] tmpY = new short[1];
	tmpX[0] = pSuperAliens[ix].enemy.xspeed;
	tmpY[0] = pSuperAliens[ix].enemy.yspeed;
        if (DefCalculateSpeeds(pSuperAliens[ix].enemy.xpos, pSuperAliens[ix].enemy.ypos, pPlayer.xpos, pPlayer.ypos, (short)100, tmpX,
			       tmpY,  (short)4 ,  (short)3 , (byte)4, pWorld) == false)
        {
          pSuperAliens[ix].enemy.xspeed = (short) ((GARand() % ( 4  + 1)) - 2);
          pSuperAliens[ix].enemy.yspeed = (short) ((GARand() % ( 3  + 1)) / 2);
        }
	else {
	  pSuperAliens[ix].enemy.xspeed = tmpX[0];
	  pSuperAliens[ix].enemy.yspeed = tmpY[0];
	}
      }


      if (pSuperAliens[ix].enemy.ypos <= 0)
      {
        pSuperAliens[ix].enemy.ypos = 0;
        pSuperAliens[ix].enemy.xspeed = (short) ((GARand() % ( 4  + 1)) - 2);
        pSuperAliens[ix].enemy.yspeed = (short) (GARand() % ( 3  + 1));
      }
      else if (pSuperAliens[ix].enemy.ypos >= terrainHeight -  6 )
      {
        pSuperAliens[ix].enemy.xspeed = (short) ((GARand() % ( 4  + 1)) - 2);
        pSuperAliens[ix].enemy.yspeed = (short) -(GARand() % ( 3  + 1));
      }


      pSuperAliens[ix].enemy.reflectable.collidable.object.xpos = pSuperAliens[ix].enemy.xpos;
      pSuperAliens[ix].enemy.reflectable.collidable.object.ypos = pSuperAliens[ix].enemy.ypos;
    }
  }

  return Cnt;
}



/**
  * Updates the scouts. Makes the scouts behave in different ways.
  *
  */
byte
DefUpdateScouts(DefScout_t[] pScouts,
		short nrOfScouts,
		DefTheShot_t[] pEnemyShots,
		short nrOfShots,
		DefWorld_t pWorld,
		DefPlayer_t pPlayer,
		byte terrainHeight)
{
  short ix;
  byte Cnt = 0; 

  for (ix = 0; ix < nrOfScouts; ix++)
  {
    if (pScouts[ix].enemy.Valid)
    {

      Cnt++;



      pScouts[ix].enemy.xpos = (short)(pScouts[ix].enemy.xpos + pScouts[ix].enemy.xspeed);
      pScouts[ix].enemy.ypos = (short)(pScouts[ix].enemy.ypos + pScouts[ix].enemy.yspeed);

      if (pScouts[ix].enemy.xpos < 0)
      {
        pScouts[ix].enemy.xpos = (short)(pScouts[ix].enemy.xpos + pWorld.width);
      }
      if (pScouts[ix].enemy.xpos >= pWorld.width)
      {
        pScouts[ix].enemy.xpos = (short)((pScouts[ix].enemy.xpos + (-pWorld.width)));
      }


      pScouts[ix].enemy.FrameDelayCnt++;
      if (pScouts[ix].enemy.FrameDelayCnt >= pScouts[ix].enemy.FrameDelay)
      {
        pScouts[ix].enemy.FrameDelayCnt = 0;
        pScouts[ix].enemy.FrameIx = (byte)((pScouts[ix].enemy.FrameIx + 1) % pScouts[ix].enemy.pAnim.nrOfFrames);
        pScouts[ix].enemy.reflectable.collidable.object.pAppearance = pScouts[ix].enemy.pAnim.pAppearance[pScouts[ix].enemy.FrameIx];
      }


      if (pScouts[ix].enemy.status ==  8 )
      {
        pScouts[ix].enemy.xspeed = (short) ((GARand() % ( 4  + 1)) - ( 4  / 2));
        pScouts[ix].enemy.yspeed = (short) (((GARand() % ( 2  + 1)) - ( 2  / 2)) / 2);

        pScouts[ix].enemy.status =  1 ;
      }
      else if (GARand() % 100 > DefGlobalState_p.GameState.scoutShoot)
      {

        short[] xspeed = new short[1];
        short[] yspeed = new short[1];

        if (DefCalculateSpeeds(pScouts[ix].enemy.xpos,
			       pScouts[ix].enemy.ypos,
			       pPlayer.xpos, pPlayer.ypos, (short)50, xspeed, yspeed, (short)  2 , (short)  2 , (byte)2, pWorld))
        {
          DefEnemyFireShot(pEnemyShots, nrOfShots, pScouts[ix].enemy.xpos, pScouts[ix].enemy.ypos, xspeed[0], yspeed[0]);
        }
      }
      else if (GARand() % 100 > DefGlobalState_p.GameState.scoutSeek)
      {

        if (pPlayer.xspeed < 0)
        {
	  short[] tmpX = new short[1];
	  short[] tmpY = new short[1];
	  tmpX[0] = pScouts[ix].enemy.xspeed;
	  tmpY[0] = pScouts[ix].enemy.yspeed;
          if (DefCalculateSpeeds(pScouts[ix].enemy.xpos,
				 pScouts[ix].enemy.ypos,
				 (short) (pPlayer.xpos + 50),
				 pPlayer.ypos, (short)100, tmpX, tmpY,  (short)4 ,  (short)2 , (byte)4, pWorld) == false)
          {
	    pScouts[ix].enemy.xspeed = tmpX[0];
            pScouts[ix].enemy.yspeed = (short) ((GARand() % ( 2  + 1) -  2  / 2) / 2);
          }
	  else {
	    pScouts[ix].enemy.xspeed = tmpX[0];
	    pScouts[ix].enemy.yspeed = tmpY[0];
	  }
        }
        else
        {
	  short[] tmpX = new short[1];
	  short[] tmpY = new short[1];
	  tmpX[0] = pScouts[ix].enemy.xspeed;
	  tmpY[0] = pScouts[ix].enemy.yspeed;
          if (DefCalculateSpeeds(pScouts[ix].enemy.xpos,
				 pScouts[ix].enemy.ypos,
				 (short) (pPlayer.xpos + (-50)),
				 pPlayer.ypos, (short)100, tmpX, tmpY,  (short)4 ,  (short)2 , (byte)4, pWorld) == false)
          {
	    pScouts[ix].enemy.xspeed = tmpX[0];
            pScouts[ix].enemy.yspeed = (short) ((GARand() % ( 2  + 1) -  2  / 2) / 2);
          }
	  else {
	    pScouts[ix].enemy.xspeed = tmpX[0];
	    pScouts[ix].enemy.yspeed = tmpY[0];
	  }
        }
      }


      if (pScouts[ix].enemy.ypos <= 0)
      {
        pScouts[ix].enemy.ypos = 0;

⌨️ 快捷键说明

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