📄 playerteams.cpp~
字号:
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 + -