亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? sensehandler.c

?? 機(jī)器足球2D比賽程序 對(duì)trlen_base_2002的改進(jìn)
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
    \param strMsg message that should be parsed    \return bool indicating whether the message was parsed correctly. */bool SenseHandler::analyzeSeeGlobalMessage( char *strMsg ){  Log.logWithTime( 2, " incoming see global message" );  strcpy( WM->strLastSeeMessage, strMsg );  ObjectT o;  bool    isGoalie;  double  dX, dY, dVelX, dVelY;  int     iTime;  AngDeg  angBody, angNeck;  Time    time = WM->getCurrentTime();  iTime = Parse::parseFirstInt( &strMsg );         // get the time  time.updateTime( iTime );  while( *strMsg != ')' )                          // " ((objname.." or ")"  {    dX = dY = dVelX = dVelY = UnknownDoubleValue;    angBody = angNeck = UnknownAngleValue;    strMsg += 2;          // go the start of the object name    // get the object type at the current position in the string    o = SoccerTypes::getObjectFromStr( &strMsg, &isGoalie, WM->getTeamName() );    if( o == OBJECT_ILLEGAL )    {      Log.log( 4, "Illegal object" );      Log.log( 4, "total messages: %s", WM->strLastSeeMessage );      Log.log( 4, "rest of message: %s", strMsg );    }    dX = Parse::parseFirstDouble( &strMsg );        // parse first value    dY = Parse::parseFirstDouble( &strMsg );        // parse second value    if ( *strMsg != ')' )                           // if it was no flag    {      dVelX = Parse::parseFirstDouble( &strMsg );   // parse delta x      dVelY = Parse::parseFirstDouble( &strMsg );   // parse delta y      if( *strMsg != ')' )                          // stil not finished      {                                             // get body and neck angle        angBody = Parse::parseFirstDouble( &strMsg );        angNeck = Parse::parseFirstDouble( &strMsg );      }    }    // skip ending bracket of object information.    strMsg++;    // process the parsed information (unread values are Unknown...)    WM->processSeeGlobalInfo( o, time, VecPosition(dX,dY),                    VecPosition(dVelX,dVelY), angBody, angNeck );    }  WM->setTimeLastSeeGlobalMessage( time );  // set time last see global message  return true;}/*! This method analyzes a sense message. All information from the player is    parsed and updated in the WorldModel.    A sense message looks like (sense_body 0 (view_mode high normal)    (stamina 2000 1) (speed 0 0) (head_angle 0) (kick 0) (dash 0)    (turn 0) (say 0) (turn_neck 0) (catch 0) (move 0) (change_view 0))    \param strMsg message that should be parsed    \return bool indicating whether the message was parsed correctly. */bool SenseHandler::analyzeSenseMessage( char *strMsg ){  setTimeSignal();                            // set signal when to send action  strcpy( WM->strLastSenseMessage, strMsg );   if( WM->getRelativeDistance( OBJECT_BALL ) < SS->getVisibleDistance() )    Log.logWithTime( 560, "%s", WM->strLastSenseMessage );  int iTime = Parse::parseFirstInt( &strMsg );// get time  Time timeOld = WM->getCurrentTime();  Time timeNew = timeOld;  timeNew.updateTime( iTime );  if( timeNew.getTimeDifference( timeOld ) > 1 )    Log.log( 1, "Missed a sense!!" );  Log.logWithTime ( 2, "\n\nSENSE (%d, %d)", timeNew.getTime(),  timeNew.getTimeStopped() );  Log.restartTimer( );  Log.logWithTime ( 2, " alarm after %d", iTimeSignal );  strMsg++;                                      // go to ( before view_mode  Parse::gotoFirstOccurenceOf( ' ', &strMsg );   // skip view_mode  strMsg++;                                      // skip space  ViewQualityT vq = SoccerTypes::getViewQualityFromStr( strMsg ); // get quality  Parse::gotoFirstOccurenceOf( ' ', &strMsg );  strMsg++;                                      // skip space; get view_angle  ViewAngleT va = SoccerTypes::getViewAngleFromStr( strMsg );  double dStamina = Parse::parseFirstDouble( &strMsg );  // get stamina  double dEffort  = Parse::parseFirstDouble( &strMsg );  // get effort  double dSpeed   = Parse::parseFirstDouble( &strMsg );  // get speed  AngDeg angSpeed = Parse::parseFirstDouble( &strMsg );  // get speed ang  // minus sign since we store angle between neck and body and not vice versa  int iHeadAngle = - Parse::parseFirstInt( &strMsg );    // get head_angle  WM->processNewAgentInfo( vq, va, dStamina, dEffort, dSpeed,        (AngDeg) angSpeed, (AngDeg)iHeadAngle );  // set all number of performed commands  WM->setNrOfCommands( CMD_KICK       , Parse::parseFirstInt( &strMsg ) );  WM->setNrOfCommands( CMD_DASH       , Parse::parseFirstInt( &strMsg ) );  WM->setNrOfCommands( CMD_TURN       , Parse::parseFirstInt( &strMsg ) );  WM->setNrOfCommands( CMD_SAY        , Parse::parseFirstInt( &strMsg ) );  WM->setNrOfCommands( CMD_TURNNECK   , Parse::parseFirstInt( &strMsg ) );  WM->setNrOfCommands( CMD_CATCH      , Parse::parseFirstInt( &strMsg ) );  WM->setNrOfCommands( CMD_MOVE       , Parse::parseFirstInt( &strMsg ) );  WM->setNrOfCommands( CMD_CHANGEVIEW , Parse::parseFirstInt( &strMsg ) );  WM->setTimeLastSenseMessage( timeNew ); // set the time  Log.logWithTime( 2, " end analyzing sense" );  return true;}/*! This method analyzes an init message. All information from the    initialization is parsed and updated in the WorldModel.    An init message looks like (init [l|r] 10 before_kick_off)    \param strMsg message that should be parsed    \return bool indicating whether the message was parsed correctly. */bool SenseHandler::analyzeInitMessage( char *strMsg ){  strMsg += 6;                                            // go to Side  WM->setSide( SoccerTypes::getSideFromStr( strMsg ) );   // get and set Side  int nr = Parse::parseFirstInt( &strMsg );               // get and set number  if( nr == 0 )                                           // coach  {     WM->setPlayerNumber( nr );     return true;  }  WM->setAgentObjectType( SoccerTypes::getTeammateObjectFromIndex( nr - 1 ) );  WM->setPlayerNumber( nr );  strMsg++;                                               // skip space to pm  WM->setPlayMode( SoccerTypes::getPlayModeFromStr( strMsg ) ); // get playmode  return true;}/*! This method analyzes a hear message. When the message is from the referee    the message is parsed and the new play mode is set or the goal difference is    adjusted. When the message comes from another player the method    analyzePlayerMessage is called    A hear message looks like (hear 0 self|referee|dir message)    \param strMsg message that should be parsed    \return bool indicating whether the message was parsed correctly. */bool SenseHandler::analyzeHearMessage( char *strMsg ){  RefereeMessageT rm;  PlayModeT       pm;  strcpy( WM->strLastHearMessage, strMsg);  Parse::parseFirstInt( &strMsg );                          // ignore time  Time time = WM->getCurrentTime();  switch( Parse::gotoFirstNonSpace( &strMsg ) )  {    case 'r':                                               // referee      WM->setTimeLastRefereeMessage( time );      Parse::gotoFirstOccurenceOf( ' ', &strMsg );          // go to start      Parse::gotoFirstNonSpace   ( &strMsg      );          // and first part      rm = SoccerTypes::getRefereeMessageFromStr( strMsg ); // get the ref msg      Log.logWithTime( 2, " referee message: %s %s",      SoccerTypes::getRefereeMessageStr(rm), WM->strLastHearMessage);      pm = SoccerTypes::getPlayModeFromRefereeMessage( rm );// get play mode      if( pm != PM_ILLEGAL )                                // from ref msg        WM->setPlayMode( pm );                              // if was pm, set it      switch( rm )      {        case REFC_GOAL_LEFT:                            // goal left          if( WM->getSide() == SIDE_LEFT )            WM->addOneToGoalDiff();          else            WM->subtractOneFromGoalDiff();          WM->processSeeGlobalInfo( OBJECT_BALL, time, VecPosition( 0, 0 ),               VecPosition( 0, 0 ), 0, 0 );          break;        case REFC_GOAL_RIGHT:                      // goal right          if( WM->getSide() == SIDE_RIGHT )            WM->addOneToGoalDiff();          else            WM->subtractOneFromGoalDiff();          WM->processSeeGlobalInfo( OBJECT_BALL, time, VecPosition( 0, 0 ),               VecPosition( 0, 0 ), 0, 0 );          break;        case REFC_GOALIE_CATCH_BALL_LEFT:         // catch ball        case REFC_GOALIE_CATCH_BALL_RIGHT:          WM->processCatchedBall( rm, time );          break;        case REFC_PENALTY_ONFIELD_LEFT:          WM->setSidePenalty( SIDE_LEFT );          break;        case REFC_PENALTY_ONFIELD_RIGHT:          WM->setSidePenalty( SIDE_RIGHT );          break;        case REFC_PENALTY_MISS_LEFT:        case REFC_PENALTY_SCORE_LEFT:          WM->setPlayMode( PM_FROZEN );          break;        case REFC_PENALTY_MISS_RIGHT:        case REFC_PENALTY_SCORE_RIGHT:          WM->setPlayMode( PM_FROZEN );                   break;        case REFC_PENALTY_FOUL_LEFT:        case REFC_PENALTY_FOUL_RIGHT:        default:          break;      }      break;    case 'o':                                               // online_coach_        break;    case 's':                                               // self      break;                                                // do nothing    default:                                                // from direction        Log.logWithTime( 600, "incoming hear: %s", WM->strLastHearMessage );        analyzePlayerMessage( strMsg );    // from player      break;  }  return true;}/*! This message analyzes an incoming communication message. Messages from    opponents are discarded. First it is checked whether the message arrived    from a teammate using a specific encoding string and then the contents    are parsed and stored in the world model, which will process it when it    updates the world model. */bool SenseHandler::analyzePlayerMessage( char *strMsg ){  Parse::gotoFirstNonSpace( &strMsg );            // skip space    if( WM->getPlayerNumber() == 0 )                // if i am coach    return false;                                 //   skip message  if( strlen( strMsg ) < 2 || strMsg[0] == 'o' )  // skip message since no dir.    return false;                                 // thus no content  Parse::parseFirstInt( &strMsg );                // skip direction  Parse::gotoFirstNonSpace( &strMsg );            // skip space    if( strlen( strMsg ) < 2 || strMsg[1] == 'p' )  // skip message when from opp    return false;                                   int iPlayer = Parse::parseFirstInt( &strMsg );  // get player number  Parse::gotoFirstNonSpace( &strMsg );            // skip space    strMsg++;                                       // skip " (=quote)  if( strlen( strMsg ) < 4 )              // < 2 + two ending charactres ")    return false;  WM->storePlayerMessage( iPlayer, strMsg, WM->getCurrentCycle() );  return true;}/*! This method analyzes the check_ball message that is only received by the

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高清视频一区二区| 亚洲综合激情小说| 一区二区在线看| 天堂va蜜桃一区二区三区漫画版| 久久精品久久99精品久久| 国产美女精品一区二区三区| 97精品超碰一区二区三区| 欧美乱妇一区二区三区不卡视频| 亚洲精品一区二区三区福利| 亚洲三级理论片| 麻豆中文一区二区| 91亚洲精品一区二区乱码| 91精品国产aⅴ一区二区| 亚洲国产精品二十页| 午夜欧美一区二区三区在线播放| 国产精品综合av一区二区国产馆| 91丨porny丨中文| 精品美女在线播放| 亚洲精品精品亚洲| 国产在线精品免费| 欧美日韩国产精选| 中文字幕免费一区| 婷婷综合另类小说色区| 丁香婷婷综合五月| 日韩一区二区三区视频在线观看| 最新国产の精品合集bt伙计| 老司机午夜精品| 欧美最新大片在线看| 国产婷婷精品av在线| 亚欧色一区w666天堂| 成人免费视频免费观看| 日韩女优毛片在线| 亚洲国产乱码最新视频 | 欧美一区二区三区四区久久| 国产精品欧美久久久久无广告| 视频一区在线播放| 色偷偷久久人人79超碰人人澡| 久久午夜羞羞影院免费观看| 日韩avvvv在线播放| 色综合久久综合| 国产视频一区在线观看| 美女视频黄a大片欧美| 在线观看成人小视频| 中文字幕久久午夜不卡| 国产真实乱子伦精品视频| 欧美视频一区二区三区在线观看 | 91浏览器打开| 国产女人18毛片水真多成人如厕 | 久久精品免费在线观看| 日本不卡视频在线| 欧美日韩视频在线一区二区| 亚洲乱码中文字幕| 成人av电影在线网| 欧美韩国日本综合| 国产伦精品一区二区三区视频青涩| 91精品国产91热久久久做人人| 亚洲香蕉伊在人在线观| 色综合久久88色综合天天免费| 国产精品亲子乱子伦xxxx裸| 国产不卡视频在线播放| 久久夜色精品国产噜噜av| 捆绑调教一区二区三区| 日韩欧美久久久| 蜜臀精品一区二区三区在线观看| 欧美日韩日本视频| 亚洲国产cao| 欧美日韩精品综合在线| 亚洲精品水蜜桃| 91福利在线观看| 亚洲综合无码一区二区| 在线观看欧美精品| 亚洲国产成人91porn| 欧美日韩久久不卡| 日韩国产在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 国产一区二区91| 国产午夜精品久久久久久免费视 | 18成人在线观看| 95精品视频在线| 亚洲欧洲精品一区二区精品久久久 | xfplay精品久久| 国产成人av资源| 国产精品对白交换视频| 91免费观看视频| 亚洲高清在线视频| 7777精品伊人久久久大香线蕉经典版下载 | 在线看一区二区| 亚洲国产精品尤物yw在线观看| 欧美日韩成人高清| 青娱乐精品视频| 久久久久久日产精品| 福利一区二区在线| 亚洲色图清纯唯美| 欧美丝袜丝nylons| 蜜桃av噜噜一区| 日本一区二区三区高清不卡| 99久久er热在这里只有精品15| 亚洲日本在线a| 7777精品伊人久久久大香线蕉完整版 | 欧美高清视频不卡网| 麻豆极品一区二区三区| 欧美国产精品专区| 在线一区二区三区| 男女视频一区二区| 欧美激情一区二区三区| 欧美综合天天夜夜久久| 看电视剧不卡顿的网站| 国产精品久久久一区麻豆最新章节| 91蝌蚪国产九色| 午夜久久久影院| 国产午夜亚洲精品午夜鲁丝片| 91捆绑美女网站| 久久国产剧场电影| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 91视频免费看| 日韩有码一区二区三区| 国产欧美日韩视频一区二区| 欧美亚洲国产一区在线观看网站| 美日韩黄色大片| 亚洲欧美国产77777| 欧美一区二区久久| av资源站一区| 日本免费新一区视频| 成人免费视频在线观看| 精品国产自在久精品国产| 91在线高清观看| 韩国精品主播一区二区在线观看| 亚洲人吸女人奶水| 欧美mv日韩mv国产网站app| 色欧美乱欧美15图片| 国内成人精品2018免费看| 亚洲自拍偷拍av| 国产无一区二区| 日韩一区二区精品葵司在线| 91麻豆产精品久久久久久| 精品一区二区精品| 午夜天堂影视香蕉久久| 国产精品免费久久久久| 欧美一级日韩一级| 色琪琪一区二区三区亚洲区| 国产成人精品免费网站| 日韩电影在线观看一区| 亚洲美女在线一区| 国产欧美一区二区精品性色| 日韩一区二区在线观看视频 | 蜜臀精品一区二区三区在线观看| 最新不卡av在线| 久久美女艺术照精彩视频福利播放| 欧美日韩国产一级片| eeuss国产一区二区三区| 国产一区二区免费视频| 七七婷婷婷婷精品国产| 亚洲午夜视频在线| 亚洲桃色在线一区| 欧美极品美女视频| 久久久久久久国产精品影院| 欧美日韩国产免费一区二区| 色偷偷成人一区二区三区91| 成人永久看片免费视频天堂| 国产精品一区不卡| 久久精品免费观看| 日本成人在线电影网| 亚洲国产一区二区三区| 亚洲日本成人在线观看| 成人欧美一区二区三区小说| 久久久精品一品道一区| 2021中文字幕一区亚洲| 欧美一级久久久久久久大片| 91麻豆精品国产91久久久久| 欧美日韩在线观看一区二区| 日本精品一区二区三区高清| 91影院在线观看| 色噜噜狠狠成人网p站| 99视频热这里只有精品免费| 成人h动漫精品| 国产成人亚洲综合a∨婷婷 | 亚洲欧美自拍偷拍色图| 中文字幕巨乱亚洲| 国产精品久久久久一区二区三区| 中文字幕精品综合| 国产精品国产三级国产a| 国产精品麻豆99久久久久久| 国产精品毛片久久久久久| 亚洲国产精品黑人久久久| 亚洲国产精品ⅴa在线观看| 国产精品污网站| 国产精品福利一区二区三区| 亚洲欧洲日韩av| 夜夜嗨av一区二区三区| 亚洲图片有声小说| 五月天国产精品| 麻豆国产精品官网| 国产精品伊人色| 成人高清视频免费观看| 色欲综合视频天天天| 欧美视频一区在线| 日韩欧美在线综合网| 久久久久久电影| 亚洲视频在线一区观看| 一区二区在线观看av|