/** * Processes the server tips * @param tip The server tip in string shape */ void BFClientBasicState::reactOnServerTip (const string& tip) throw (StrategyException,bad_exception) { if (tip=="STARTROTATION") sendRTBMessageRotate(6,_go->ROBOT_CANNON_MAX_ROTATE); else if (tip=="STOPROTATION") sendRTBMessageRotate(6,0.0); else _bfcsp->getLogger()->logMessage(100,"Unknown server tip in brotfrucht: "+tip); }
void ColumbusClientBaseState::driveTowards (const Position& pos) throw (bad_exception) { static double para=M_PI*_go->ROBOT_MAX_ACCELERATION; static double M2PI=M_PI+M_PI; static RobotInfo *i=&(_csp->getRobotInfo()); double dx=pos.x-i->pos.x; double dy=pos.y-i->pos.y; double force=dx*dx+dy*dy; force=(M_1_PI-M_1_PI/(1+force))*.8+.2; double dir=dx==0.&&dy==0.?0.:atan2(dy,dx)-i->dirRobot; dir-=M2PI*int(dir/M2PI); while(dir<-M_PI) dir+=M2PI; while(dir>=M_PI) dir-=M2PI; sendRTBMessageDebugLine(0,0,dir,.6+force); double ad=fabs(dir); if(ad>M_PI_2) sendRTBMessageBrake(force*(ad-M_PI)); else sendRTBMessageAccelerate(force*(para-_go->ROBOT_MAX_ACCELERATION*ad)); sendRTBMessageRotate(1,force*dir*_go->ROBOT_MAX_ROTATE); }