/*---------------------------------------------------------------------------*/ 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; } }