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

📄 inferencebrain.cpp.svn-base

📁 一个巴西大学编写的2D仿真组足球机器人程序
💻 SVN-BASE
字号:
#include "InferenceBrain.h"InferenceBrain::InferenceBrain():Brain(){   emptyRulesBase = true;}Behavior* InferenceBrain::think( Formations*  formations ){   if ( emptyRulesBase )   {      instintive.loadRulesBase();      emptyRulesBase = false;   }   outputMessage = instintive.makeInference();   return selectBehavior( outputMessage, formations );}Behavior* InferenceBrain::selectBehavior( string outputMessage, Formations* formations ){   Behavior* actualBehavior = NULL;   VecPosition   posAgent = WM->getAgentGlobalPosition();   VecPosition   posBall  = WM->getBallPos();   int           iTmp;   if( WM->isBeforeKickOff( ) )   {      if( WM->isKickOffUs( ) && WM->getPlayerNumber() == 9 ) // 9 takes kick      {         if( WM->isBallKickable() )         {            // pass Ball             mpPassBall->simpleLeadingPass( OBJECT_TEAMMATE_5 );            actualBehavior = mpPassBall;            Log.log( 100, "take kick off" );         }         else         {            // intercept ball            mpInterceptBall->InterceptDefault();            actualBehavior = mpInterceptBall;            Log.log( 100, "move to ball to take kick-off" );         }         return actualBehavior;      }      if( formations->getFormation() != FT_INITIAL || // not in kickoff formation          posAgent.getDistanceTo( WM->getStrategicPosition() ) > 2.0 )        {         formations->setFormation( FT_INITIAL );      // go to kick_off formation         actualBehavior = mpTeleport;      }      else                                            // else turn to center      {         actualBehavior = mpSearchBall;      }   }   else   {      if( WM->getClosestInSetTo( OBJECT_SET_TEAMMATES , OBJECT_BALL ) == OBJECT_TEAMMATE_1 )         formations->setFormation( FT_DEFENSIVE );      else         formations->setFormation( FT_433_OFFENSIVE );      if ( outputMessage == "search_ball" )      {         actualBehavior = mpSearchBall;      }      else if ( outputMessage == "pass_ball_foward" )      {         mpPassBall->passBallFoward();         actualBehavior = mpPassBall;      }      else if ( outputMessage == "drive_ball_foward" )      {         mpDriveBall->driveBall();         mpDriveBall->setLookAt( OBJECT_OPPONENT_1 );         mpDriveBall->setDribbleType( DRIBBLE_WITHBALL );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "dribble_slow_right" )      {         mpDriveBall->dribbleRight();         mpDriveBall->setLookAt( OBJECT_OPPONENT_1 );         mpDriveBall->setDribbleType( DRIBBLE_SLOW );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "dribble_slow_left" )      {         mpDriveBall->dribbleLeft();         mpDriveBall->setLookAt( OBJECT_OPPONENT_1 );         mpDriveBall->setDribbleType( DRIBBLE_SLOW );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "dribble_right" )      {         mpDriveBall->dribbleRight();         mpDriveBall->setLookAt( OBJECT_OPPONENT_1 );         mpDriveBall->setDribbleType( DRIBBLE_FAST );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "dribble_left" )      {         mpDriveBall->dribbleLeft();         mpDriveBall->setLookAt( OBJECT_OPPONENT_1 );         mpDriveBall->setDribbleType( DRIBBLE_FAST );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "dribble_right_looking_at_9" )      {         mpDriveBall->dribbleRight();         mpDriveBall->setLookAt( OBJECT_TEAMMATE_9 );         mpDriveBall->setDribbleType( DRIBBLE_FAST );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "dribble_left_looking_at_9" )      {         mpDriveBall->dribbleLeft();         mpDriveBall->setLookAt( OBJECT_TEAMMATE_9 );         mpDriveBall->setDribbleType( DRIBBLE_FAST );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "drive_ball_looking_at_9" )      {         mpDriveBall->driveBall();         mpDriveBall->setLookAt(OBJECT_TEAMMATE_9);         mpDriveBall->setDribbleType( DRIBBLE_WITHBALL );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "drive_ball_looking_at_6" )      {         mpDriveBall->driveBall();         mpDriveBall->setLookAt(OBJECT_TEAMMATE_6);         mpDriveBall->setDribbleType( DRIBBLE_WITHBALL );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "drive_ball_looking_at_7_8" )      {         mpDriveBall->driveBall();         mpDriveBall->setLookAt2(OBJECT_TEAMMATE_7,OBJECT_TEAMMATE_8);         mpDriveBall->setDribbleType( DRIBBLE_WITHBALL );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "drive_ball_looking_at_7_9" )      {         mpDriveBall->driveBall();         mpDriveBall->setLookAt2(OBJECT_TEAMMATE_7,OBJECT_TEAMMATE_9);         mpDriveBall->setDribbleType( DRIBBLE_WITHBALL );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "drive_ball_looking_at_8_9" )      {         mpDriveBall->driveBall();         mpDriveBall->setLookAt2(OBJECT_TEAMMATE_8,OBJECT_TEAMMATE_9);         mpDriveBall->setDribbleType( DRIBBLE_WITHBALL );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "drive_ball_looking_at_9_11" )      {         mpDriveBall->driveBall();         mpDriveBall->setLookAt2(OBJECT_TEAMMATE_9,OBJECT_TEAMMATE_11);         mpDriveBall->setDribbleType( DRIBBLE_WITHBALL );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "drive_ball_looking_at_9_10" )      {         mpDriveBall->driveBall();         mpDriveBall->setLookAt2(OBJECT_TEAMMATE_9,OBJECT_TEAMMATE_10);         mpDriveBall->setDribbleType( DRIBBLE_WITHBALL );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "drive_ball_looking_at_10_11" )      {         mpDriveBall->driveBall();         mpDriveBall->setLookAt2(OBJECT_TEAMMATE_10,OBJECT_TEAMMATE_11);         mpDriveBall->setDribbleType( DRIBBLE_WITHBALL );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "drive_ball_looking_at_10" )      {         mpDriveBall->driveBall();         mpDriveBall->setLookAt(OBJECT_TEAMMATE_10);         mpDriveBall->setDribbleType( DRIBBLE_WITHBALL );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "drive_ball_looking_at_11" )      {         mpDriveBall->driveBall();         mpDriveBall->setLookAt(OBJECT_TEAMMATE_11);         mpDriveBall->setDribbleType( DRIBBLE_WITHBALL );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "drive_ball_slow" )      {         mpDriveBall->driveBall();         mpDriveBall->setDribbleType( DRIBBLE_SLOW );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "drive_ball_slow_looking_at_9" )      {         mpDriveBall->driveBall();         mpDriveBall->setLookAt(OBJECT_TEAMMATE_9);         mpDriveBall->setDribbleType( DRIBBLE_SLOW );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "kick_to_goal" )      {         mpKickToGoal->kickToGoal();         actualBehavior = mpKickToGoal;      }      else if ( outputMessage == "kick_to_goal_right" )      {         mpKickToGoal->kickToGoalRight();         actualBehavior = mpKickToGoal;      }      else if ( outputMessage == "kick_to_goal_left" )      {         mpKickToGoal->kickToGoalLeft();         actualBehavior = mpKickToGoal;      }      else if ( outputMessage == "kick_to_goal_center" )      {         mpKickToGoal->kickToGoalCenter();         actualBehavior = mpKickToGoal;      }      else if ( outputMessage == "pass_ball" )      {         mpPassBall->passBall();         actualBehavior = mpPassBall;      }      else if ( outputMessage == "cobranca_7_8" )      {         mpPassBall->cobranca( OBJECT_TEAMMATE_7 , OBJECT_TEAMMATE_8 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "cobranca_7_10" )      {         mpPassBall->cobranca( OBJECT_TEAMMATE_7 , OBJECT_TEAMMATE_10 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "cobranca_8_11" )      {         mpPassBall->cobranca( OBJECT_TEAMMATE_8 , OBJECT_TEAMMATE_11 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "cobranca_7_9" )      {         mpPassBall->cobranca( OBJECT_TEAMMATE_7 , OBJECT_TEAMMATE_9 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "cobranca_8_9" )      {         mpPassBall->cobranca( OBJECT_TEAMMATE_8 , OBJECT_TEAMMATE_9 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "cobranca_6_7" )      {         mpPassBall->cobranca( OBJECT_TEAMMATE_6 , OBJECT_TEAMMATE_7 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "cobranca_6_8" )      {         mpPassBall->cobranca( OBJECT_TEAMMATE_6 , OBJECT_TEAMMATE_8 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "cobranca_9_10" )      {         mpPassBall->cobranca( OBJECT_TEAMMATE_9 , OBJECT_TEAMMATE_10 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "cobranca_9_11" )      {         mpPassBall->cobranca( OBJECT_TEAMMATE_9 , OBJECT_TEAMMATE_11 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "intercept_ball" )      {         mpInterceptBall->InterceptDefault();         actualBehavior = mpInterceptBall;      }      else if ( outputMessage == "intercept_fast" )      {         mpInterceptBall->InterceptFast();         actualBehavior = mpInterceptBall;      }      else if ( outputMessage == "intercept_slow" )      {         mpInterceptBall->InterceptSlow();         actualBehavior = mpInterceptBall;      }      else if ( outputMessage == "strategic_position" )      {         actualBehavior = mpGoStrategicPosition;      }      else if ( outputMessage == "mark_opponent" )      {         mpMarkOpponent->markBall();         actualBehavior = mpMarkOpponent;      }      else if ( outputMessage == "mark_bisector" )      {         mpMarkOpponent->markBisector();         actualBehavior = mpMarkOpponent;      }      else if ( outputMessage == "mark_goal" )      {         mpMarkOpponent->markGoal();         actualBehavior = mpMarkOpponent;      }      else if ( outputMessage == "free_mark" )      {         mpStayAwayOfMark->freeMark();          actualBehavior = mpStayAwayOfMark;      }      else if ( outputMessage == "free_mark_pos" )      {         mpStayAwayOfMark->freeMarkPos();          actualBehavior = mpStayAwayOfMark;      }      else if ( outputMessage == "drive_ball_fast" )      {         mpDriveBall->driveBall();         mpDriveBall->setDribbleType( DRIBBLE_FAST );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "drive_ball_fast_looking_at_9" )      {         mpDriveBall->driveBall();         mpDriveBall->setLookAt( OBJECT_TEAMMATE_9 );         mpDriveBall->setDribbleType( DRIBBLE_FAST );         actualBehavior = mpDriveBall;      }      else if ( outputMessage == "hold_ball" )      {         actualBehavior = mpHoldBall;      }      else if ( outputMessage == "advanced_pass_10" )      {         mpPassBall->advancedPass( OBJECT_TEAMMATE_10 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "pass_ball_10" )      {         mpPassBall->simpleLeadingPass( OBJECT_TEAMMATE_10 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "pass_ball_11" )      {         mpPassBall->simpleLeadingPass( OBJECT_TEAMMATE_11 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "advanced_pass_11" )      {         mpPassBall->advancedPass( OBJECT_TEAMMATE_11 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "pass_ball_8" )      {         mpPassBall->simpleLeadingPass( OBJECT_TEAMMATE_8 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "pass_ball_7" )      {         mpPassBall->simpleLeadingPass( OBJECT_TEAMMATE_7 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "pass_ball_6" )      {         mpPassBall->simpleLeadingPass( OBJECT_TEAMMATE_6 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "pass_ball_5" )      {         mpPassBall->simpleLeadingPass( OBJECT_TEAMMATE_5 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "pass_ball_9" )      {         /*if( (WM->getPlayerNumber() == 10) || (WM->getPlayerNumber() == 11) )         {            if( (WM->getGlobalPosition( OBJECT_TEAMMATE_9 ).getX() > 30) && (WM->getGlobalPosition( OBJECT_TEAMMATE_9 ).getX()< 40) )            {*/               mpPassBall->simpleLeadingPass( OBJECT_TEAMMATE_9 );               actualBehavior = mpPassBall;            /*}            else  //passa à frente            {               mpPassBall->advancedPass( OBJECT_TEAMMATE_9 );               actualBehavior = mpPassBall;            }         }         else         {            mpPassBall->simpleLeadingPass( OBJECT_TEAMMATE_9 );            actualBehavior = mpPassBall;         }*/      }      else if ( outputMessage == "advanced_pass_9" )      {         mpPassBall->advancedPass( OBJECT_TEAMMATE_9 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "fast_pass_9" )      {         mpPassBall->fastPass( OBJECT_TEAMMATE_9 );         actualBehavior = mpPassBall;      }      else if ( outputMessage == "advance" )      {         actualBehavior = mpAdvance;      }      /*else if ( outputMessage == "no_output_message" )         cout << " Sem regras selecionadas. "<< endl;*/   }   return actualBehavior;}

⌨️ 快捷键说明

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