Esempio n. 1
0
/*---------------------------------------------------------------------------*/
void Car::advance( int step )
{
	if(!step)
		return;

    //  How to turn, every derived class need reimplement this function;
    turnDirection();
	//  Check if this advance should go bForward.
	checkLightForward();
}
void getNextMove(Cell board[BOARD_HEIGHT][BOARD_WIDTH], char * token,Player * player){

	if ((strcmp(token,COMMAND_FORWARD) == 0) || (strcmp(token,COMMAND_FORWARD_SHORTCUT) == 0))
	{
		movePlayerForward(board,player);
		displayBoard(board,player);
	}
	else if ((strcmp(token,COMMAND_TURN_LEFT) == 0) || (strcmp(token,COMMAND_TURN_LEFT_SHORTCUT) == 0))
	{
		turnDirection(player,TURN_LEFT);
		displayBoard(board,player);
	}
	else if ((strcmp(token,COMMAND_TURN_RIGHT) == 0) || (strcmp(token,COMMAND_TURN_RIGHT_SHORTCUT) == 0))
	{
		turnDirection(player,TURN_RIGHT);
		displayBoard(board,player);
	}
	else{
		printf("Please try agian :)\n");
	}
}
int main(){
while(1){
switch(state)
{
case 1:
	if(digitalRead(FRONT)==1)
	{	goUntilLROn();
		turnDirection(right);
	}
	if(digitalRead(RIGHT)==1)
	{
		driveForward();
	}
	else 
		turnRight(10);
default : break;
}
}
}
void SpaceObjectShip :: update(qint64 time)
{
  if (mTargetX != -1 && mTargetY != -1)
  {
    double tAngle = angle(mCoordX, mCoordY, mTargetX, mTargetY);
    double dist = distance(mCoordX, mCoordY, mTargetX, mTargetY) / 4;
    double diff = angleDiff(mRotation, tAngle);

    mDirection = turnDirection(mRotation, tAngle);

    if (diff > -dist && diff < dist)
      mTrust = true;
    else
      mTrust = false;

    if (dist < 2)
    {
      mTargetX = -1;
      mTargetY = -1;
      mTrust = false;
      mDirection = 0;
    }
  }


  /* normal calculation of rotation / thrust */
  mRotation += mDirection * (time / 1000.0) * ROT_PER_SEC;

  if (mRotation < 0) mRotation += 360;
  if (mRotation >= 360) mRotation -= 360;

  if (mTrust)
  {
    mCoordX += qCos( DEG2RAD(mRotation) ) * (time / 1000.0) * SPEED_PER_SEC;
    mCoordY += qSin( DEG2RAD(mRotation) ) * (time / 1000.0) * SPEED_PER_SEC;
  }
}