合肥工大機器人足球仿真2D考試復習題目及答案_第1頁
合肥工大機器人足球仿真2D考試復習題目及答案_第2頁
合肥工大機器人足球仿真2D考試復習題目及答案_第3頁
合肥工大機器人足球仿真2D考試復習題目及答案_第4頁
合肥工大機器人足球仿真2D考試復習題目及答案_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 筆記:大概從第五章開始 p95球員自身屬性/射門 p98獲得其他球員屬性/傳球動作 p100其他函數(shù) p113返回當前環(huán)境信息函數(shù) p116我最近我去搶球 p117球員原子動作 p119 3種帶球速度 p120沒人防守快速帶球有人防守慢速 p122踢球/傳給最近隊友 p123移動到某點轉身體 p124截球 p132綜合策略(根本看不懂) p199 附錄linux基本操作 p203踢向某點 p204帶球 p206射向球門 /帶球+傳球 p207 一些射門傳球時需要的函數(shù)參考P208 實驗內容截球/要更改worldmodel.h p209左有人向右45度帶球反之課本5個實驗代碼:/ 1/VecP

2、osition posGoal(0,0);/踢到場中間/ 2/VecPosition posGoal =WM- getPosOpponentGoal();/3/VecPosition posGoal=WM-getPosOpponentGoal();/向球門方向慢速帶球/AngDeg ang=(posGoal-posAgent).getDirection(); /soc=dribble(ang,DRIBBLE_SLOW);/ 4/soc=kickTo(WM-getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent), SS-getBallSpeedMax()

3、+200);/最大速踢給最近球員/5/ soc=leadingPass(OBJECT_TEAMMATE_9,1);/踢給9號,誤差范圍119 / 19下載文檔可編輯/ 6/else if(posBall.getY()0) VecPosition pos(40,20); double speed=1.0; soc=kickTo(pos,speed);else VecPosition pos(40,-20); double speed=1.0; soc=kickTo(pos,speed); ACT-putCommandInQueue(soc);ACT-putCommandInQueue( turn

4、NeckToObject( OBJECT_BALL, soc ) );/球員在左踢到右反之??荚囶}目:/拿球后行為,利用已有Worldmodel(20) (playerteams.cpp大約130行位置改)(1) 在playOn模式下,拿到球以后朝前方快速帶球。 (p204中間)(2) 在PlayOn模式下,拿到球以后朝球門方向慢速帶球。 (參考p204中間要加kickto函數(shù),快速帶球改為慢速)(3) 在playOn模式下,拿到球以后把球圍繞自己身體逆時針轉。 (p206中間)(4) 在playOn模式下,拿到球后,有人逼搶(自身周圍7米范圍有至少1名對方球員),則把球踢到距離對手的另外一側

5、,安全帶球(如對手在右側,把球踢到左側,如對手仔左側,把球踢到右側)。 (5) playOn模式下,拿到球以后,有人逼搶,傳球給最近的隊友;否則向球門方向快速帶球。(if判斷+p122傳隊友)(6) 在playOn模式下,如果有人逼搶(自身周圍7米范圍有至少1名對方球員),則安全帶球;否則向球門方向快速帶球。 (p120下面)(7) 在PlayOn模式下,若前方?jīng)]有對方球員,則直接以最大速度向對方球員方射門(周期數(shù)為偶數(shù),球門的右側射門,周期為奇數(shù),向球門方向左側射門)。 (p96下面按周期射門+if判斷對手)(8) 在playOn模式下,拿到球后,在本方半場踢到球場中心點;過了半場,快速帶球

6、到對方球門。 (9) 在PlayOn模式下,拿到球后,傳給最近的周圍沒人防守的隊友(沒有人防守以其周圍5米范圍是否有對方球員為準)腳下。(p122上+一條if判斷防守隊員)(10) 在playOn模式下,拿到球后,傳給最靠近自己的前方的沒人防守的隊友(判斷隊友身邊5米范圍是否有對方防守隊員)。 (p122中+一條if判斷防守隊員)(11) 在playOn模式下,拿到球后以后,在本方半場傳給次近的隊友;在對方半場,非10號球員傳球給10號球員,10號球員則快速向球門方向帶球。 (12) 在playOn模式下,如果在本方場,則朝前方慢速帶球,如果在對方半場,則朝球門快速帶球。(P96 上)獲得坐標

7、,if判斷球員位置 + p119 上 帶球) (13) 在playOn模式下,拿到球后,如果是2號,則把球踢到左側邊線,如果是5號,則把球踢到右側邊線,并把脖子方向轉向球;其他球員則向前帶球。(球可踢+判斷球號是否為2,獲得球員號碼(p95 中)+絕對坐標,踢+)(14) 在playOn模式下,拿到球后,如果我是4號,則傳球給7號; 否則的話,傳球給最近的隊友;到對方禁區(qū)后以最大速度射向空隙大的球門一側。(判斷號碼,傳球,P209下 看不太懂,自求多福吧)(15) 在playOn模式下,垂直帶球。 (16) 在playOn模式下,拿到球后帶球到達球場中心,然后傳給最近的球員。(見頂部) (17

8、) 在playOn模式下,10號帶球前進,然后5號跟著10號一起前進,兩球員在同一水平線 上,且距離為5。 (18) 在playOn模式下,5號球員與拿球的對方球員的距離始終為5。 (19) 在playOn模式下,2號和4號一起去盯防對方拿球隊員 (20) 在playon模式下,如果是10號球員,在可踢球的狀態(tài)下,如果自身的x軸坐標大于30,則直接朝著里對方球員遠的球門點射門。(獲取坐標,兩個球門柱的周邊找人,人少踢哪邊)/拿球以后,需要自己添加WorldModel函數(shù)(12) (下面在三部分修改WorldModel.h 264行左右加類成員,WorldModel.cpp加聲明,playert

9、eams.cpp加應用)defaltlscdkdeveloppwd當前目錄cd主目錄rcsssmonitormkdir.新建文件夾touch.新建空文件.上層目錄mv.把.移動到.rm刪除rmdir刪除目錄tar-cvfa.taraaa創(chuàng)建tar壓縮文件chmod777*提升權限/拿球后行為,利用已有 Worldmodel(20) (1) 在 playOn 模式下,拿到球以后朝前方快速帶球。 AngDeg ang=0.0;soc=dribble(ang, DRIBBLE_FAST);(2) 在 PlayOn 模式下,拿到球以后朝球門方向慢速帶球。 AngDeg ang=(VecPosition

10、(52.5,0)-posAgent).getDirection(); soc=dribble(ang, DRIBBLE_SLOW);(3) 在 playOn 模式下,拿到球以后把球圍繞自己身體逆時針轉。 soc=kickBallCloseToBody(-120); (4) 在 playOn 模式下,拿到球后,有人逼搶(自身周圍 7 米范圍有至少1名對方球員),則把球踢到距離對手的另外一側,安全帶球(如對手在右側,把球踢到左側,如對手仔左側,把球踢到右側)。 Circle cir(posAgent,7); int num=WM-getNrInSetInCircle(OBJECT_SET_OPPO

11、NENTS,cir) AngDeg ang=0;if(num0) 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); elseAngDeg ang=(VecPosition(52.5,0)-posAgent).getDirection(); soc=dr

12、ibble(ang, DRIBBLE_WITHBALL); (5) 在 playOn 模式下,拿到球以后,有人逼搶,傳球給最近的隊友;否則向球門方向快速帶球。 Circle cir(posAgent,7); int num=WM-getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir) if(num0) soc=leadingPass(WM-getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent) ,1); elseAngDeg ang=(VecPosition(52.5,0)-posAgent).getDirection

13、(); soc=dribble(ang, DRIBBLE_FAST); (6) 在 playOn 模式下,如果有人逼搶(自身周圍 7 米范圍有至少 1名對方球員),則安全帶球;否則向球門方向快速帶球。 Circle cir(posAgent,7); int num=WM-getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir) AngDeg ang=(VecPositoin(52.5,0)-posAgent).getDirection();if(num0) soc=dribble(0,DRIBBLE_WITHBALL); else soc=dribble(ang

14、,DRIBBLE_FAST); (7) 在 PlayOn 模式下,若前方?jīng)]有對方球員,則直接以最大速度向對方球員方射門(周期數(shù)為偶數(shù),球門的右側射門,周期為奇數(shù),向球門方向左側射門)。 if(WM-isOpponentAtAngle(30,30)=false) VecPosition posGoal(PITCH_LENGTH/2.0, (-1+2*(WM-getCurrentCircle()%2)*0.4*SS-getGoalWidth(); soc=kickTo(posGoal,SS-getBallSpeedMax(); (8) 在 playOn 模式下,拿到球后,在本方半場踢到球場中心點;

15、過了半場,快速帶球到對方球門。 if(WM-getBallPos().getX()getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent),5); int num=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); return soc;(10) 在 playOn

16、模式下,拿到球后,把球傳給最靠近自己的前方的沒人防守的隊友(判斷隊友身邊 5 米范圍是否有對方防守隊員)。 Circle cir(WM-getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent),5); int num=WM-getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir);VecPosition diff=WM-getGlobalPosition(WM-getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent);AngDeg ang=(diff-posAgent).getDir

17、ection();if(num=0&ang=-90&anggetClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent) ,1.0);(11) 在 playOn 模式下,拿到球后以后,在本方半場傳給次近的隊友;在對方半場,非 10 號球員傳球給 10 號球員,10 號球員則快速向球門方向帶球。 if(WM-getBallPos().getX()getSecondClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent),1.0);if(WM-getBallPos().getX()=0) if(WM-getAgentObjectT

18、ype()!=OBJECT_TEANMATE_10) soc=leadingPass(OBJECT_TEANMATE_10 ,1.0)if(WM-getAgentObjectType()=OBJECT_TEANMATE_10) AngDeg ang=(VecPositoin(52.5,0)-posAgent).getDirection(); soc=dribble(ang,DRIBBLE_FAST); (12) 在 playOn 模式下,如果在本方半場,則朝前方慢速帶球,如果在對方半場,則朝球門快速帶球。 if(WM-getBallPos().getX()getBallPos().getX()

19、=0) AngDeg ang=(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(tur

20、nNeckToObject(OBJECT_BALL,soc);else if(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 號; 否則的話,傳球給最近的隊友;到對方禁區(qū)后以最大速度射向空 隙大的球門一側。if(WM-get

21、AgentObjectType()=OBJECT_TEANMATE_4) soc=leadingPass(OBJECT_TEAMMATE_7,1.0); elsesoc=leadingPass(WM-getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent) ,1.0) AngDeg ang=(VecPositoin(52.5,0)-posAgent).getDirection(); soc=dribble(ang,DRIBBLE_FAST);if(WM-isInTheirPenaltyArea(WM-getBallPos() if(WM-getGloba

22、lPosition(WM-getOppGoalieType().getY()getBallSpeedMax();else soc=kickTo(VecPosition(52.5,-6.0),SS-getBallSpeedMax(); (15) 在 playOn 模式下,垂直帶球。 if(WM-getBallPos().getY()getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent) ,1.0) (17) 在 playOn 模式下,10 號帶球前進,然后 5 號跟著 10 號一起前進,兩球員在同一水平線 上,且距離為 5。 /把球給10號,(134行)

23、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) VecPosition pos(WM-getBallPos().getX()-5,WM-getBallPos().getY()soc=moveToPos(pos,20); (18) 在playOn模式下, 5號球員與拿球的對方球員的距離始終為5。/180行 if(W

24、M-getAgentObjectType()=OBJECTTEAMMATE5)VecPosition pos(WM-getBallPos().getX()-5,WM-getBallPos().getY()soc=moveToPos(pos,20); (19) 在 playOn 模式下,2 號和 4 號一起去盯防對方拿球隊員 /180行 if(WM-getAgentObjectType()=OBJECTTEAMMATE2)VecPosition pos(WM-getBallPos().getX()-5,WM-getBallPos().getY()soc=moveToPos(pos,20);if(

25、WM-getAgentObjectType()=OBJECTTEAMMATE4)VecPosition pos(WM-getBallPos().getX(),WM-getBallPos().getY()-5)soc=moveToPos(pos,20);(20) 在 playon 模式下,如果是 10 號球員,在可踢球的狀態(tài)下,如果自身的 x 軸坐標大于 30,則直接朝著里對方球員遠的球門點射門。 if(WM-getAgentObjectType()!=OBJECT_TEAMMATE_10) soc=leadingPass(OBJECT_TEAMMATE_10,1.0);if(WM-getAge

26、ntObjectType()=OBJECT_TEAMMATE_10&posAgent.getX()30) soc=kickTo(VecPosition(52.5,0),PS-getPlayerWhenToTurnAngle(); ACT-putCommandInQueue( soc ); ACT-putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) ); return soc;/拿球以后,需要自己添加 WorldModel 函數(shù)(12) (21) 在 playOn 模式下,拿球后傳球給更靠近對方球門的最近隊友。 soc=leadPass

27、(WM-getClosestInSetTo (OBJECTSETTEAMMATES, WM-getPosOpponentGoal(),1.0) (22) 在 playOn 模式下,拿球后,搜索前方-3030 之間距離自己 20 米內是否有隊友,如果有則傳給該隊友,否則自己帶球。 Page 209;(23).在 playOn 模式下,如果在我方半場拿到球,則向中場線以最大的速度踢,如果在敵方半場拿到球,則向敵方球門處以最大的速度踢 if(WM-getBallPos().getX()0VecPosition pos(0,WM-grtBallPos().getY());soc=kickTo(pos,

28、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); AngDeg ang=(VecPosit

29、oin(52.5,0)-posAgent). getDirection(); soc=dribble(ang,DRIBBLE_FAST);if(WM-isInTheirPenaltyArea(WM-getBallPos() soc=leadingPass(OBJECT_TEAMMATE_10,1.0);if(WM-getAgentObjectType()=OBJECT_TEANMATE_10) soc=kickTo(VecPosition(52.5,0),SS-getBallSpeedMax(); /180行if(WM-getAgentObjectType()=OBJECT_TEANMATE_

30、10)soc=kickTo(VecPosition(52.5,0),SS-getBallSpeedMax();(25).在 playOn 模式下,如果我是 4 號球員并且拿到了球,則傳給 7號球員,同時 7 號球員再傳給 9 號球員,9 號球員繼續(xù)以最大速度沖到球門處射門。if(WM-getPlayerNumber()=4&WM-isBallKickable() soc=leadingPass(OBJECT_TEAMMATE_7,1); if(WM-getPlayerNumber()=7&WM-isBallKickable() soc=leadingPass(OBJECT_TEAMMATE_9

31、,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 的兩側的對方球員數(shù)量,將球傳向對手少的一方,并且 x 軸值最大的隊友。twopart Rect *p1,*p2; Obj

32、ectT pret; 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_OPPO

33、NENTS,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() Circle cir(posAgent,7); int num=WM-getNrInSetInCircle(OB

34、JECT_SET_OPPONENTS,cir); if(num=2) ObjectT ClosestG; ClosestG=WM-getClosestInSetTo(OBJECT_SET_TEAMMATES,VecPosition(52.5,0); soc=leadingPass(ClosestG,1); ACT-putCommandInQueue(soc); ACT-putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) ); (28)在 playon 模式下,求出己方的越位線,存在可以踢球的隊友的話,如果自身是 10 號。那么 10

35、球員垂直跑向越位線的 x 軸值-2米,y 軸不變的點。 (29)在 playon 的模式下,求出球運動方向的直線方程,并且求出自己到該直線的距離,如果距離小于 4 的話,那么就垂直跑向該條直線。 (30)在 playon 的模式下,如果是自己可以踢球的狀態(tài)下,如果自身 7 米內沒有對方球員的話,則快熟帶球,帶球方向是朝著點(53,0)方向。if(WM-isBallKickable() Circle cir(posAgent,7); int num=WM-getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir); if(num=0) AngDeg angDribb

36、le=(VecPosition(53.0,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 的模式下,發(fā)現(xiàn)前方?jīng)]有隊友的時候,如果自身

37、5米內有兩個及兩個以上的對手的話,那么將球傳給最近的隊友。 /其他比賽模式下,進攻行為(8) 33 在本方角球模式下,如果自己是 10 號球員,則跑向角球點,并開球(球可踢,則踢球給 9 號);如果自己是 9 號球員,則跑向距離角球點附近(隨機選一點),準備接應球,其他球員跑本位點. else if(WM-isCornerKickUs() if(WM-getPlayerNumber()=10) soc=moveToPos(posBall,PS-getPlayerWhenToTurnAngle(); kickTo(OBJECT_TEAMMATE_9,1); if(WM-getPlayerNumb

38、er()=9) soc=moveToPos(posBall+VecPosition(3,-3),PS-getPlayerWhenToTurnAngle(); else if(WM-getPlayerNumber()!=10|WM-getPlayerNumber()!=9) soc=moveToPos(posAgent,PS-getPlayerWhenToTurnAngle(); ACT-putCommandInQueue( soc ); ACT-putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) ); return soc; 34 在

39、本方邊線球模式下,如果自己是距離球最近的隊員,跑向球;并開球(球在自己腳下則把球傳給最近的隊友)。else if(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-putCommand

40、InQueue( soc ); ACT-putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) ); return soc; 35 在本方邊線球模式下,在本方半場左側,則由 2 號去發(fā);如果是本方半場右側,則由 5 號去發(fā);球在 2 號或者 5 號腳下,則踢向距離自己最近的隊友。else if(WM-isOffsideUs() Circle cir(posBall,20); double dist; ObjectT obj=WM-getClosestInSetTo(OBJECT_SET_TEAMMATES,WM-getAgentObjec

41、tType(),&dist); VecPosition posTea=WM-getGlobalPosition(obj); if(WM-getBallPos().getY()0) if(WM-getPlayerNumber()=2) soc=moveToPos(posBall,PS-getPlayerWhenToTurnAngle(); else if(WM-getBallPos().getY()getPlayerNumber()=5) soc=moveToPos(posBall,PS-getPlayerWhenToTurnAngle(); if(WM-isBallKickable()&(WM

42、-getPlayerNumber()=2|WM-getPlayerNumber()=5) soc=kickTo(posTea,SS-getBallSpeedMax(); ACT-putCommandInQueue( soc ); ACT-putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) ); return soc; 36.在本方邊線球的模式下,如果我是距離第二近的隊友的話,那么我也跑朝著球的位置跑,直到距離球 7 米的范圍。else if(WM-isOffsideUs() Circle cir(posBall,20); double

43、 dist; ObjectT obj=WM-getClosestInSetTo(OBJECT_SET_TEAMMATES,WM-getAgentObjectType(),&dist); VecPosition posTea=WM-getGlobalPosition(obj); if(WM-getSecondClosestInSetTo(OBJECT_SET_TEAMMATES_NO_GOALIE,posBall)=WM-getAgentObjectType() soc=moveToPos(posBall+VecPosition(-7,-7),1); ACT-putCommandInQueue(

44、soc); ACT-putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) ); return soc; 37 在本方邊線球的模式下,如果我是 4 號的話,并且距離球最近的隊友不是我,那么我將跑向球的坐標加上(5,0)的位置上去。 else if(WM-isOffsideUs() if(WM-getPlayerNumber()=4) if(WM-getClosestInSetTo(OBJECT_SET_TEAMMATES_NO_GOALIE,posBall)!=WM-getAgentObjectType() soc=moveToPos(p

45、osBall+VecPosition(5,0),1); ACT-putCommandInQueue(soc); ACT-putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) ); return soc; 38 在本方邊線球的模式下,如果我是距離球第二近的隊友,那么我跑向距離球 12 米的范圍內,并且距離對方球門點(53,0)最近的點。 39 在本方邊線球的模式下,距離球最近的隊果我不是距離球第二近的隊友,那么我向自身向量(5,0)的方向跑去。else if(WM-isOffsideUs() Circle cir(posBall,20);

46、 double dist; ObjectT obj=WM-getClosestInSetTo(OBJECT_SET_TEAMMATES,WM-getAgentObjectType(),&dist); VecPosition posTea=WM-getGlobalPosition(obj); if(WM-getClosestInSetTo(OBJECT_SET_TEAMMATES_NO_GOALIE,posBall)=WM-getAgentObjectType() soc=moveToPos(posBall,1); else if(WM-getSecondClosestInSetTo(OBJEC

47、T_SET_TEAMMATES,posBall)!=WM-getPlayerType() soc=moveToPos(posAgent+VecPosition(5,0),1); ACT-putCommandInQueue(soc); return soc; 40 在本方邊線球的模式下,距離球最近的隊友跑向球并開球,如果我不是距離球第二近的隊友,那么求出距離球第二近的隊友的坐標加友跑向球并開球,如上(10,5)的點跑。如果該點在球場內,則跑向該點。/*else if(WM-isOffsideUs() if(WM-getClosestInSetTo(OBJECT_SET_TEAMMATES_NO_

48、GOALIE,posBall)=WM-getAgentObjectType()/璺戝悜鐞 soc=moveToPos(posBall,1); else if(WM-getSecondClosestInSetTo(OBJECT_SET_TEAMMATES,posBall)!=WM-getPlayerType() WM-getSecondClosestInSetTo(OBJECT_SET_TEAMMATES,posBall); soc=moveToPos(posAgent+VecPosition(5,0),1); ACT-putCommandInQueue(soc); ACT-putCommand

49、InQueue( turnNeckToObject( OBJECT_BALL, soc ) ); return soc; /playOn 模式下,防守行為(5) 41 在 playOn 模式下,如果對方 10 號拿球,如果我是 2、3、4 號,則去盯防 10 號 if(WM-getOppGoalieType()=OBJECT_OPPONENT_10)if(WM-getPlayerType()=OBJECT_TEAMMATE_2|WM-getPlayerType()=OBJECT_TEAMMATE_3|WM-getPlayerType()=OBJECT_TEAMMATE_4)soc=mark(OBJECT_OPPONENT_10,0.0,MARK_BALL); ACT-putCommandInQueue(soc);ACT-putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) ); 42 在 playOn 模式下,如對方 9 號拿球,我方 2、3、4 號距離球最近的球員去盯防 9 號,其他隊員盯防距離自己最近的對方球員 Obje

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論