📄 gamegame.java
字号:
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 + -