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

📄 param.cpp~

📁 底层robocup3d源码。 suse10.0 kdevelop 开发.
💻 CPP~
字号:
#include "param.h"#include <sstream>#include <iostream>namespace MSpace {Param::Param(){     CycleSent=0;     CycleReceive=0;     PlayMode="BeforeKickOff";     FieldLength=110.0,FieldWidth= 75.0,FieldHeight= 40.0;     GoalWidth= 7.32,GoalDepth= 2.0,GoalHeight= 0.5;     BorderSize= 10.0,AgentMass= 75.0,AgentRadius= 0.22,AgentMaxSpeed= 10.0;     BallMass=0.45,Battery=100.0,Temperature=23.0;     CycleSent=0;CycleReceive=0;     Time=0;BallRadius=0.111;     IsKnowNumber=false;     Reaction=false;     PlayerNumber=-1;     UseThinkTime=0;     IsLeft=false;     pan=0;tilt=0;     HearDegree=0;     HearTime=0;     TeamName="lwp";     for(int i=0;i<8;i++)	     FGCycle[i]=0;     for(int j=0;j<11;j++)     {	     MateCycle[j]=0;	     OpponentCycle[j]=0;     }     BallCycle=0;}void  Param::prase(const char *message,int MessageLength){    if(message[0]=='S'||message[0]=='I')    {        if(message[0]=='S')Reaction=true;        else  Reaction=false;        int i=1;        CycleSent=GetFloat(message,i);        CycleReceive=GetFloat(message,i);        std::string str;        while(i<MessageLength)        {           str=GetString(message,i);           if(str=="Flag")           {               GetString(message,i);               std::string str2=GetString(message,i);               GetString(message,i);	       if(str2=="1_l"){GetPol(FG_Pol[0],message,i);FGCycle[0]=CycleSent;}	       else if(str2=="1_r"){GetPol(FG_Pol[2],message,i);FGCycle[2]=CycleSent;}	       else if(str2=="2_l"){GetPol(FG_Pol[1],message,i);FGCycle[1]=CycleSent;}	       else if(str2=="2_r"){GetPol(FG_Pol[3],message,i);FGCycle[3]=CycleSent;}           }           else if(str=="Goal")           {               GetString(message,i);               std::string str2=GetString(message,i);               GetString(message,i);	       if(str2=="1_l"){GetPol(FG_Pol[4],message,i);FGCycle[4]=CycleSent;}	       else if(str2=="1_r"){GetPol(FG_Pol[6],message,i);FGCycle[6]=CycleSent;}	       else if(str2=="2_l"){GetPol(FG_Pol[5],message,i);FGCycle[5]=CycleSent;}	       else if(str2=="2_r"){GetPol(FG_Pol[7],message,i);FGCycle[7]=CycleSent;}           }           else if(str=="Ball")           {              GetString(message,i);              GetPol(ball,message,i);	      BallCycle=CycleSent;           }           else if(str=="Player")           {               GetString(message,i);               std::string str2=GetString(message,i);               GetString(message,i);               int num=GetFloat(message,i);               if(num>=1&&num<=11)               {                   GetString(message,i);		   if(str2==TeamName)		   {			   GetPol(Player_teammate[num-1],message,i);MateCycle[num-1]=CycleSent;		   }		   else {			   GetPol(Player_opponent[num-1],message,i);OpponentCycle[num-1]=CycleSent;		        }               }           }           else if(str=="time")           {              double temp=GetFloat(message,i);              if(temp>0)Time=temp;           }           else if(str=="playmode")           {              PlayMode=GetString(message,i);           }           else  if(str=="battery")           {              Battery=GetFloat(message,i);           }           else if(str=="temp")           {              Temperature=GetFloat(message,i);           }	   else if(str=="pan_tilt")	   {		   pan=GetFloat(message,i);		   tilt=GetFloat(message,i);	   }	   else if(str=="hear")	   {		   HearTime=GetFloat(message,i);		   HearDegree=GetFloat(message,i);		   HearWord=GetString(message,i);		   if(HearDegree==0&&HearWord=="self")	                   HearWord=GetString(message,i);		   }        }    }    else if(message[0]=='T')    {        int i=1;        CycleSent=GetFloat(message,i);	CycleReceive=CycleSent;        Reaction=true;    }    else  if(message[0]=='K')    {         int i=1;         UseThinkTime=GetFloat(message,i);         Reaction=false;    }    else if(message[0]=='O')    {        int i=1;        CycleSent=GetFloat(message,i);        CycleReceive=CycleSent+10;        Reaction=false;    }    else  Reaction=false;}void  Param::prase(const std::string& message,int MessageLength){     prase(message.c_str(),MessageLength);}void  Param::GetInit(const char *message,int MessageLength){     std::string str=message;     int i=str.find("GameState");     if(i<str.length())     {  i=i+10;        std::string str2;        while(i<MessageLength)        {           str2=GetString(message,i);           if(str2=="time")Time=GetFloat(message,i);           else if(str2=="playmode")           {              PlayMode=GetString(message,i);              break;           }           else if(str2=="unum")           {              PlayerNumber=GetFloat(message,i);              IsKnowNumber=true;           }           else if(str2=="team")           {              if(GetString(message,i)=="left")IsLeft=true;              else IsLeft=false;           }           else if(str2=="FieldLength")FieldLength=GetFloat(message,i);           else if(str2=="FieldWidth")FieldWidth=GetFloat(message,i);           else if(str2=="BallMass")BallMass=GetFloat(message,i);        }             }}std::string  Param::GetString(const char *message,int &i){    while(message[i]==' '||message[i]==')'||message[i]=='(')i++;    std::string str="";    while(!(message[i]==' '||message[i]==')'||message[i]=='(')&&i<strlen(message))    {       str=str+message[i];       i++;    }    return  str;}bool Param::GetCycle(const char *message){   int i=1;   CycleSent=GetFloat(message,i);   CycleReceive=CycleSent+10;   return true;}double Param::GetFloat(const char *message,int& i){     while(message[i]==' '||message[i]==')'||message[i]=='(')i++;     double plus;     if(message[i]=='-'){plus=-1.0;++i;}     else plus=1.0;     double tempf=0.0;     double  jinzhi=1.0;     bool  xiaoshu=false;      while((message[i]<='9'&&message[i]>='0')||message[i]=='.')        {           if(message[i]!='.')           {              if(!xiaoshu)tempf=tempf*10.0+(double)(message[i]-'0');              else              {                  jinzhi=jinzhi/10.0;                  tempf=tempf+jinzhi*((double)(message[i]-'0'));              }           }           else xiaoshu=true;           i++;        }      return tempf*plus;}void Param::GetPol(Pol &p,const char *message,int& i){    p.Px=GetFloat(message,i);    p.Py=GetFloat(message,i);    p.Pz=GetFloat(message,i);    if(p.Pz==0.0)    {	    int j=i;	    std::string str=GetString(message,j);	    if(str=="nan")GetString(message,i);    }}bool  Param::GetPlayMode(const char *message){     std::string str=message;     int i=str.find("playmode");     if(i<str.length())     {  i=i+8;        PlayMode=GetString(message,i);        return true;     }     else return false;}bool  Param::GetNumber(const char *message){    std::string str=message;     int i=str.find("unum");     if(i<str.length())     {  i=i+4;        PlayerNumber=GetFloat(message,i);        IsKnowNumber=true;        return true;     }     else return false;}Pol  Param::GetFlag(std::string FalgName,std::string FlagNumber,const char *message){   std::string str2=FalgName+" (id "+FlagNumber;   std::string str=message;     int i=str.find(str2);     Pol p;     if(i<str.length())     {  i=i+18;        p.Px=GetFloat(message,i);        p.Py=GetFloat(message,i);        p.Pz=GetFloat(message,i);     }     return p;}double  Param::GetState(std::string State,const char *message){     std::string str=message;     int i=str.find(State);     if(i<str.length())     {        i=i+State.length();        return GetFloat(message,i);     }     else return -1.0;}bool  Param::GetBall(const char *message){     std::string str2="Ball (pol";     std::string str=message;     int i=str.find(str2);     if(i<str.length())     {  i=i+str2.length();        ball.Px=GetFloat(message,i);        ball.Py=GetFloat(message,i);        ball.Pz=GetFloat(message,i);        return true;     }     else  return false;}bool  Param::GetPlayer(std::string team_name,int Number,const char *message){           std::string str2;     if(Number<=0||Number>11)return false;     else if(0<Number&&Number<10)     {         char ch='0'+Number;         str2="team "+team_name+") (id "+ch;     }     else if(Number==10)str2="team "+team_name+") (id "+"10";     else str2="team "+team_name+") (id "+"11";     std::string str=message;     int i=str.find(str2);     if(i<str.length())     {  i=i+str2.length()+7;        if(team_name==TeamName)        {           Player_teammate[Number-1].Px=GetFloat(message,i);           Player_teammate[Number-1].Py=GetFloat(message,i);           Player_teammate[Number-1].Pz=GetFloat(message,i);        }        else         {           Player_opponent[Number-1].Px=GetFloat(message,i);           Player_opponent[Number-1].Py=GetFloat(message,i);           Player_opponent[Number-1].Pz=GetFloat(message,i);        }        return true;     }     else  return false;}Param::~Param(){         }}

⌨️ 快捷键说明

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