worldmodelhighlevel_8c-source.html
来自「仿真人工智能是指用人工的方法和技术」· HTML 代码 · 共 765 行 · 第 1/5 页
HTML
765 行
00402 o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00403 o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00404 {00405 <font class="keywordflow">if</font>( o != objTarget )00406 {00407 v = <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( objTarget ) - <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( o );00408 <font class="keywordflow">if</font>( v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>() > dMaxMag )00409 {00410 dMaxMag = v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>();00411 furthestObject = o;00412 }00413 }00414 }00415 <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00416 <font class="keywordflow">if</font>( dDist != NULL )00417 *dDist = dMaxMag;00418 <font class="keywordflow">return</font> furthestObject;00419 }00420 <a name="l00427"></a><a class="code" href="classWorldModel.html#a125">00427</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a125">WorldModel::getFurthestRelativeInSet</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <font class="keywordtype">double</font> *dDist )00428 {00429 <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> furthestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00430 <font class="keywordtype">double</font> dMaxMag = -1000.0;00431 <font class="keywordtype">int</font> iIndex;00432 00433 <font class="keywordflow">for</font>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o = <a class="code" href="classWorldModel.html#a31">iterateObjectStart</a>( iIndex, set, 1.0 );00434 o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00435 o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, 1.0 ) )00436 {00437 <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a54">getRelativeDistance</a>( o ) > dMaxMag )00438 {00439 dMaxMag = <a class="code" href="classWorldModel.html#a54">getRelativeDistance</a>( o );00440 furthestObject = o;00441 }00442 }00443 <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00444 <font class="keywordflow">if</font>( dDist != NULL )00445 *dDist = dMaxMag;00446 <font class="keywordflow">return</font> furthestObject;00447 }00448 00449 <a name="l00459"></a><a class="code" href="classWorldModel.html#a122">00459</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a122">WorldModel::getFastestInSetTo</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> obj,00460 <font class="keywordtype">int</font> *iCyclesToIntercept )00461 {00462 <font class="keywordtype">double</font> dConfThr = <a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a1">getPlayerConfThr</a>();00463 <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> fastestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00464 <font class="keywordtype">int</font> iCycles = -1;00465 <font class="keywordtype">int</font> iCyclesToObj = 100;00466 <font class="keywordtype">int</font> iMinCycles = 100;00467 <font class="keywordtype">int</font> iIndex;00468 <a class="code" href="classVecPosition.html">VecPosition</a> posObj;00469 00470 <font class="keywordflow">while</font>( iCycles < iMinCycles && iCycles < 100)00471 {00472 iCycles = iCycles + 1 ;00473 iMinCycles = 100;00474 posObj = <a class="code" href="classWorldModel.html#a107">predictPosAfterNrCycles</a>( obj, iCycles );00475 00476 <font class="keywordflow">for</font>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o = <a class="code" href="classWorldModel.html#a31">iterateObjectStart</a>( iIndex, set, dConfThr );00477 o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00478 o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00479 {00480 <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>(o).<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>(posObj)/<a class="code" href="classWorldModel.html#o0">SS</a>-><a class="code" href="classServerSettings.html#a14">getPlayerSpeedMax</a>()00481 < iMinCycles )00482 {00483 iCyclesToObj = (int)rint(<a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>(o).<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>(posObj)00484 /<a class="code" href="classWorldModel.html#o0">SS</a>-><a class="code" href="classServerSettings.html#a14">getPlayerSpeedMax</a>());00485 iMinCycles = iCyclesToObj;00486 fastestObject = o;00487 }00488 }00489 <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00490 }00491 00492 <font class="keywordflow">if</font>( iCyclesToIntercept != NULL )00493 *iCyclesToIntercept = iMinCycles;00494 <font class="keywordflow">return</font> fastestObject;00495 }00496 <a name="l00507"></a><a class="code" href="classWorldModel.html#a123">00507</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a122">WorldModel::getFastestInSetTo</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <a class="code" href="classVecPosition.html">VecPosition</a> pos,00508 <a class="code" href="classVecPosition.html">VecPosition</a> vel, <font class="keywordtype">double</font> dDecay, <font class="keywordtype">int</font> *iCyclesToIntercept)00509 {00510 <font class="keywordtype">double</font> dConfThr = <a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a1">getPlayerConfThr</a>();00511 <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> fastestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00512 <font class="keywordtype">int</font> iCycles = 0;00513 <font class="keywordtype">int</font> iCyclesToObj = 100;00514 <font class="keywordtype">int</font> iMinCycles = 100;00515 <font class="keywordtype">int</font> iIndex;00516 00517 <font class="keywordflow">while</font>( iCycles < iMinCycles && iCycles < 100)00518 {00519 iCycles = iCycles + 1 ;00520 iMinCycles = 100;00521 00522 <font class="keywordflow">for</font>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o = <a class="code" href="classWorldModel.html#a31">iterateObjectStart</a>( iIndex, set, dConfThr );00523 o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00524 o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00525 {00526 <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>(o).<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>(pos)/<a class="code" href="classWorldModel.html#o0">SS</a>-><a class="code" href="classServerSettings.html#a14">getPlayerSpeedMax</a>()00527 < iMinCycles )00528 {00529 iCyclesToObj = (int)rint(<a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>(o).<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>(pos)00530 /<a class="code" href="classWorldModel.html#o0">SS</a>-><a class="code" href="classServerSettings.html#a14">getPlayerSpeedMax</a>() );00531 iMinCycles = iCyclesToObj;00532 fastestObject = o;00533 }00534 }00535 <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00536 pos += vel;00537 vel *= dDecay;00538 }00539 00540 <font class="keywordflow">if</font>( iCyclesToIntercept != NULL )00541 *iCyclesToIntercept = iMinCycles;00542 <font class="keywordflow">return</font> fastestObject;00543 }00544 <a name="l00552"></a><a class="code" href="classWorldModel.html#a126">00552</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a126">WorldModel::getFirstEmptySpotInSet</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set )00553 {00554 <font class="keywordtype">int</font> iIndex;00555 00556 <font class="keywordflow">for</font>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o = <a class="code" href="classWorldModel.html#a31">iterateObjectStart</a>( iIndex, set, 0.0 );00557 o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00558 o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, 0.0 ) )00559 {00560 <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a61">getConfidence</a>( o ) < <a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a1">getPlayerConfThr</a>() &&00561 o != <a class="code" href="classWorldModel.html#a34">getAgentObjectType</a>() )00562 <font class="keywordflow">return</font> o;00563 }00564 <font class="keywordflow">return</font> <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00565 }00566 00567 <a name="l00574"></a><a class="code" href="classWorldModel.html#a127">00574</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a127">WorldModel::isVisible</a>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o )00575 {00576 <a class="code" href="classObject.html">Object</a> *object = <a class="code" href="classWorldModel.html#c0">getObjectPtrFromType</a>( o );00577 00578 <font class="keywordflow">if</font>( object != NULL &&00579 object-><a class="code" href="classObject.html#a21">getTimeLastSeen</a>() == <a class="code" href="classWorldModel.html#a10">getTimeLastSeeMessage</a>() )00580 <font class="keywordflow">return</font> <font class="keyword">true</font>;00581 00582 <font class="keywordflow">return</font> <font class="keyword">false</font>;00583 }00584 <a name="l00589"></a><a class="code" href="classWorldModel.html#a128">00589</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a128">WorldModel::isBallKickable</a>()00590 {00591 <font class="keywordflow">return</font> <a class="code" href="classWorldModel.html#a54">getRelativeDistance</a>( <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a> ) < <a class="code" href="classWorldModel.html#o0">SS</a>-><a class="code" href="classServerSettings.html#a210">getMaximalKickDist</a>();00592 }00593 <a name="l00603"></a><a class="code" href="classWorldModel.html#a129">00603</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a129">WorldModel::isBallCatchable</a>()00604 {00605 <font class="keywordflow">return</font> <a class="code" href="classWorldModel.html#a1">getTimeSinceLastCatch</a>() > <a class="code" href="classWorldModel.html#o0">SS</a>-><a class="code" href="classServerSettings.html#a54">getCatchBanCycle</a>() &&
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?