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

📄 kicktogoal.cpp.svn-base

📁 一个巴西大学编写的2D仿真组足球机器人程序
💻 SVN-BASE
字号:
#include "KickToGoal.h"SoccerCommand KickToGoal::primaryAction(){   return primarySoc;}SoccerCommand KickToGoal::cuncurrentAction(){   return turnNeckToObject( OBJECT_BALL, primarySoc );}KickToGoal::KickToGoal():Behavior(){   posGoal.setX(PITCH_LENGTH/2.0);   posGoal.setY(0.4 * SS->getGoalWidth());}void KickToGoal::kickToGoal(){   posGoal.setY( posGoal.getY() * ( getPositionYOpponent1() ) );   primarySoc = kickTo( posGoal, SS->getBallSpeedMax() );}double KickToGoal::getPositionYOpponent1(){   if( (WM->isVisible( OBJECT_OPPONENT_1 )) && (WM->getAgentGlobalPosition().getX() > 25 ))   {      if(WM->getSide() == SIDE_LEFT)      {         //verifica se o goleiro esta fora da area de chute a gol, do lado esquerdo do campo.         if( abs((int)WM->getRelativeAngle( OBJECT_FLAG_G_L_T, false) - (int)WM->getRelativeAngle( OBJECT_GOAL_L, false )) < abs( (int)WM->getRelativeAngle( OBJECT_OPPONENT_1, false) - (int)WM->getRelativeAngle( OBJECT_GOAL_L, false )))         return 0;         //verifica qual angulo esta mais aberto para o chute.         else if( abs((int)WM->getRelativeAngle( OBJECT_FLAG_G_L_T, false )-  (int)WM->getRelativeAngle(OBJECT_OPPONENT_1,false))  >  abs((int)WM->getRelativeAngle(OBJECT_OPPONENT_1,false) - (int)WM->getRelativeAngle(OBJECT_FLAG_G_L_B,false) ) )          return 1; //right         else return -1; //left      }      else if( WM->getSide() == SIDE_RIGHT)      {         //verifica se o goleiro esta fora da area de chute a gol, do lado direito do campo.         if( abs((int)WM->getRelativeAngle( OBJECT_FLAG_G_R_T, false) - (int)WM->getRelativeAngle( OBJECT_GOAL_R, false )) < abs( (int)WM->getRelativeAngle( OBJECT_OPPONENT_1, false) - (int)WM->getRelativeAngle( OBJECT_GOAL_R, false )))         return 0;          //verifica qual angulo esta mais aberto para o chute.         else if( abs( (int)WM->getRelativeAngle(OBJECT_FLAG_G_R_T,false) - (int)WM->getRelativeAngle(OBJECT_OPPONENT_1,false)) > abs( (int)WM->getRelativeAngle(OBJECT_OPPONENT_1,false) - (int)WM->getRelativeAngle(OBJECT_FLAG_G_R_B,false)))          return 1; //left          else return -1; //right      }   }   else return (-1 + 2*(WM->getCurrentCycle()%2));}/*! Este metodo configura o agente a chutar a bola para frente em direcao ao canto direito do gol com    uma potencia maxima. */void KickToGoal::kickToGoalRight(){   double pos;   pos = 0.4 * SS->getGoalWidth();   VecPosition posGoal( PITCH_LENGTH/2.0,pos);   primarySoc = kickTo( posGoal, SS->getBallSpeedMax() ); // kick maximal}/*! Este metodo configura faz o agente chutar a bola para frente em direcao ao canto esquerdo do gol com   uma potencia maxima.  */void KickToGoal::kickToGoalLeft(){   double pos;   pos = -0.4 * SS->getGoalWidth();   VecPosition posGoal( PITCH_LENGTH/2.0,pos);   primarySoc = kickTo( posGoal, SS->getBallSpeedMax() ); // kick maximal}/*! Este metodo faz o agente chutar a bola para frente em direcao ao centro do gol com    uma potencia maxima.     \return um comando de chute a goal */void KickToGoal::kickToGoalCenter(){   VecPosition posGoal( PITCH_LENGTH/2.0, 0 );   primarySoc = kickTo( posGoal, SS->getBallSpeedMax() ); // kick maximal}

⌨️ 快捷键说明

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