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

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

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

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

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

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

笔记:

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

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

课本5个实验代码:

//1//VecPositionposGoal(0,0);//踢到场中间

//2//VecPositionposGoal=WM->getPosOpponentGoal();//

//3//VecPositionposGoal=WM->getPosOpponentGoal();//向球门方向慢速带球

//AngDegang=(posGoal-posAgent).getDirection();

//soc=dribble(ang,DRIBBLE_SLOW);

//4//soc=kickTo(WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent),SS->getBallSpeedMax()+200);//最大速踢给最近球员

//5//soc=leadingPass(OBJECT_TEAMMATE_9,1);//踢给9号,误差范围1

//6//else{if(posBall.getY()>0){

VecPositionpos(40,20);

doublespeed=1.0;

soc=kickTo(pos,speed);}

else{

VecPositionpos(40,-20);

doublespeed=1.0;

soc=kickTo(pos,speed);}

ACT->putCommandInQueue(soc);

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));}}//球员在左踢到右反之。

考试题目:

//拿球后行为,利用已有Worldmodel(20)(playerteams.cpp大约130行位置改)

(1)在playOn模式下,拿到球以后朝前方快速带球。

(p204中间)

(2)在PlayOn模式下,拿到球以后朝球门方向慢速带球。

(参考p204中间要加kickto函数,快速带球改为慢速)

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

(p206中间)

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

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

(if判断+p122传队友)

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

(p120下面)

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

(p96下面按周期射门+if判断对手)

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

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

(p122上+一条if判断防守队员)

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

(p122中+一条if判断防守队员)

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

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

((P96上)获得坐标,if判断球员位置+p119上带球)

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

(球可踢+判断球号是否为2,获得球员号码(p95中)+绝对坐标,踢+)

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

(判断号码,传球,P209下看不太懂,自求多福吧)

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

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

(见顶部)

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

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

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

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

(获取坐标,两个球门柱的周边找人,人少踢哪边)

//拿球以后,需要自己添加WorldModel函数(12)

(下面在三部分修改WorldModel.h264行左右加类成员,WorldModel.cpp加声明,playerteams.cpp加应用)

defalt  ls cd kdevelop  pwd当前目录 cd ~主目录rcsss   monitor

mkdir ....新建文件夹  touch ....新建空文件 ..上层目录

mv ..  ..  把..移动到...  rm删除 rmdir 删除目录

tar -cvf a.tar aaa 创建tar压缩文件 chmod 777 *提升权限

//拿球后行为,利用已有Worldmodel(20)

(1)在playOn模式下,拿到球以后朝前方快速带球。

{

AngDegang=0.0;

soc=dribble(ang,DRIBBLE_FAST);

}

(2)在PlayOn模式下,拿到球以后朝球门方向慢速带球。

{

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

soc=dribble(ang,DRIBBLE_SLOW);

}

(3)在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(OBJECT_SET_OPPONENTS.posAgent))-posAgent).getDirection()>=0)

ang+=45;

soc=dribble(ang,DRIBBLE_WITHBALL);}

else

ang-=45;

soc=dribble(ang,DRIBBLE_WITHBALL);}

}

else

{

AngDegang=(VecPosition(52.5,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(52.5,0)-posAgent).getDirection();

soc=dribble(ang,DRIBBLE_FAST);}

}

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

{

Circlecir(posAgent,7);

intnum=WM->getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir)

AngDegang=(VecPositoin(52.5,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/2.0,

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

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

}

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

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

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

else

{

AngDegang=(VecPositoin(52.5,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),1.0);

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),1.0);

}

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

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

{

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

1.0);

}

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

{

if(WM->getAgentObjectType()!

=OBJECT_TEANMATE_10)

{

soc=leadingPass(OBJECT_TEANMATE_10,1.0)

}

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

{

AngDegang=(VecPositoin(52.5,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(52.5,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),1.0);

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

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

{

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

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,1.0);

}

else

soc=leadingPass(

WM->getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent),1.0)

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

soc=dribble(ang,DRIBBLE_FAST);

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

{

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

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

else

soc=kickTo(VecPosition(52.5,-6.0),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),1.0)

}

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

{//把球给10号,(134行)

if(WM->getAgentObjectType()!

=OBJECT_TEANMATE_10)

soc=leadingPass(OBJECT_TEAMMATE_10,1.0);

soc=dribble(0,DRIBBLE_SLOW);

//180行

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

{

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

soc=moveToPos(pos,20);}

}

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

//180行

if(WM->getAgentObjectType()==OBJECT_TEAMMATE_5){

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

soc=moveToPos(pos,20);}

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

//180行

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

VecPositionpos(WM->getBallPos().getX()-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,1.0);

if(WM->getAgentObjectType()==OBJECT_TEAMMATE_10&&posAgent.getX()>30)

{

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

}

ACT->putCommandInQueue(soc);

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

returnsoc;

//拿球以后,需要自己添加WorldModel函数(12)

(21)在playOn模式下,拿球后传球给更靠近对方球门的最近队友。

soc=leadPass(WM->getClosestInSetTo

(OBJECT_SET_TEAMMATES,

WM->getPosOpponentGoal()),1.0)

(22)在playOn模式下,拿球后,搜索前方-30~30之间距离自己20米内是否有队友,如果有则传给该队友,否则自己带球。

Page209;

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

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

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

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

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

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

getBallSpeedMax());

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

{//把球给9号,(134行)

if(WM->getAgentObjectType()!

=OBJECT_TEANMATE_9)

soc=leadingPass(OBJECT_TEAMMATE_9,1.0);

AngDegang=(VecPositoin(52.5,0)-posAgent).

getDirection();

soc=dribble(ang,DRIBBLE_FAST);

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

soc=leadingPa

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

当前位置:首页 > 求职职场 > 简历

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

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