player_8c-source.html

来自「仿真人工智能是指用人工的方法和技术」· HTML 代码 · 共 545 行 · 第 1/5 页

HTML
545
字号
00129 00130     <font class="comment">// wait for new information from the server</font>00131     <font class="comment">// cannot say bContLoop=WM-&gt;wait... since bContLoop can be changed elsewhere</font>00132     <font class="keywordflow">if</font>(  <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a157">waitForNewInformation</a>() == <font class="keyword">false</font> )00133         <a class="code" href="classPlayer.html#o1">bContLoop</a> =  <font class="keyword">false</font>;00134   }00135 00136   <font class="comment">// shutdow, print hole and number of players seen statistics</font>00137   printf(<font class="stringliteral">"Shutting down player %d\n"</font>, <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a14">getPlayerNumber</a>() );00138   printf(<font class="stringliteral">"   Number of holes: %d (%f)\n"</font>, <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#m0">iNrHoles</a>,00139                          ((<font class="keywordtype">double</font>)<a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#m0">iNrHoles</a>/<a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a5">getCurrentCycle</a>())*100 );00140   printf(<font class="stringliteral">"   Teammates seen: %d (%f)\n"</font>, <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#m2">iNrTeammatesSeen</a>,00141                          ((<font class="keywordtype">double</font>)<a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#m2">iNrTeammatesSeen</a>/<a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a5">getCurrentCycle</a>()) );00142   printf(<font class="stringliteral">"   Opponents seen: %d (%f)\n"</font>, <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#m1">iNrOpponentsSeen</a>,00143                          ((<font class="keywordtype">double</font>)<a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#m1">iNrOpponentsSeen</a>/<a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a5">getCurrentCycle</a>()) );00144 00145 }00146 00147 <a name="l00149"></a><a class="code" href="classPlayer.html#c0">00149</a> <font class="keywordtype">void</font> <a class="code" href="classPlayer.html#c0">Player::goalieMainLoop</a>( )00150 {00151   <a class="code" href="classPlayer.html#a4">deMeer5_goalie</a>();00152 }    00153 <a name="l00155"></a><a class="code" href="classPlayer.html#c1">00155</a> <font class="keywordtype">void</font> <a class="code" href="classPlayer.html#c1">Player::defenderMainLoop</a>( )00156 {00157   <a class="code" href="classPlayer.html#a3">deMeer5</a>( );00158 }00159 <a name="l00161"></a><a class="code" href="classPlayer.html#c2">00161</a> <font class="keywordtype">void</font> <a class="code" href="classPlayer.html#c2">Player::midfielderMainLoop</a>( )00162 {00163   <a class="code" href="classPlayer.html#a3">deMeer5</a>( );00164 }00165 <a name="l00167"></a><a class="code" href="classPlayer.html#c3">00167</a> <font class="keywordtype">void</font> <a class="code" href="classPlayer.html#c3">Player::attackerMainLoop</a>( )00168 {00169   <a class="code" href="classPlayer.html#a3">deMeer5</a>( );00170 }00171 <a name="l00182"></a><a class="code" href="classPlayer.html#a3">00182</a> <font class="keywordtype">void</font> <a class="code" href="classPlayer.html#a3">Player::deMeer5</a>(  )00183 {00184 00185   <a class="code" href="classSoccerCommand.html">SoccerCommand</a> soc(<a class="code" href="SoccerTypes_8h.html#a247a180">CMD_ILLEGAL</a>);00186   <a class="code" href="classVecPosition.html">VecPosition</a>   posAgent = <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a43">getAgentGlobalPosition</a>();00187   <a class="code" href="classVecPosition.html">VecPosition</a>   posBall  = <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a47">getBallPos</a>();00188   <font class="keywordtype">int</font>           iTmp;00189 00190   <font class="keywordflow">if</font>( <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a85">isBeforeKickOff</a>( ) )00191   {00192     <font class="keywordflow">if</font>( <a class="code" href="classPlayer.html#o0">formations</a>-&gt;<a class="code" href="classFormations.html#a5">getFormation</a>() != <a class="code" href="SoccerTypes_8h.html#a249a201">FT_INITIAL</a> || <font class="comment">// not in kick_off formation</font>00193         posAgent.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>( <a class="code" href="classPlayer.html#a1">getStrategicPosition</a>() ) &gt; 2.0 )  00194     {00195       <a class="code" href="classPlayer.html#o0">formations</a>-&gt;<a class="code" href="classFormations.html#a4">setFormation</a>( <a class="code" href="SoccerTypes_8h.html#a249a201">FT_INITIAL</a> );       <font class="comment">// go to kick_off formation</font>00196       <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( <a class="code" href="classBasicPlayer.html#b11">teleportToPos</a>( <a class="code" href="classPlayer.html#a1">getStrategicPosition</a>() ) );00197     }00198     <font class="keywordflow">else</font>                                            <font class="comment">// else turn to center</font>00199     {00200       <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( <a class="code" href="classBasicPlayer.html#b1">turnBodyToPoint</a>( <a class="code" href="classVecPosition.html">VecPosition</a>( 0, 0 ), 0 ) );00201       <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( <a class="code" href="classBasicPlayer.html#b0">alignNeckWithBody</a>( ) );00202     }00203   }00204   <font class="keywordflow">else</font>00205   {00206     <a class="code" href="classPlayer.html#o0">formations</a>-&gt;<a class="code" href="classFormations.html#a4">setFormation</a>( <a class="code" href="SoccerTypes_8h.html#a249a202">FT_STANDARD</a> );00207     soc.<a class="code" href="classSoccerCommand.html#m1">commandType</a> = <a class="code" href="SoccerTypes_8h.html#a247a180">CMD_ILLEGAL</a>;00208 00209     <font class="keywordflow">if</font>( <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a61">getConfidence</a>( <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a> ) &lt; <a class="code" href="classBasicPlayer.html#n3">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a5">getBallConfThr</a>() )00210     {00211       <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( <a class="code" href="classBasicPlayer.html#b4">searchBall</a>() );         <font class="comment">// if ball pos unknown</font>00212       <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( <a class="code" href="classBasicPlayer.html#b0">alignNeckWithBody</a>( ) ); <font class="comment">// search for it</font>00213     }00214     <font class="keywordflow">else</font> <font class="keywordflow">if</font>( <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a128">isBallKickable</a>())                    <font class="comment">// if kickable</font>00215     {00216       <a class="code" href="classVecPosition.html">VecPosition</a> posGoal( <a class="code" href="SoccerTypes_8h.html#a13">PITCH_LENGTH</a>/2.0,00217               (-1 + 2*(<a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a5">getCurrentCycle</a>()%2)) * 0.4 * <a class="code" href="classBasicPlayer.html#n2">SS</a>-&gt;<a class="code" href="classServerSettings.html#a4">getGoalWidth</a>() );00218       soc = <a class="code" href="classBasicPlayer.html#b17">kickTo</a>( posGoal, <a class="code" href="classBasicPlayer.html#n2">SS</a>-&gt;<a class="code" href="classServerSettings.html#a66">getBallSpeedMax</a>() ); <font class="comment">// kick maximal</font>00219 00220       <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( soc );00221       <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( <a class="code" href="classBasicPlayer.html#b13">turnNeckToObject</a>( <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a>, soc ) );00222       Log.log( 100, <font class="stringliteral">"kick ball"</font> );00223     }00224     <font class="keywordflow">else</font> <font class="keywordflow">if</font>( <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a122">getFastestInSetTo</a>( <a class="code" href="SoccerTypes_8h.html#a241a115">OBJECT_SET_TEAMMATES</a>, <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a>, &amp;iTmp )00225               == <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a34">getAgentObjectType</a>()  &amp;&amp; !<a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a87">isDeadBallThem</a>() )00226     {                                                <font class="comment">// if fastest to ball</font>00227       Log.log( 100, <font class="stringliteral">"I am fastest to ball; can get there in %d cycles"</font>, iTmp );00228       soc = <a class="code" href="classBasicPlayer.html#b20">intercept</a>( <font class="keyword">false</font> );                      <font class="comment">// intercept the ball</font>00229 00230       <font class="keywordflow">if</font>( soc.<a class="code" href="classSoccerCommand.html#m1">commandType</a> == <a class="code" href="SoccerTypes_8h.html#a247a181">CMD_DASH</a> &amp;&amp;             <font class="comment">// if stamina low</font>00231           <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a39">getAgentStamina</a>().<a class="code" href="classStamina.html#a2">getStamina</a>() &lt;00232              <a class="code" href="classBasicPlayer.html#n2">SS</a>-&gt;<a class="code" href="classServerSettings.html#a22">getRecoverDecThr</a>()*<a class="code" href="classBasicPlayer.html#n2">SS</a>-&gt;<a class="code" href="classServerSettings.html#a18">getStaminaMax</a>()+200 )00233       {00234         soc.<a class="code" href="classSoccerCommand.html#m3">dPower</a> = 30.0 * <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a39">getAgentStamina</a>().<a class="code" href="classStamina.html#a6">getRecovery</a>(); <font class="comment">// dash slow</font>00235         <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( soc );00236         <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( <a class="code" href="classBasicPlayer.html#b13">turnNeckToObject</a>( <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a>, soc ) );00237       }00238       <font class="keywordflow">else</font>                                           <font class="comment">// if stamina high</font>00239       {00240         <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( soc );               <font class="comment">// dash as intended</font>00241         <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( <a class="code" href="classBasicPlayer.html#b13">turnNeckToObject</a>( <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a>, soc ) );00242       }00243      }00244      <font class="keywordflow">else</font> <font class="keywordflow">if</font>( posAgent.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>(<a class="code" href="classPlayer.html#a1">getStrategicPosition</a>()) &gt;00245                   1.5 + fabs(posAgent.<a class="code" href="classVecPosition.html#a26">getX</a>()-posBall.<a class="code" href="classVecPosition.html#a26">getX</a>())/10.0)00246                                                   <font class="comment">// if not near strategic pos</font>00247      {00248        <font class="keywordflow">if</font>( <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a39">getAgentStamina</a>().<a class="code" href="classStamina.html#a2">getStamina</a>() &gt;     <font class="comment">// if stamina high</font>00249                             <a class="code" href="classBasicPlayer.html#n2">SS</a>-&gt;<a class="code" href="classServerSettings.html#a22">getRecoverDecThr</a>()*<a class="code" href="classBasicPlayer.html#n2">SS</a>-&gt;<a class="code" href="classServerSettings.html#a18">getStaminaMax</a>()+200 )00250        {00251          soc = <a class="code" href="classBasicPlayer.html#b14">moveToPos</a>(<a class="code" href="classPlayer.html#a1">getStrategicPosition</a>(),<a class="code" href="classBasicPlayer.html#n3">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a9">getPlayerWhenToTurnAngle</a>());

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?