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

📄 playerteams.cpp~

📁 对于2D ROBOCUP底层传球和定位球方面进行了严格的修改该
💻 CPP~
📖 第 1 页 / 共 3 页
字号:
				  0.4 * SS->getGoalWidth() );*/				  if( WM -> isVisible( OBJECT_TEAMMATE_7))					  soc = kickTo( posGoal, 1.0 ); // kick ball				  else					  soc = searchBall();				  Log.log( 100, "NO.2 take right kick in" );        				  ACT->putCommandInQueue( soc );				  ACT->putCommandInQueue( turnNeckToPoint( WM -> getGlobalPosition (OBJECT_BALL) + temp2, soc) );				  return soc;			  }		  }		  else if(WM -> getPlayerNumber() == 7)		  {			  if( WM->isVisible( OBJECT_BALL) )			  {				  VecPosition temp( 0,-8);				  VecPosition posGoal = WM -> getGlobalPosition ( OBJECT_BALL) + temp ;				  soc = moveToPos(posGoal,PS->getPlayerWhenToTurnAngle());			  }			  else			  {				  soc = intercept( false );    // intercept the ball //false是指对象是不是门将 			  }			  Log.log( 100, "NO.7 move to receive the ball" );			  ACT->putCommandInQueue( soc );			  ACT->putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) );			  return soc;		  }	  }	  else if(WM -> isFreeKickUs() && WM -> getGlobalPosition(OBJECT_BALL).isLeftOf(0.00) //前场左边任意球			 && WM -> getGlobalPosition(OBJECT_BALL).isInFrontOf(0.00))	  {		  const double d = 9.150;		  VecPosition standard( 36.0, 0.0);		  VecPosition freeKickBall = WM -> getGlobalPosition(OBJECT_BALL);		  VecPosition vector = standard - freeKickBall;		  VecPosition receiveFreeKickBall;		  VecPosition kickBallPoint;		  receiveFreeKickBall.setX( freeKickBall.getX() + d * vector.getX() / vector.getMagnitude());		  receiveFreeKickBall.setY( freeKickBall.getY() + d * vector.getY() / vector.getMagnitude());		  kickBallPoint.setX( freeKickBall.getX() - ( vector.getX() / vector.getMagnitude())/2);		  kickBallPoint.setY( freeKickBall.getY() - ( vector.getY() / vector.getMagnitude())/2);		  if( WM->getPlayerNumber() == 11)		  {			  VecPosition distance;			  distance = posAgent - kickBallPoint;			  if( distance.getMagnitude() > 0.3) 			  {				  soc = moveToPos(kickBallPoint,PS->getPlayerWhenToTurnAngle());				  Log.log( 100, "NO.11 move to ball to take left kick-in" );			  }	 			  else			  {				  if( WM -> getRelativeDistance( OBJECT_TEAMMATE_8) < d + 0.8)					  soc = kickTo( receiveFreeKickBall, 1.0 ); // kick ball				  else					  soc = searchBall();				  Log.log( 100, "NO.11 take left front free kick" );        				  ACT->putCommandInQueue( soc );				  ACT->putCommandInQueue( turnNeckToPoint( WM -> getGlobalPosition (OBJECT_BALL), soc) );				  return soc;			  }		  }				else if(WM -> getPlayerNumber() == 8)			soc = moveToPos(receiveFreeKickBall,PS->getPlayerWhenToTurnAngle());		Log.log( 100, "NO.8 move to receive the ball" );		ACT->putCommandInQueue( soc );		ACT->putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) );	}	  else if(WM -> isFreeKickUs() && WM -> getGlobalPosition(OBJECT_BALL).isRightOf(0.00) //前场右边任意球			 && WM -> getGlobalPosition(OBJECT_BALL).isInFrontOf(0.00))	  {		  const double d = 9.150;		  VecPosition standard( 36.0, 0.0);		  VecPosition freeKickBall = WM -> getGlobalPosition(OBJECT_BALL);		  VecPosition vector = standard - freeKickBall;		  VecPosition receiveFreeKickBall;		  VecPosition kickBallPoint;		  receiveFreeKickBall.setX( freeKickBall.getX() + d * vector.getX() / vector.getMagnitude());		  receiveFreeKickBall.setY( freeKickBall.getY() + d * vector.getY() / vector.getMagnitude());		  kickBallPoint.setX( freeKickBall.getX() - ( vector.getX() / vector.getMagnitude())/2);		  kickBallPoint.setY( freeKickBall.getY() - ( vector.getY() / vector.getMagnitude())/2);		  if( WM->getPlayerNumber() == 10)		  {			  VecPosition distance;			  distance = posAgent - kickBallPoint;			  if( distance.getMagnitude() > 0.3) 			  {				  soc = moveToPos(kickBallPoint,PS->getPlayerWhenToTurnAngle());				  Log.log( 100, "NO.10 move to ball to take left front free kick" );			  }	 			  else			  {				  if( WM -> getRelativeDistance( OBJECT_TEAMMATE_7) < d + 0.8)					  soc = kickTo( receiveFreeKickBall, 1.0 ); // kick ball				  else					  soc = searchBall();				  Log.log( 100, "NO.10 take left front free kick" );        				  ACT->putCommandInQueue( soc );				  ACT->putCommandInQueue( turnNeckToPoint( WM -> getGlobalPosition (OBJECT_BALL), soc) );				  return soc;			  }		  }				  else if(WM -> getPlayerNumber() == 7)			  soc = moveToPos(receiveFreeKickBall,PS->getPlayerWhenToTurnAngle());		  Log.log( 100, "NO.7 move to receive the ball" );		  ACT->putCommandInQueue( soc );		  ACT->putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) );	  }	  else if(WM -> isFreeKickUs() && WM -> getGlobalPosition(OBJECT_BALL).isLeftOf(0.00) //后场左边任意球			 && WM -> getGlobalPosition(OBJECT_BALL).isBehindOf(0.00))	  {		  const double d = 9.150;		  VecPosition freeKickBall = WM -> getGlobalPosition(OBJECT_BALL);		  VecPosition receiveFreeKickBall;		  VecPosition temp(-0.3,-0.3);		  receiveFreeKickBall.setX(freeKickBall.getX() + 0.7 * d);		  receiveFreeKickBall.setY(freeKickBall.getY() + 0.7 * d);		  if( WM->getPlayerNumber() == 5)		  {			  VecPosition posGoal1 = WM -> getGlobalPosition ( OBJECT_BALL) + temp;			  VecPosition distance;			  distance = posAgent - posGoal1;			  if( distance.getMagnitude() > 0.3) 			  {				  soc = moveToPos(posGoal1,PS->getPlayerWhenToTurnAngle());				  Log.log( 100, "NO.5 move to ball to take left front free kick" );			  }	 			  else			  {				  if( WM -> getRelativeDistance( OBJECT_TEAMMATE_8) < d + 0.8)					  soc = kickTo( receiveFreeKickBall, 1.0 ); // kick ball				  else					  soc = searchBall();				  Log.log( 100, "NO.5 take left front free kick" );        				  ACT->putCommandInQueue( soc );				  ACT->putCommandInQueue( turnNeckToPoint( WM -> getGlobalPosition (OBJECT_BALL), soc) );				  return soc;			  }		  }				  else if(WM -> getPlayerNumber() == 8)			  soc = moveToPos(receiveFreeKickBall,PS->getPlayerWhenToTurnAngle());		  Log.log( 100, "NO.8 move to receive the ball" );		  ACT->putCommandInQueue( soc );		  ACT->putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) );	  }	  else if(WM -> isFreeKickUs() && WM -> getGlobalPosition(OBJECT_BALL).isRightOf(0.00) //后场右边任意球			 && WM -> getGlobalPosition(OBJECT_BALL).isBehindOf(0.00))	  {		  const double d = 9.150;		  VecPosition freeKickBall = WM -> getGlobalPosition(OBJECT_BALL);		  VecPosition receiveFreeKickBall;		  VecPosition temp(-0.3,+0.3);		  receiveFreeKickBall.setX(freeKickBall.getX() + 0.7 * d);		  receiveFreeKickBall.setY(freeKickBall.getY() - 0.7 * d);		  if( WM->getPlayerNumber() == 2)		  {			  VecPosition posGoal1 = WM -> getGlobalPosition ( OBJECT_BALL) + temp;			  VecPosition distance;			  distance = posAgent - posGoal1;			  if( distance.getMagnitude() > 0.3) 			  {				  soc = moveToPos(posGoal1,PS->getPlayerWhenToTurnAngle());				  Log.log( 100, "NO.2 move to ball to take left front free kick" );			  }	 			  else			  {				  if( WM -> getRelativeDistance( OBJECT_TEAMMATE_7) < d + 0.8)					  soc = kickTo( receiveFreeKickBall, 1.0 ); // kick ball				  else					  soc = searchBall();				  Log.log( 100, "NO.2 take left front free kick" );        				  ACT->putCommandInQueue( soc );				  ACT->putCommandInQueue( turnNeckToPoint( WM -> getGlobalPosition (OBJECT_BALL), soc) );				  return soc;			  }		  }				  else if(WM -> getPlayerNumber() == 7)			  soc = moveToPos(receiveFreeKickBall,PS->getPlayerWhenToTurnAngle());		  Log.log( 100, "NO.7 move to receive the ball" );		  ACT->putCommandInQueue( soc );		  ACT->putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) );	  }	  else if(WM -> isCornerKickUs() && WM -> getGlobalPosition(OBJECT_BALL).isLeftOf(0.00))	  {		  const double d = 9.150;		  VecPosition freeKickBall = WM -> getGlobalPosition(OBJECT_BALL);		  VecPosition receiveFreeKickBall;		  receiveFreeKickBall.setX(freeKickBall.getX() - 0.7 * d);		  receiveFreeKickBall.setY(freeKickBall.getY() + 0.7 * d);		  if( WM->getPlayerNumber() == 8)		  {			  VecPosition temp1( 0.6,-0.6);			  VecPosition posGoal1 = WM -> getGlobalPosition ( OBJECT_BALL) + temp1 ;			  VecPosition distance;			  distance = posAgent - posGoal1;			  if( distance.getMagnitude() > 0.3) 			  {				  soc = moveToPos(posGoal1,PS->getPlayerWhenToTurnAngle());				  Log.log( 100, "NO.8 move to ball to take left front free kick" );			  }	 			  else			  {				  if( WM -> isVisible( OBJECT_TEAMMATE_11))					  soc = kickTo( receiveFreeKickBall, 1.0 ); // kick ball				  else					  soc = searchBall();				  Log.log( 100, "NO.8 take left front free kick" );        				  ACT->putCommandInQueue( soc );				  ACT->putCommandInQueue( turnNeckToPoint( WM -> getGlobalPosition (OBJECT_BALL), soc) );				  return soc;			  }		  }				  else if(WM -> getPlayerNumber() == 11)			  soc = moveToPos(receiveFreeKickBall,PS->getPlayerWhenToTurnAngle());		  Log.log( 100, "NO.11 move to receive the ball" );		  ACT->putCommandInQueue( soc );		  ACT->putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) );	  }	  else if(WM -> isCornerKickUs() && WM -> getGlobalPosition(OBJECT_BALL).isRightOf(0.00))	  {		  const double d = 9.150;		  VecPosition freeKickBall = WM -> getGlobalPosition(OBJECT_BALL);		  VecPosition receiveFreeKickBall;		  receiveFreeKickBall.setX(freeKickBall.getX() - 0.7 * d);		  receiveFreeKickBall.setY(freeKickBall.getY() - 0.7 * d);		  if( WM->getPlayerNumber() == 7)		  {			  VecPosition temp1( 0.6,-0.6);			  VecPosition posGoal1 = WM -> getGlobalPosition ( OBJECT_BALL) + temp1 ;			  VecPosition distance;			  distance = posAgent - posGoal1;			  if( distance.getMagnitude() > 0.3) 			  {				  soc = moveToPos(posGoal1,PS->getPlayerWhenToTurnAngle());				  Log.log( 100, "NO.8 move to ball to take left front free kick" );			  }	 			  else			  {				  if( WM -> isVisible( OBJECT_TEAMMATE_11))					  soc = kickTo( receiveFreeKickBall, 1.0 ); // kick ball				  else					  soc = searchBall();				  Log.log( 100, "NO.8 take left front free kick" );        				  ACT->putCommandInQueue( soc );				  ACT->putCommandInQueue( turnNeckToPoint( WM -> getGlobalPosition (OBJECT_BALL), soc) );				  return soc;			  }		  }				  else if(WM -> getPlayerNumber() == 10)			  soc = moveToPos(receiveFreeKickBall,PS->getPlayerWhenToTurnAngle());		  Log.log( 100, "NO.11 move to receive the ball" );		  ACT->putCommandInQueue( soc );		  ACT->putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) );	  }	  ACT->putCommandInQueue( soc );	  ACT->putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) );	  return soc;  }  else if( WM -> isDeadBallThem() )  {	  soc = searchBall();	  ACT->putCommandInQueue( soc );	  ACT->putCommandInQueue( turnNeckToPoint( WM -> getGlobalPosition (OBJECT_BALL), soc) );	  return soc;  }  else if( WM->getPlayMode() == PM_PLAY_ON)  {	  formations->setFormation( FT_433_OFFENSIVE );	  soc.commandType = CMD_ILLEGAL;	  if ( WM->getConfidence ( OBJECT_BALL ) < PS->getBallConfThr() )//2009 4 24 20:29	 {		  ACT->putCommandInQueue ( soc = searchBall() );  // if ball pos unknown		  ACT->putCommandInQueue ( alignNeckWithBody( ) ); // search for it	  }	 else if ( WM -> isBallKickable())//正常版本	{		if( WM -> getPlayerType() == PS_DEFENDERS)		{}		else if( WM -> getPlayerType() == PS_MIDFIELDERS)		{}		else if( WM -> getPlayerType() == PS_ATTACKERS)		{}		soc = dribble( WM->getRelAngleOpponentGoal(),DRIBBLE_SLOW);		ACT->putCommandInQueue ( soc );		ACT->putCommandInQueue ( turnNeckToObject ( OBJECT_BALL, soc ) );		Log.log ( 100, "pass ball" );	}		  else if ( WM->getFastestInSetTo ( OBJECT_SET_TEAMMATES, OBJECT_BALL, &iTmp ) //拦截球			   == WM->getAgentObjectType()  && !WM->isDeadBallThem() )

⌨️ 快捷键说明

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