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

📄 gamegame.java

📁 J2ME的游戏原代码!希望能帮助有需要帮助的师兄弟们!
💻 JAVA
📖 第 1 页 / 共 5 页
字号:

  if (16*Dist < (Temp + 16)) // FLOAT: Dist < (Temp + 1)
  {
    pWorld.xpos = TargetX;
  }
  else
  {
    Temp2 = pPlayer.xspeed; // FLOAT: Temp2 = (short)  ((int) (( pPlayer.xspeed ))) ;
    Temp2 = (short)Math.abs(Temp2);

    if (Temp == Temp2)
    {
      Temp2 = (short) (2 * Temp2);
    }
    else
    {
      Temp2 = Temp;
    }


    if (pPlayer.headingLeft)
    {
      Temp2 = (short)(-Temp2);
    }

    pWorld.xpos += Temp2 / 16; // FLOAT: pWorld.xpos += Temp2;
  }

  pWorld.xpos += pWorld.width;
  pWorld.xpos = (short)(pWorld.xpos % pWorld.width);

} 




/**
  * Update the player, change position, handle acceleration and the display position.
  *
  */
void
DefUpdatePlayer(DefPlayer_t pPlayer,
DefWorld_t pWorld)
{

  if (pPlayer.direction ==  1  && pPlayer.currentFrame > 0)
  {
    pPlayer.currentFrame -= 2;
    if (pPlayer.currentFrame < 0)
    {
      pPlayer.currentFrame = 0;
    }
    pPlayer.collidable.object.pAppearance = pPlayer.animation.pAppearance[pPlayer.currentFrame];
  }
  else if (pPlayer.direction ==  0  && pPlayer.currentFrame < pPlayer.animation.nrOfFrames - 1)
  {
    pPlayer.currentFrame += 2;
    if (pPlayer.currentFrame >= (pPlayer.animation.nrOfFrames - 1))
    {
      pPlayer.currentFrame = (byte)(pPlayer.animation.nrOfFrames - 1);
    }
    pPlayer.collidable.object.pAppearance = pPlayer.animation.pAppearance[pPlayer.currentFrame];
  }
  else 
  {



    if (pPlayer.steerLeft)
    {
      pPlayer.xspeed = (short) (pPlayer.xspeed - DefPlayer_t.PLAYER_X_ACC); //FLOAT: pPlayer.xspeed = pPlayer.xspeed -  (( float ) (( 0.9f ))) ; 

      if (pPlayer.xspeed < - DefPlayer_t.PLAYER_MAX_X_SPEED ) //FLOAT: pPlayer.xspeed < - (( float ) (( 8.2f ))
      {
        pPlayer.xspeed = (short) (- DefPlayer_t.PLAYER_MAX_X_SPEED) ; //FLOAT: pPlayer.xspeed = - (( float ) (( 8.2f ))) ;
      }
      pPlayer.direction =  0 ;
      pPlayer.headingLeft = true;
    }

    if (pPlayer.steerRight)
    {
	pPlayer.xspeed = (short) (pPlayer.xspeed + DefPlayer_t.PLAYER_X_ACC) ; //FLOAT:
      if ( DefPlayer_t.PLAYER_MAX_X_SPEED  < pPlayer.xspeed) //FLOAT:
      {
        pPlayer.xspeed = DefPlayer_t.PLAYER_MAX_X_SPEED ; //FLOAT:
      }
      pPlayer.direction =  1 ;
      pPlayer.headingLeft = false;
    }
  }

  if (pPlayer.steerUp)
  {
    pPlayer.yspeed = (short) (pPlayer.yspeed - DefPlayer_t.PLAYER_Y_ACC) ; //FLOAT:
    if (pPlayer.yspeed < - DefPlayer_t.PLAYER_MAX_Y_SPEED ) //FLOAT:
    {
      pPlayer.yspeed = - DefPlayer_t.PLAYER_MAX_Y_SPEED ; //FLOAT:
    }
  }

  if (pPlayer.steerDown)
  {
    pPlayer.yspeed = (short)(pPlayer.yspeed + DefPlayer_t.PLAYER_Y_ACC ) ; //FLOAT:
    if ( DefPlayer_t.PLAYER_MAX_Y_SPEED  < pPlayer.yspeed) //FLOAT:
    {

      pPlayer.yspeed =  DefPlayer_t.PLAYER_MAX_Y_SPEED ; //FLOAT:
    }
  }

  pPlayer.xpos = (short)(pPlayer.xpos + pPlayer.xspeed/16) ;
  pPlayer.ypos = (short)(pPlayer.ypos + pPlayer.yspeed/16) ;

  pPlayer.xpos += pWorld.width;
  pPlayer.xpos = (short)(pPlayer.xpos % pWorld.width);

  if (pPlayer.ypos < 0)
  {
    pPlayer.ypos = 0;
    pPlayer.yspeed = 0; 
  }



  if (pPlayer.ypos > DEF_YOFFSET + DEF_ERASE_PLAYGROUND_HEIGHT - pPlayer.collidable.object.pAppearance.height)
  {
    pPlayer.ypos = (short)( DEF_YOFFSET + DEF_ERASE_PLAYGROUND_HEIGHT - pPlayer.collidable.object.pAppearance.height);
    pPlayer.yspeed = 0; 
  }

  DefUpdateWorldPosition(pPlayer, pWorld);

  pPlayer.xspeed = (short) ( ( pPlayer.xspeed * DefPlayer_t.PLAYER_X_RESISTANCE_MULTIPLIER ) / DefPlayer_t.PLAYER_X_RESISTANCE_DIVIDER ) ;
  pPlayer.yspeed = (short) (pPlayer.yspeed / DefPlayer_t.PLAYER_Y_RESISTANCE) ;

  pPlayer.collidable.object.xpos = pPlayer.xpos;
  pPlayer.collidable.object.ypos = pPlayer.ypos;

}





/**
  *
  *
  *
  * @param pPlayer
  * @param pWorld
  */
void
DefDrawPlayer(DefPlayer_t pPlayer,
DefWorld_t pWorld)
{
  if (DefGlobalState_p.GameState.status ==  5 )
  {
    if ((DefGlobalState_p.GameState.statusData % 3) == 0)
    {
      return;
    }
  }
  DefDrawObject(pPlayer.collidable.object, pWorld);
}













/* void DefEnemyFireShot(DefTheShot_t shots,
short nrOfShots,
short xpos,
short ypos,
short xspeed,
short yspeed); */











/* boolean DefDoKidnapp(DefKidnapper_t pKidnapper,
DefHuman_t pHumans,
short nrOfHumans,
DefWorld_t pWorld); */







/* boolean DefTransformToSuperalien(DefKidnapper_t pKidnapper,
short index); */









/* void DefDropMine(short xpos,
short ypos,
DefMine_t pMines,
short nrOfMines); */


















/**
  * Draws all the enemies
  *
  */
void
DefDrawEnemies(DefEnemy_t[] pEnemies,
short nrOfEnemies,
DefWorld_t pWorld)
{
  short ix;

  for (ix = 0; ix < nrOfEnemies; ix++)
  {
    if (pEnemies[ix].Valid)
    {
      DefDrawObject(pEnemies[ix].reflectable.collidable.object, pWorld);
    }
  }
} 








/**
  * Draws all the scouts
  *
  */
void
DefDrawEnemiesScout(DefScout_t[] pEnemies,
short nrOfEnemies,
DefWorld_t pWorld)
{
  short ix;

  for (ix = 0; ix < nrOfEnemies; ix++)
  {
    if (pEnemies[ix].enemy.Valid)
    {
      DefDrawObject(pEnemies[ix].enemy.reflectable.collidable.object, pWorld);
    }
  }
} 








/**
  * Draws all the bombers
  *
  */
void
DefDrawEnemiesBombers(DefBomber_t[] pEnemies,
		      short nrOfEnemies,
		      DefWorld_t pWorld)
{
  short ix;

  for (ix = 0; ix < nrOfEnemies; ix++)
  {
    if (pEnemies[ix].enemy.Valid)
    {
      DefDrawObject(pEnemies[ix].enemy.reflectable.collidable.object, pWorld);
    }
  }
} 









/**
  * Draws all the super alliens
  *
  */
void
DefDrawEnemiesSuperAllien(DefSuperAlien_t[] pEnemies,
			  short nrOfEnemies,
			  DefWorld_t pWorld)
{
  short ix;

  for (ix = 0; ix < nrOfEnemies; ix++)
  {
    if (pEnemies[ix].enemy.Valid)
    {
      DefDrawObject(pEnemies[ix].enemy.reflectable.collidable.object, pWorld);
    }
  }
} 





/**
  * Draws all the kidnappers
  *
  */
void
DefDrawEnemiesKidnapper(DefKidnapper_t[] pEnemies,
			short nrOfEnemies,
			DefWorld_t pWorld)
{
  short ix;

  for (ix = 0; ix < nrOfEnemies; ix++)
  {
    if (pEnemies[ix].enemy.Valid)
    {
      DefDrawObject(pEnemies[ix].enemy.reflectable.collidable.object, pWorld);
    }
  }
} 




/**
  * Draws all the humans
  *
  */
void
DefDrawEnemiesHumans(DefHuman_t[] pHuman,
		     short nrOfEnemies,
		     DefWorld_t pWorld)
{
  short ix;

  for (ix = 0; ix < nrOfEnemies; ix++)
  {
    if (pHuman[ix].Valid)
    {
      DefDrawObject(pHuman[ix].reflectable.collidable.object, pWorld);
    }
  }
} 





/**
  * Calculate the x and y speeds to get to another position
  *
  *	@param	currentX	The current X coordinate
  *	@param	curentY		The current Y coordinate
  *	@param	targetX		The target X coordinate
  *	@param	targetY		The target X coordinate
  *	@param	distance	The max distance between the destination
  *	@param	pXSpeed		The FixedPoint the x speed will be returned in
  *	@param	pYSpeed		The FixedPoint the y speed will be returned in
  *	@param	maxXSpeed	The maximum X speed allowed
  *	@param	maxYSpeed	The maximum Y speed allowed
  *	@param	random		The inaccuracy factor (0 - no inaccuracy)
  *	@param	pWorld		The world object
  *
  *	@param	TRUE if the target could be found within the distance. Otherwise FALSE
  *
  */
boolean
DefCalculateSpeeds(short currentX,
short currentY,
short targetX,
short targetY,
short distance,
short[] pXSpeed,
short[] pYSpeed,
short maxXSpeed,
short maxYSpeed,
byte random,
DefWorld_t pWorld)
{

  short xdistance;
  short ydistance;
  short xSign;
  short ySign;


  xdistance = (short)(targetX - currentX);
  ydistance = (short)(targetY - currentY);

  if (random != 0)
  {
    xdistance = (short) (xdistance + ((GARand() % random) - random / 2));
    ydistance = (short) (ydistance + ((GARand() % random) - random / 2));
  }


  xSign = 1;
  if (xdistance < 0)
  {
    xSign = -1;
    xdistance = (short)(-xdistance);
  }


  if (xdistance > pWorld.width / 2)
  {
    xdistance = (short)(pWorld.width - xdistance);
    xSign = (short)(xSign * (-1));
  }


  if (xdistance < distance && xdistance > -distance)
  {

    ySign = 1;
    if (ydistance < 0)
    {
      ySign = -1;
      ydistance = (short)(-ydistance);
    }

    if (xdistance == 0)
    {
      pXSpeed[0] = 0;
      pYSpeed[0] = (short) maxYSpeed;
    }
    else if (ydistance == 0)
    {
      pYSpeed[0] = 0;
      pXSpeed[0] = (short) maxXSpeed;
    }
    else if (xdistance > ydistance)
    {
      pXSpeed[0] = (short) maxXSpeed;

      pYSpeed[0] = (short) ((maxXSpeed * ydistance) / xdistance);
    }
    else 
    {
      pYSpeed[0] = (short) maxYSpeed;

      pXSpeed[0] = (short) ((maxYSpeed * xdistance) / ydistance);
    }


    if (xSign == -1)
    {
      pXSpeed[0] = (short)(-(pXSpeed[0]));
    }
    if (ySign == -1)
    {
      pYSpeed[0] = (short)(-(pYSpeed[0]));
    }

    return true;
  }

  return false;
} 




/**
  * Updates the kidnappers. Makes the kidnappers behave in different ways.
  *
  */
byte

⌨️ 快捷键说明

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