player_8c-source.html

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

HTML
545
字号
00367       }00368       <font class="keywordflow">else</font>00369       {00370         <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( soc = <a class="code" href="classBasicPlayer.html#b12">turnBodyToObject</a>( <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a> ) );00371         <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 ) );00372       }00373     }00374   }00375   <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#a73">isFreeKickUs</a>() == <font class="keyword">true</font> || <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a83">isGoalKickUs</a>() == <font class="keyword">true</font> )00376   {00377     <font class="keywordflow">if</font>( <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a128">isBallKickable</a>() )00378     {00379       <font class="keywordflow">if</font>( <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a1">getTimeSinceLastCatch</a>() == 25 &amp;&amp; <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a73">isFreeKickUs</a>() )00380       {00381         <font class="comment">// move to position with lesser opponents.</font>00382         <font class="keywordflow">if</font>( <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a114">getNrInSetInCircle</a>( <a class="code" href="SoccerTypes_8h.html#a241a116">OBJECT_SET_OPPONENTS</a>, 00383                                           <a class="code" href="classCircle.html">Circle</a>(posRightTop, 15.0 )) &lt;00384             <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a114">getNrInSetInCircle</a>( <a class="code" href="SoccerTypes_8h.html#a241a116">OBJECT_SET_OPPONENTS</a>, 00385                                            <a class="code" href="classCircle.html">Circle</a>(posLeftTop,  15.0 )) )00386           soc.<a class="code" href="classSoccerCommand.html#a2">makeCommand</a>( <a class="code" href="SoccerTypes_8h.html#a247a187">CMD_MOVE</a>, posRightTop.<a class="code" href="classVecPosition.html#a26">getX</a>(),posRightTop.<a class="code" href="classVecPosition.html#a28">getY</a>(),0.0);00387         <font class="keywordflow">else</font>00388           soc.<a class="code" href="classSoccerCommand.html#a2">makeCommand</a>( <a class="code" href="SoccerTypes_8h.html#a247a187">CMD_MOVE</a>, posLeftTop.<a class="code" href="classVecPosition.html#a26">getX</a>(), posLeftTop.<a class="code" href="classVecPosition.html#a28">getY</a>(), 0.0);00389         <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( soc );00390       }00391       <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#a1">getTimeSinceLastCatch</a>() &gt; 28 )00392       {00393         soc = <a class="code" href="classBasicPlayer.html#b17">kickTo</a>( <a class="code" href="classVecPosition.html">VecPosition</a>(0,posAgent.<a class="code" href="classVecPosition.html#a28">getY</a>()*2.0), 2.0 );    00394         <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( soc );00395       }00396       <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#a1">getTimeSinceLastCatch</a>() &lt; 25 )00397       {00398         <a class="code" href="classVecPosition.html">VecPosition</a> posSide( 0.0, posAgent.<a class="code" href="classVecPosition.html#a28">getY</a>() ); 00399         <font class="keywordflow">if</font>( fabs( (posSide - posAgent).getDirection() - angBody) &gt; 10 )00400         {00401           soc = <a class="code" href="classBasicPlayer.html#b1">turnBodyToPoint</a>( posSide );00402           <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( soc );00403         }00404         <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 ) );00405       }00406     }00407     <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#a83">isGoalKickUs</a>()  )00408     {00409       <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( soc = <a class="code" href="classBasicPlayer.html#b20">intercept</a>( <font class="keyword">true</font> ) );00410       <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 ) );00411     }00412     <font class="keywordflow">else</font>00413       <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 ) );00414   }00415   <font class="keywordflow">else</font>00416   {00417      <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a1">putCommandInQueue</a>( soc = <a class="code" href="classBasicPlayer.html#b12">turnBodyToObject</a>( <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a> ) );00418      <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 ) );00419   }00420 00421 }00422 <a name="l00434"></a><a class="code" href="classPlayer.html#a1">00434</a> <a class="code" href="classVecPosition.html">VecPosition</a> <a class="code" href="classPlayer.html#a1">Player::getStrategicPosition</a>( <font class="keywordtype">int</font> iPlayer )00435 {00436   <font class="comment">// -1 is default -&gt; get player number in formation</font>00437   <font class="keywordflow">if</font>( iPlayer == -1 )00438     iPlayer = <a class="code" href="classPlayer.html#o0">formations</a>-&gt;<a class="code" href="classFormations.html#a7">getPlayerInFormation</a>();00439 00440   <font class="comment">// get maximal allowed x coordinate, this is offside x coordinate</font>00441   <font class="keywordtype">double</font> dMaxX = <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a140">getOffsideX</a>();00442   00443   <font class="comment">// after standing offside we are not allowed to move for ball</font>00444   <font class="comment">// with a goal kick of them we are not allowed to move into penalty area</font>00445   <font class="keywordflow">if</font>( <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a77">isOffsideUs</a>( ) )00446     dMaxX = <a class="code" href="Geometry_8h.html#a2">min</a>( dMaxX, <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a47">getBallPos</a>().<a class="code" href="classVecPosition.html#a26">getX</a>() - 1.0 );00447   <font class="keywordflow">if</font>( <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a84">isGoalKickThem</a>() );00448     dMaxX = <a class="code" href="Geometry_8h.html#a2">min</a>( dMaxX, <a class="code" href="SoccerTypes_8h.html#a18">PENALTY_X</a> - 1.0 );00449 00450 00451   <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> ) &gt; <a class="code" href="classBasicPlayer.html#n3">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a5">getBallConfThr</a>() )00452     <font class="keywordflow">return</font> <a class="code" href="classPlayer.html#o0">formations</a>-&gt;<a class="code" href="classFormations.html#a2">getStrategicPosition</a>( iPlayer, <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a47">getBallPos</a>(), dMaxX );00453   <font class="keywordflow">else</font>00454     <font class="keywordflow">return</font> <a class="code" href="classPlayer.html#o0">formations</a>-&gt;<a class="code" href="classFormations.html#a2">getStrategicPosition</a>( iPlayer, <a class="code" href="classVecPosition.html">VecPosition</a>(0,0), dMaxX );00455 }00456 <a name="l00468"></a><a class="code" href="classPlayer.html#a5">00468</a> <font class="keywordtype">void</font> <a class="code" href="classPlayer.html#a5">Player::handleStdin</a>( )00469 {00470   <font class="keywordtype">char</font> buf[<a class="code" href="SoccerTypes_8h.html#a6">MAX_MSG</a>];00471 00472   <font class="keywordflow">while</font>( bContLoop )00473   {00474     fgets( buf, <a class="code" href="SoccerTypes_8h.html#a6">MAX_MSG</a>, stdin ); 00475     <a class="code" href="classPlayer.html#a7">executeStringCommand</a>( buf );00476   }00477 }00478 <a name="l00484"></a><a class="code" href="classPlayer.html#a6">00484</a> <font class="keywordtype">void</font> <a class="code" href="classPlayer.html#a6">Player::showStringCommands</a>( ostream&amp; out )00485 {00486   out &lt;&lt; <font class="stringliteral">"Basic commands:"</font>                                &lt;&lt; endl &lt;&lt;00487          <font class="stringliteral">" a(ctions)"</font>                                     &lt;&lt; endl &lt;&lt;00488          <font class="stringliteral">" c(atch) direction"</font>                             &lt;&lt; endl &lt;&lt;00489          <font class="stringliteral">" cs(lientsettings"</font>                              &lt;&lt; endl &lt;&lt;00490          <font class="stringliteral">" d(ash) power [ times ]"</font>                        &lt;&lt; endl &lt;&lt;00491          <font class="stringliteral">" g(oto) x y"</font>                                    &lt;&lt; endl &lt;&lt;00492          <font class="stringliteral">" h(elp)"</font>                                        &lt;&lt; endl &lt;&lt;00493          <font class="stringliteral">" i(ntercept) x y"</font>                               &lt;&lt; endl &lt;&lt;00494          <font class="stringliteral">" k(ick) power angle"</font>                            &lt;&lt; endl &lt;&lt;00495          <font class="stringliteral">" ka x y endspeed "</font>                              &lt;&lt; endl &lt;&lt;00496          <font class="stringliteral">" m(ove) x y"</font>                                    &lt;&lt; endl &lt;&lt;00497          <font class="stringliteral">" n(eck) angle"</font>                                  &lt;&lt; endl &lt;&lt;00498          <font class="stringliteral">" o(pponents in cone) width dist"</font>                &lt;&lt; endl &lt;&lt;00499          <font class="stringliteral">" p(redict cycles to) x y"</font>                       &lt;&lt; endl &lt;&lt;00500          <font class="stringliteral">" q(uit)"</font>                                        &lt;&lt; endl &lt;&lt;00501          <font class="stringliteral">" s(ay) message"</font>                                 &lt;&lt; endl &lt;&lt;00502          <font class="stringliteral">" ss(erversettings)"</font>                             &lt;&lt; endl &lt;&lt;

⌨️ 快捷键说明

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