合肥工大机器人足球仿真D考试复习题目及答案.docx

上传人:b****6 文档编号:16040317 上传时间:2023-07-10 格式:DOCX 页数:21 大小:19.24KB
下载 相关 举报
合肥工大机器人足球仿真D考试复习题目及答案.docx_第1页
第1页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第2页
第2页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第3页
第3页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第4页
第4页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第5页
第5页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第6页
第6页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第7页
第7页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第8页
第8页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第9页
第9页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第10页
第10页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第11页
第11页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第12页
第12页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第13页
第13页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第14页
第14页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第15页
第15页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第16页
第16页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第17页
第17页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第18页
第18页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第19页
第19页 / 共21页
合肥工大机器人足球仿真D考试复习题目及答案.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

合肥工大机器人足球仿真D考试复习题目及答案.docx

《合肥工大机器人足球仿真D考试复习题目及答案.docx》由会员分享,可在线阅读,更多相关《合肥工大机器人足球仿真D考试复习题目及答案.docx(21页珍藏版)》请在冰点文库上搜索。

合肥工大机器人足球仿真D考试复习题目及答案.docx

合肥工大机器人足球仿真D考试复习题目及答案

笔记:

大概从第五章开始p95球员自身属性/射门p98获得其他球员属性/传球动作p100其他函数p113返回当前环境信息函数p116我最近我去抢球p117球员原子动作p1193种带球速度p120没人防守快速带球有人防守慢速p122踢球/传给最近队友p123移动到某点转身体p124截球p132综合策略(根本看不懂~)p199附录linux基本操作p203踢向某点p204带球p206射向球门/带球+传球p207一些射门传球时需要的函数参考

P208实验内容截球/要更改p209左有人向右45度带球反之

课本5个实验代码:

etDirection();

..新建文件夹?

?

touch?

....新建空文件?

..上层目录

mv?

..?

?

..?

?

把..移动到...?

?

rm删除?

rmdir?

删除目录

tar?

-cvf?

?

aaa?

创建tar压缩文件?

chmod?

777?

*提升权限

etDirection();

soc=dribble(ang,DRIBBLE_SLOW);

}

(1)在playOn模式下,拿到球以后把球围绕自己身体逆时针转。

{

soc=kickBallCloseToBody(-120);

}

(4)在playOn模式下,拿到球后,有人逼抢(自身周围7米范围有至少1名对方球员),则把球踢到距离对手的另外一侧,安全带球(如对手在右侧,把球踢到左侧,如对手仔左侧,把球踢到右侧)。

{

Circlecir(posAgent,7);

intnum=WM->getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir)

AngDegang=0;

if(num>0)

{

if((WM->getGlobalPosition(WM->getClosestInSetTo)-posAgent).getDirection()>=0)

ang+=45;

soc=dribble(ang,DRIBBLE_WITHBALL);}

 

else

ang-=45;

soc=dribble(ang,DRIBBLE_WITHBALL);}

}

else

{

AngDegang=(VecPosition,0)-posAgent).getDirection();

soc=dribble(ang,DRIBBLE_WITHBALL);}

}

(5)在playOn模式下,拿到球以后,有人逼抢,传球给最近的队友;否则向球门方向快速带球。

{

Circlecir(posAgent,7);

intnum=WM->getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir)

if(num>0)

{

soc=leadingPass(WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent),1);

}

else

{

AngDegang=(VecPosition,0)-posAgent).getDirection();

soc=dribble(ang,DRIBBLE_FAST);}

}

(6)在playOn模式下,如果有人逼抢(自身周围7米范围有至少1名对方球员),则安全带球;否则向球门方向快速带球。

{

Circlecir(posAgent,7);

intnum=WM->getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir)

AngDegang=(VecPositoin,0)-posAgent).getDirection();

if(num>0)

soc=dribble(0,DRIBBLE_WITHBALL);

else

soc=dribble(ang,DRIBBLE_FAST);

}

(7)在PlayOn模式下,若前方没有对方球员,则直接以最大速度向对方球员方射门(周期数为偶数,球门的右侧射门,周期为奇数,向球门方向左侧射门)。

if(WM->isOpponentAtAngle(30,30)==false)

{VecPositionposGoal(PITCH_LENGTH/,

(-1+2*(WM->getCurrentCircle()%2))**SS->getGoalWidth());

soc=kickTo(posGoal,SS->getBallSpeedMax());

}

(8)在playOn模式下,拿到球后,在本方半场踢到球场中心点;过了半场,快速带球到对方球门。

if(WM->getBallPos().getX()<0)

soc=kickTo(VecPosition(0,0),;

else

{

AngDegang=(VecPositoin,0)-posAgent).getDirection();

soc=dribble(ang,DRIBBLE_FAST);

}

(9)在PlayOn模式下,拿到球后,把传给最近的周围没人防守的队友(没有人防守以其周围5米范围是否有对方球员为准)脚下。

Circlecir(WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent),5);

intnum=WM->getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir);

if(num=0)

soc=leadingPass(WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,

posAgent),;

else

soc=dribble(0,DRIBBLE_WITHBALL);

returnsoc;

(10)在playOn模式下,拿到球后,把球传给最靠近自己的前方的没人防守的队友(判断队友身边5米范围是否有对方防守队员)。

{

Circlecir(WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent),5);

intnum=WM->getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir);

VecPositiondiff=WM->getGlobalPosition(WM->getClosestInSetTo(

OBJECT_SET_TEAMMATES,posAgent));

AngDegang=(diff-posAgent).getDirection();

if(num=0&&ang>=-90&&ang<=90)

soc=leadingPass(

WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent),;

}

(11)在playOn模式下,拿到球后以后,在本方半场传给次近的队友;在对方半场,非10号球员传球给10号球员,10号球员则快速向球门方向带球。

if(WM->getBallPos().getX()<0)

{

soc=leadingPass(WM->getSecondClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent)

;

}

if(WM->getBallPos().getX()>=0)

{

if(WM->getAgentObjectType()!

=OBJECT_TEANMATE_10)

{

soc=leadingPass(OBJECT_TEANMATE_10,

}

if(WM->getAgentObjectType()==OBJECT_TEANMATE_10)

{

AngDegang=(VecPositoin,0)-posAgent).getDirection();

soc=dribble(ang,DRIBBLE_FAST);

}

}

(12)在playOn模式下,如果在本方半场,则朝前方慢速带球,如果在对方半场,则朝球门快速带球。

if(WM->getBallPos().getX()<0)

soc=dribble(0,DRIBBLE_SLOW);

if(WM->getBallPos().getX()>=0)

{

AngDegang=(VecPositoin,0)-posAgent).getDirection();

soc=dribble(ang,DRIBBLE_FAST);

}

(13)在playOn模式下,拿到球后,如果是2号,则把球踢到左侧边线,如果是5号,则把球踢到右侧边线,并把脖子方向转向球;其他球员则向前带球。

if(WM->getAgentObjectType()==OBJECT_TEAMMATE_2)

{

soc=kickTo(VecPosition(WM->getBallPos().getX(),-34),;

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));}

elseif(WM->getPlayerNumber()==5)

{

soc=kickTo(VecPosition(WM->getBallPos().getX(),34),;

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));}

else

soc=dribble(0,DRIBBLE_WITHBALL);

(14)在playOn模式下,拿到球后,如果我是4号,则传球给7号;否则的话,传球给最近的队友;到对方禁区后以最大速度射向空隙大的球门一侧。

if(WM->getAgentObjectType()==OBJECT_TEANMATE_4)

{

soc=leadingPass(OBJECT_TEAMMATE_7,;

}

else

soc=leadingPass(

WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent),

AngDegang=(VecPositoin,0)-posAgent).getDirection();

soc=dribble(ang,DRIBBLE_FAST);

if(WM->isInTheirPenaltyArea(WM->getBallPos()))

{

if(WM->getGlobalPosition(WM->getOppGoalieType()).getY()<=0)

soc=kickTo(VecPosition,,SS->getBallSpeedMax());

else

soc=kickTo(VecPosition,,SS->getBallSpeedMax());

}

(15)在playOn模式下,垂直带球。

{

if(WM->getBallPos().getY()<=0)

soc=dribble(90,DRIBBLE_WITHBALL);

else

soc=dribble(-90,DRIBBLE_WITHBALL);

}

(16)在playOn模式下,拿到球后带球到达球场中心,然后传给最近的球员。

{

AngDegang=(VecPosition(0,0)-posAgent).getDirection();

soc=dribble(ang,DRIBBLE_WITHBALL);

soc=leadingPass(

WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent),

}

(17)在playOn模式下,10号带球前进,然后5号跟着10号一起前进,两球员在同一水平线上,且距离为5。

{etX()-5,WM->getBallPos().getY())

soc=moveToPos(pos,20);}

}

(18)在playOn模式下,5号球员与拿球的对方球员的距离始终为5。

etX()-5,WM->getBallPos().getY())

soc=moveToPos(pos,20);}

(19)在playOn模式下,2号和4号一起去盯防对方拿球队员

etX()-5,WM->getBallPos().getY())

soc=moveToPos(pos,20);}

if(WM->getAgentObjectType()==OBJECT_TEAMMATE_4)

VecPositionpos(WM->getBallPos().getX(),WM->getBallPos().getY()-5)

soc=moveToPos(pos,20);}

(20)在playon模式下,如果是10号球员,在可踢球的状态下,如果自身的x轴坐标大于30,则直接朝着里对方球员远的球门点射门。

 

if(WM->getAgentObjectType()!

=OBJECT_TEAMMATE_10)

soc=leadingPass(OBJECT_TEAMMATE_10,;

if(WM->getAgentObjectType()==OBJECT_TEAMMATE_10&&()>30)

{

soc=kickTo(VecPosition,0),PS->getPlayerWhenToTurnAngle());

}

ACT->putCommandInQueue(soc);

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));

returnsoc;

playOn模式下,如果在我方半场拿到球,则向中场线以最大的速度踢,如果在敌方半场拿到球,则向敌方球门处以最大的速度踢

if(WM->getBallPos().getX()<=0

VecPositionpos(0,WM->grtBallPos().getY());

soc=kickTo(pos,SS->getBallSpeedMax());

if(WM->getBallPos().getX()<=0=

soc=kickTo(VecPosition(,0),SS->

getBallSpeedMax());

(24).在playOn模式下,如果是9号拿到球,则令9号和10号同时冲至敌方球门处,在球门前,9号传给10号,由10号进行射门

{getDirection();

soc=dribble(ang,DRIBBLE_FAST);

if(WM->isInTheirPenaltyArea(WM->getBallPos()))

soc=leadingPass(OBJECT_TEAMMATE_10,;

if(WM->getAgentObjectType()==OBJECT_TEANMATE_10)

soc=kickTo(VecPosition(,0),SS->getBallSpeedMax());

playOn模式下,如果我是4号球员并且拿到了球,则传给7号球员,同时7号球员再传给9号球员,9号球员继续以最大速度冲到球门处射门。

if(WM->getPlayerNumber()==4&&WM->isBallKickable())

{

soc=leadingPass(OBJECT_TEAMMATE_7,1);

if(WM->getPlayerNumber()==7&&WM->isBallKickable())

soc=leadingPass(OBJECT_TEAMMATE_9,1);

if(WM->getPlayerNumber()==9&&WM->isBallKickable())

soc=moveToPos(VecPosition(40,0),1);

soc=ShootToGoalex(OBJECT_GOAL_L);

ACT->putCommandInQueue(soc);

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));

}

(26)在playon模式下,求出y轴等于0的两侧的对方球员数量,将球传向对手少的一方,并且x轴值最大的队友。

twopart

Rect*p1,*p2;

ObjectTpret;

p1->setRectanglePoints(WM->getGlobalPosition(OBJECT_FLAG_L_T),WM->getGlobalPosition(OBJECT_FLAG_R_0));

p2->setRectanglePoints(WM->getGlobalPosition(OBJECT_FLAG_L_B),WM->getGlobalPosition(OBJECT_FLAG_R_0));

if(WM->getNrInSetInRectangle(OBJECT_SET_OPPONENTS,p1)>WM->getNrInSetInRectangle(OBJECT_SET_OPPONENTS,p2))

if(WM->getAgentGlobalPosition().getY()>0)

if(WM->getAgentObjectType()==WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,OBJECT_LINE_R))

pret=WM->getAgentObjectType();

(27)在playon模式下,如果自身7米范围内有两个或两个以上的对手的话,则传球到x轴值最大的队友。

if(WM->isBallKickable()){

Circlecir(posAgent,7);

intnum=WM->getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir);

if(num>=2){

ObjectTClosestG;

ClosestG=WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,VecPosition,0));

soc=leadingPass(ClosestG,1);

ACT->putCommandInQueue(soc);

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));

}

}

(28)在playon模式下,求出己方的越位线,存在可以踢球的队友的话,如果自身是10号。

那么10球员垂直跑向越位线的x轴值-2米,y轴不变的点。

(29)在playon的模式下,求出球运动方向的直线方程,并且求出自己到该直线的距离,如果距离小于4的话,那么就垂直跑向该条直线。

(30)在playon的模式下,如果是自己可以踢球的状态下,如果自身7米内没有对方球员的话,则快熟带球,带球方向是朝着点(53,0)方向。

if(WM->isBallKickable()){

Circlecir(posAgent,7);

intnum=WM->getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir);

if(num==0){

AngDegangDribble=(VecPosition,0)-posAgent).getDirection();

soc=dribble(angDribble,DRIBBLE_FAST);

ACT->putCommandInQueue(soc);

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));

}

}

(31)在playon的模式下,如果距离球最近的是我方队友的话,如

果我的x坐标小于30的话,并且我是10号,那么我跑向球的坐标加上(0,10)的坐标位置。

(32)在playon的模式下,发现前方没有队友的时候,如果自身5米内有两个及两个以上的对手的话,那么将球传给最近的队友。

 

elseif(WM->isCornerKickUs())

{

if(WM->getPlayerNumber()==10)

soc=moveToPos(posBall,PS->getPlayerWhenToTurnAngle());

kickTo(OBJECT_TEAMMATE_9,1);

if(WM->getPlayerNumber()==9)

{

soc=moveToPos(posBall+VecPosition(3,-3),PS->getPlayerWhenToTurnAngle());

}

elseif(WM->getPlayerNumber()!

=10||WM->getPlayerNumber()!

=9)

{

soc=moveToPos(posAgent,PS->getPlayerWhenToTurnAngle());

}

ACT->putCommandInQueue(soc);

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));

returnsoc;

}

34在本方边线球模式下,如果自己是距离球最近的队员,跑向球;并开球(球在自己脚下则把球传给最近的队友)。

elseif(WM->isOffsideUs()){

if((WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,posBall))==WM->getAgentObjectType())

soc=moveToPos(posBall,1);

if(WM->isBallKickable())

soc=kickTo(WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent),SS->getBallSpeedMax());

ACT->putCommandInQueue(soc);

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));

returnsoc;

}

35在本方边线球模式下,在本方半场左侧,则由2号去发;如果是本方半场右侧,则由5号去发;球在2号或者5号脚下,则踢向距离自己最近的队友。

elseif(WM->isOffsideUs()){

Circlecir(posBall,20);

doubledist;

Object

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2