合肥工业大学机器人技术实验五十六题
注:非原创,仅仅做了整理工作.
//PlayerTeams.cpp130行到138行是PlayOn模式开球后拿球到决策
//把原来到 soc 注释,在后面添加代码;每次修改后构建之后才能看到效果
1. 在 playOn 模式下,拿到球以后朝前方快速带球。
2. 在 PlayOn 模式下,拿到球以后朝球门方向慢速带球。
3. 在 playOn 模式下,拿到球以后把球围绕自己身体逆时针转。
4. 在 playOn 模式下,拿到球后,有人逼抢(自身周围 7 米范围有至少 1 名对方球员,则把球踢到距离对手的另外一侧,安全带球.如对手在右侧,把球踢到左侧,如对手仔左侧,把
球踢到右侧)。
5. 在 playOn 模式下,拿到球以后,有人逼抢,传球给最近的队友;否则向球门方向快速带球。
6. 在 playOn 模式下,如果有人逼抢(自身周围 7 米范围有至少 1名对方球员,则安全带球;否则向球门方向快速带球。
7. 在 PlayOn 模式下,若前方没有对方球员,则直接以最大速度向对方球员方射门(周期数为偶数,球门的右侧射门,周期为奇数,向球门方向左侧射门)。
soc=dribble(0.0,DRIBBLE_FAST);
1
AngDeg ang=(VecPosition(52.5,0.0)-posAgent).getDirection();
soc=dribble(ang,DRIBBLE_SLOW);
1
2
soc=kickBallCloseToBody(-120);
1
Circle cir(posAgent,7);
int num=WM->getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir);
AngDeg ang=0;
if(num>0){
ObjectT o=WM->getClosestInSetTo(OBJECT_SET_OPPONENTS,posAgent);
VecPosition p=WM->getGlobalPosition(o);
if((p-posAgent).getDirection()>=0){
ang+=45;
soc=dribble(ang,DRIBBLE_WITHBALL);
}
else{
ang-=45;
soc=dribble(ang,DRIBBLE_WITHBALL);
}
}
else{
AngDeg ang=(VecPosition(52.5,0)-posAgent).getDirection();
soc=dribble(ang,DRIBBLE_WITHBALL);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Circle cir(posAgent,7);
int num=WM->getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir);
if(num>0) {
soc=leadingPass(WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent),1);
}
else{
AngDeg ang=(VecPosition(52.5,0)-posAgent).getDirection();
soc=dribble(ang,DRIBBLE_FAST);
}
1
2
3
4
5
6
7
8
9
Circle cir(posAgent,7);
int num=WM->getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir);
AngDeg ang=(VecPosition(52.5,0)-posAgent).getDirection();
if(num>0)
soc=dribble(0,DRIBBLE_WITHBALL);
else
soc=dribble(ang,DRIBBLE_FAST);
1
2
3
4
5
6
7