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> &amp;&amp; <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> &amp;&amp; <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 &gt; <a class="code" href="SoccerTypes_8h.html#a5">MAX_COMMANDS</a> )00389   {00390     cerr &lt;&lt; <font class="stringliteral">"(WorldModel::setQueuedCommands) queuedCommands array cannot "</font>00391          &lt;&lt; <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 &lt; 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>() &lt; <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>() &gt; timeLastSeeUpdate )00426     bUpdateAfterSee = <font class="keyword">true</font>;00427   <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a12">getTimeLastSenseMessage</a>() &gt; 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 &amp;&amp; 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 &amp;= <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>( ) &lt; <a class="code" href="classWorldModel.html#a12">getTimeLastSenseMessage</a>() )00443     {00444       bReturn  = <a class="code" href="classWorldModel.html#c1">updateAfterSeeMessage</a>( );    00445       bReturn &amp;= <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>( ) &amp;&amp; iTimeDiff % 400 == 0 &amp;&amp; dHolePerc &gt; 1.0 &amp;&amp;00468       <a class="code" href="classWorldModel.html#o1">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a33">getFractionWaitSeeEnd</a>() &gt; 0.70 )00469   {00470     <a class="code" href="classWorldModel.html#o1">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a34">setFractionWaitSeeEnd</a>( <a class="code" href="classWorldModel.html#o1">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a33">getFractionWaitSeeEnd</a>() - 0.05 );00471     timeBeginInterval = <a class="code" href="classWorldModel.html#a4">getCurrentTime</a>();00472     cerr &lt;&lt; <font class="stringliteral">"Lowered send time to "</font> &lt;&lt; <a class="code" href="classWorldModel.html#o1">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a33">getFractionWaitSeeEnd</a>() &lt;&lt;00473             <font class="stringliteral">" for player number "</font>   &lt;&lt; <a class="code" href="classWorldModel.html#a14">getPlayerNumber</a>()           &lt;&lt;00474             <font class="stringliteral">"; nr of holes is "</font>&lt;&lt; dHolePerc &lt;&lt; <font class="stringliteral">"%"</font> &lt;&lt; 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>  &amp;&amp; ! <a class="code" href="classWorldModel.html#a6">isTimeStopped</a>() &amp;&amp;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 + -
显示快捷键?