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->wait... since bContLoop can be changed elsewhere</font>00132 <font class="keywordflow">if</font>( <a class="code" href="classBasicPlayer.html#n1">WM</a>-><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>-><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>-><a class="code" href="classWorldModel.html#m0">iNrHoles</a>,00139 ((<font class="keywordtype">double</font>)<a class="code" href="classBasicPlayer.html#n1">WM</a>-><a class="code" href="classWorldModel.html#m0">iNrHoles</a>/<a class="code" href="classBasicPlayer.html#n1">WM</a>-><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>-><a class="code" href="classWorldModel.html#m2">iNrTeammatesSeen</a>,00141 ((<font class="keywordtype">double</font>)<a class="code" href="classBasicPlayer.html#n1">WM</a>-><a class="code" href="classWorldModel.html#m2">iNrTeammatesSeen</a>/<a class="code" href="classBasicPlayer.html#n1">WM</a>-><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>-><a class="code" href="classWorldModel.html#m1">iNrOpponentsSeen</a>,00143 ((<font class="keywordtype">double</font>)<a class="code" href="classBasicPlayer.html#n1">WM</a>-><a class="code" href="classWorldModel.html#m1">iNrOpponentsSeen</a>/<a class="code" href="classBasicPlayer.html#n1">WM</a>-><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>-><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>-><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>-><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>-><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>() ) > 2.0 ) 00194 {00195 <a class="code" href="classPlayer.html#o0">formations</a>-><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>-><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>-><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>-><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>-><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>-><a class="code" href="classWorldModel.html#a61">getConfidence</a>( <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a> ) < <a class="code" href="classBasicPlayer.html#n3">PS</a>-><a class="code" href="classPlayerSettings.html#a5">getBallConfThr</a>() )00210 {00211 <a class="code" href="classBasicPlayer.html#n0">ACT</a>-><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>-><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>-><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>-><a class="code" href="classWorldModel.html#a5">getCurrentCycle</a>()%2)) * 0.4 * <a class="code" href="classBasicPlayer.html#n2">SS</a>-><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>-><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>-><a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( soc );00221 <a class="code" href="classBasicPlayer.html#n0">ACT</a>-><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>-><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>, &iTmp )00225 == <a class="code" href="classBasicPlayer.html#n1">WM</a>-><a class="code" href="classWorldModel.html#a34">getAgentObjectType</a>() && !<a class="code" href="classBasicPlayer.html#n1">WM</a>-><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> && <font class="comment">// if stamina low</font>00231 <a class="code" href="classBasicPlayer.html#n1">WM</a>-><a class="code" href="classWorldModel.html#a39">getAgentStamina</a>().<a class="code" href="classStamina.html#a2">getStamina</a>() <00232 <a class="code" href="classBasicPlayer.html#n2">SS</a>-><a class="code" href="classServerSettings.html#a22">getRecoverDecThr</a>()*<a class="code" href="classBasicPlayer.html#n2">SS</a>-><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>-><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>-><a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( soc );00236 <a class="code" href="classBasicPlayer.html#n0">ACT</a>-><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>-><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>-><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>()) >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>-><a class="code" href="classWorldModel.html#a39">getAgentStamina</a>().<a class="code" href="classStamina.html#a2">getStamina</a>() > <font class="comment">// if stamina high</font>00249 <a class="code" href="classBasicPlayer.html#n2">SS</a>-><a class="code" href="classServerSettings.html#a22">getRecoverDecThr</a>()*<a class="code" href="classBasicPlayer.html#n2">SS</a>-><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>-><a class="code" href="classPlayerSettings.html#a9">getPlayerWhenToTurnAngle</a>());
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?