worldmodelupdate_8c-source.html
来自「仿真人工智能是指用人工的方法和技术」· HTML 代码 · 共 629 行 · 第 1/5 页
HTML
629 行
00349 <a class="code" href="classWorldModel.html#o2">pt</a>[iIndex].<a class="code" href="classHeteroPlayerSettings.html#m2">dPlayerDecay</a> = dPlayerDecay;00350 <a class="code" href="classWorldModel.html#o2">pt</a>[iIndex].<a class="code" href="classHeteroPlayerSettings.html#m3">dInertiaMoment</a> = dInertiaMoment;00351 <a class="code" href="classWorldModel.html#o2">pt</a>[iIndex].<a class="code" href="classHeteroPlayerSettings.html#m4">dDashPowerRate</a> = dDashPowerRate;00352 <a class="code" href="classWorldModel.html#o2">pt</a>[iIndex].<a class="code" href="classHeteroPlayerSettings.html#m5">dPlayerSize</a> = dPlayerSize;00353 <a class="code" href="classWorldModel.html#o2">pt</a>[iIndex].<a class="code" href="classHeteroPlayerSettings.html#m6">dKickableMargin</a> = dKickableMargin;00354 <a class="code" href="classWorldModel.html#o2">pt</a>[iIndex].<a class="code" href="classHeteroPlayerSettings.html#m7">dKickRand</a> = dKickRand;00355 <a class="code" href="classWorldModel.html#o2">pt</a>[iIndex].<a class="code" href="classHeteroPlayerSettings.html#m8">dExtraStamina</a> = dExtraStamina;00356 <a class="code" href="classWorldModel.html#o2">pt</a>[iIndex].<a class="code" href="classHeteroPlayerSettings.html#m9">dEffortMax</a> = dEffortMax;00357 <a class="code" href="classWorldModel.html#o2">pt</a>[iIndex].<a class="code" href="classHeteroPlayerSettings.html#m10">dEffortMin</a> = dEffortMin;00358 <font class="keywordflow">return</font> <font class="keyword">true</font>;00359 }00360 <a name="l00369"></a><a class="code" href="classWorldModel.html#a95">00369</a> <font class="keywordtype">void</font> <a class="code" href="classWorldModel.html#a95">WorldModel::processCatchedBall</a>( <a class="code" href="SoccerTypes_8h.html#a243">RefereeMessageT</a> rm, <a class="code" href="classTime.html">Time</a> time )00370 {00371 <font class="keywordflow">if</font>( rm == <a class="code" href="SoccerTypes_8h.html#a243a168">REFC_GOALIE_CATCH_BALL_LEFT</a> && <a class="code" href="classWorldModel.html#o10">sideSide</a> == <a class="code" href="SoccerTypes_8h.html#a246a177">SIDE_LEFT</a> )00372 <a class="code" href="classWorldModel.html#o6">timeLastCatch</a> = time;00373 <font class="keywordflow">else</font> <font class="keywordflow">if</font>( rm == <a class="code" href="SoccerTypes_8h.html#a243a169">REFC_GOALIE_CATCH_BALL_RIGHT</a> && <a class="code" href="classWorldModel.html#o10">sideSide</a> == <a class="code" href="SoccerTypes_8h.html#a246a178">SIDE_RIGHT</a> )00374 <a class="code" href="classWorldModel.html#o6">timeLastCatch</a> = time;00375 <a class="code" href="classWorldModel.html#o13">Ball</a>.<a class="code" href="classDynamicObject.html#a7">setGlobalVelocity</a>( <a class="code" href="classVecPosition.html">VecPosition</a>(0,0), <a class="code" href="classWorldModel.html#a4">getCurrentTime</a>() );00376 }00377 <a name="l00386"></a><a class="code" href="classWorldModel.html#a96">00386</a> <font class="keywordtype">void</font> <a class="code" href="classWorldModel.html#a96">WorldModel::processQueuedCommands</a>( <a class="code" href="classSoccerCommand.html">SoccerCommand</a> commands[],<font class="keywordtype">int</font> iCommands )00387 {00388 <font class="keywordflow">if</font>( iCommands > <a class="code" href="SoccerTypes_8h.html#a5">MAX_COMMANDS</a> )00389 {00390 cerr << <font class="stringliteral">"(WorldModel::setQueuedCommands) queuedCommands array cannot "</font>00391 << <font class="stringliteral">"contain so many commands!\n"</font>;00392 <font class="keywordflow">return</font>;00393 }00394 00395 <font class="comment">// put all sent commands to the array which stores queued commands.</font>00396 <font class="keywordflow">for</font>( <font class="keywordtype">int</font> i = 0 ; i < iCommands ; i ++ )00397 {00398 commands[i].<a class="code" href="classSoccerCommand.html#m0">time</a> = <a class="code" href="classWorldModel.html#a4">getCurrentTime</a>();00399 <a class="code" href="classWorldModel.html#o24">queuedCommands</a>[(int)commands[i].<a class="code" href="classSoccerCommand.html#m1">commandType</a>] = commands[i];00400 }00401 }00402 <a name="l00410"></a><a class="code" href="classWorldModel.html#a97">00410</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a97">WorldModel::updateAll</a>( )00411 {00412 <font class="keywordtype">bool</font> bReturn = <font class="keyword">false</font>, bUpdateAfterSee = <font class="keyword">false</font>;00413 <font class="keywordtype">bool</font> bUpdateAfterSense = <font class="keyword">false</font>;00414 <font class="keyword">static</font> <a class="code" href="classTime.html">Time</a> timeBeginInterval;00415 <font class="keyword">static</font> <a class="code" href="classTime.html">Time</a> timePlayersCounted; 00416 <font class="keyword">static</font> <font class="keywordtype">int</font> iNrHolesLastTime = 0;00417 <font class="keyword">static</font> <a class="code" href="classTime.html">Time</a> timeLastSenseUpdate;00418 <font class="keyword">static</font> <a class="code" href="classTime.html">Time</a> timeLastSeeUpdate;00419 00420 <font class="comment">// check if last update of agent was not more than one cycle ago</font>00421 <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#o14">agentObject</a>.<a class="code" href="classObject.html#a15">getTimeGlobalPosition</a>() < <a class="code" href="classWorldModel.html#a4">getCurrentTime</a>() - 1 )00422 Log.log( 3, <font class="stringliteral">"(WorldModel::updateAfterSenseMessage) missed a sense??"</font> );00423 00424 <font class="comment">// call update method depending on last received message</font>00425 <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a10">getTimeLastSeeMessage</a>() > timeLastSeeUpdate )00426 bUpdateAfterSee = <font class="keyword">true</font>;00427 <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a12">getTimeLastSenseMessage</a>() > timeLastSenseUpdate )00428 bUpdateAfterSense = <font class="keyword">true</font>;00429 00430 <font class="comment">// rare situation: can occur that see arrives between sense and calling </font>00431 <font class="comment">// updateAll or sense arrives between see and calling updateAll. </font>00432 <font class="keywordflow">if</font>( bUpdateAfterSee && bUpdateAfterSense )00433 {00434 Log.log( 3, <font class="stringliteral">"!!! Two updates !!! "</font> );00435 Log.log( 3, <font class="stringliteral">"see: %d sense: %d"</font>, <a class="code" href="classWorldModel.html#a10">getTimeLastSeeMessage</a>().getTime(),00436 <a class="code" href="classWorldModel.html#a12">getTimeLastSenseMessage</a>().getTime() );00437 <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a10">getTimeLastSeeMessage</a>( ) == <a class="code" href="classWorldModel.html#a12">getTimeLastSenseMessage</a>() )00438 {00439 bReturn = <a class="code" href="classWorldModel.html#c4">updateAfterSenseMessage</a>( ); 00440 bReturn &= <a class="code" href="classWorldModel.html#c1">updateAfterSeeMessage</a>( ); 00441 }00442 <font class="keywordflow">else</font> <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a10">getTimeLastSeeMessage</a>( ) < <a class="code" href="classWorldModel.html#a12">getTimeLastSenseMessage</a>() )00443 {00444 bReturn = <a class="code" href="classWorldModel.html#c1">updateAfterSeeMessage</a>( ); 00445 bReturn &= <a class="code" href="classWorldModel.html#c4">updateAfterSenseMessage</a>( ); 00446 <a class="code" href="classWorldModel.html#c9">updateRelativeFromGlobal</a>(); 00447 }00448 00449 timeLastSenseUpdate = <a class="code" href="classWorldModel.html#a12">getTimeLastSenseMessage</a>(); 00450 timeLastSeeUpdate = <a class="code" href="classWorldModel.html#a10">getTimeLastSeeMessage</a>();00451 }00452 <font class="keywordflow">else</font> <font class="keywordflow">if</font>( bUpdateAfterSee )00453 {00454 bReturn = <a class="code" href="classWorldModel.html#c1">updateAfterSeeMessage</a>( ); 00455 timeLastSeeUpdate = <a class="code" href="classWorldModel.html#a10">getTimeLastSeeMessage</a>();00456 } 00457 <font class="keywordflow">else</font> <font class="keywordflow">if</font>( bUpdateAfterSense )00458 {00459 bReturn = <a class="code" href="classWorldModel.html#c4">updateAfterSenseMessage</a>( ); 00460 timeLastSenseUpdate = <a class="code" href="classWorldModel.html#a12">getTimeLastSenseMessage</a>();00461 <a class="code" href="classWorldModel.html#c9">updateRelativeFromGlobal</a>(); 00462 }00463 00464 <font class="comment">// determine number of holes in last time interval and act accordingly</font>00465 <font class="keywordtype">int</font> iTimeDiff = <a class="code" href="classWorldModel.html#a4">getCurrentTime</a>() - timeBeginInterval;00466 <font class="keywordtype">double</font> dHolePerc = (double)(<a class="code" href="classWorldModel.html#m0">iNrHoles</a> - iNrHolesLastTime)/iTimeDiff*100;00467 <font class="keywordflow">if</font>( ! <a class="code" href="classWorldModel.html#a7">isLastMessageSee</a>( ) && iTimeDiff % 400 == 0 && dHolePerc > 1.0 &&00468 <a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a33">getFractionWaitSeeEnd</a>() > 0.70 )00469 {00470 <a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a34">setFractionWaitSeeEnd</a>( <a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a33">getFractionWaitSeeEnd</a>() - 0.05 );00471 timeBeginInterval = <a class="code" href="classWorldModel.html#a4">getCurrentTime</a>();00472 cerr << <font class="stringliteral">"Lowered send time to "</font> << <a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a33">getFractionWaitSeeEnd</a>() <<00473 <font class="stringliteral">" for player number "</font> << <a class="code" href="classWorldModel.html#a14">getPlayerNumber</a>() <<00474 <font class="stringliteral">"; nr of holes is "</font><< dHolePerc << <font class="stringliteral">"%"</font> << endl;00475 iNrHolesLastTime = <a class="code" href="classWorldModel.html#m0">iNrHoles</a>;00476 }00477 00478 00479 <font class="comment">// store some statistics about number of players seen each cycle</font>00480 <font class="keywordflow">if</font>( bUpdateAfterSee == <font class="keyword">true</font> && ! <a class="code" href="classWorldModel.html#a6">isTimeStopped</a>() &&00481 <a class="code" href="classWorldModel.html#a4">getCurrentTime</a>() != timePlayersCounted )00482 {00483 <a class="code" href="classWorldModel.html#m2">iNrTeammatesSeen</a> += <a class="code" href="classWorldModel.html#a113">getNrInSetInRectangle</a>( <a class="code" href="SoccerTypes_8h.html#a241a115">OBJECT_SET_TEAMMATES</a> );00484 <a class="code" href="classWorldModel.html#m1">iNrOpponentsSeen</a> += <a class="code" href="classWorldModel.html#a113">getNrInSetInRectangle</a>( <a class="code" href="SoccerTypes_8h.html#a241a116">OBJECT_SET_OPPONENTS</a> );00485 timePlayersCounted = <a class="code" href="classWorldModel.html#a4">getCurrentTime</a>();00486 }00487 00488 <font class="comment">// log specific information when log level is set</font>00489 <font class="keywordflow">if</font>( Log.isInLogLevel( 456 ) )00490 <a class="code" href="classWorldModel.html#a158">logObjectInformation</a>( 456, <a class="code" href="classWorldModel.html#a34">getAgentObjectType</a>() );00491 00492 <font class="keywordflow">if</font>( bUpdateAfterSee == <font class="keyword">true</font> )00493 Log.logWithTime( 3, <font class="stringliteral">" finished update_all see; start determining action"</font> );00494 <font class="keywordflow">if</font>( bUpdateAfterSense == <font class="keyword">true</font> )00495 Log.logWithTime( 3, <font class="stringliteral">" finished update_all sense; start determining action"</font> );00496 Log.log( 3, <font class="stringliteral">"global pos: (%f, %f)"</font>, <a class="code" href="classWorldModel.html#a43">getAgentGlobalPosition</a>().getX(), 00497 <a class="code" href="classWorldModel.html#a43">getAgentGlobalPosition</a>().getY() );
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?