📄 inferencebrain.cpp.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 + -