player_8c-source.html

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

HTML
545
字号
00503          <font class="stringliteral">" t(urn) angle"</font>                                  &lt;&lt; endl &lt;&lt;00504          <font class="stringliteral">" v(iewmode) narrow | normal | wide low | high"</font>  &lt;&lt; endl &lt;&lt;00505          <font class="stringliteral">" w(orldmodel)"</font>                                  &lt;&lt; endl;00506 }00507 <a name="l00512"></a><a class="code" href="classPlayer.html#a7">00512</a> <font class="keywordtype">bool</font> <a class="code" href="classPlayer.html#a7">Player::executeStringCommand</a>( <font class="keywordtype">char</font> *str)00513 {00514   <a class="code" href="classSoccerCommand.html">SoccerCommand</a> socCommand;00515   <font class="keywordtype">int</font>           i;00516   <font class="keywordtype">double</font>        x, y;00517 00518   <font class="keywordflow">switch</font>( str[0] )00519   {00520     <font class="keywordflow">case</font> <font class="charliteral">'a'</font>:                                  <font class="comment">// actions</font>00521       <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a155">showQueuedCommands</a>();00522       <font class="keywordflow">break</font>;00523     <font class="keywordflow">case</font> <font class="charliteral">'c'</font>:                                 <font class="comment">// catch dir or ps</font>00524       <font class="keywordflow">if</font>( strlen(str) &gt; 1 &amp;&amp; str[1] == <font class="charliteral">'s'</font> )00525       {00526         <a class="code" href="classBasicPlayer.html#n3">PS</a>-&gt;<a class="code" href="classGenericValues.html#a9">show</a>( cout, <font class="stringliteral">":"</font> );00527         <font class="keywordflow">break</font>;00528       }00529       socCommand.<a class="code" href="classSoccerCommand.html#a2">makeCommand</a>( <a class="code" href="SoccerTypes_8h.html#a247a185">CMD_CATCH</a>, <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &amp;str ) );00530       <font class="keywordflow">break</font>;00531     <font class="keywordflow">case</font> <font class="charliteral">'d'</font>:                                 <font class="comment">// dash</font>00532       socCommand.<a class="code" href="classSoccerCommand.html#m1">commandType</a> = <a class="code" href="SoccerTypes_8h.html#a247a181">CMD_DASH</a>;00533       socCommand.<a class="code" href="classSoccerCommand.html#m3">dPower</a>      = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00534       socCommand.<a class="code" href="classSoccerCommand.html#m9">iTimes</a>      = <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>   ( &amp;str );00535       <font class="keywordflow">if</font>( socCommand.<a class="code" href="classSoccerCommand.html#m9">iTimes</a> == 0 ) socCommand.<a class="code" href="classSoccerCommand.html#m9">iTimes</a> = 1;00536       <font class="keywordflow">break</font>;00537     <font class="keywordflow">case</font> <font class="charliteral">'h'</font>:                                <font class="comment">// help</font>00538       <a class="code" href="classPlayer.html#a6">showStringCommands</a>( cout );00539       <font class="keywordflow">return</font> <font class="keyword">true</font>;00540     <font class="keywordflow">case</font> <font class="charliteral">'k'</font>:                                <font class="comment">// kick or ka (kick advanced)</font>00541       socCommand.<a class="code" href="classSoccerCommand.html#m1">commandType</a> = <a class="code" href="SoccerTypes_8h.html#a247a186">CMD_KICK</a>;00542       <font class="keywordflow">if</font>( str[1] == <font class="charliteral">'a'</font> ) <font class="comment">// advanced kick</font>00543       {00544         <font class="keywordtype">double</font> x = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00545         <font class="keywordtype">double</font> y = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00546         <font class="keywordtype">double</font> e = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00547         socCommand = <a class="code" href="classBasicPlayer.html#b17">kickTo</a>( <a class="code" href="classVecPosition.html">VecPosition</a>( x, y), e );00548       }00549       <font class="keywordflow">else</font>00550       {00551         socCommand.<a class="code" href="classSoccerCommand.html#m3">dPower</a> = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00552         socCommand.<a class="code" href="classSoccerCommand.html#m2">dAngle</a> = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00553       }00554       <font class="keywordflow">break</font>;00555     <font class="keywordflow">case</font> <font class="charliteral">'m'</font>:                               <font class="comment">// move</font>00556       socCommand.<a class="code" href="classSoccerCommand.html#m1">commandType</a> = <a class="code" href="SoccerTypes_8h.html#a247a187">CMD_MOVE</a>;00557       socCommand.<a class="code" href="classSoccerCommand.html#m6">dX</a>          = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00558       socCommand.<a class="code" href="classSoccerCommand.html#m7">dY</a>          = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00559       socCommand.<a class="code" href="classSoccerCommand.html#m2">dAngle</a>      = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00560       <font class="keywordflow">break</font>;00561     <font class="keywordflow">case</font> <font class="charliteral">'n'</font>:                              <font class="comment">// turn_neck</font>00562       socCommand.<a class="code" href="classSoccerCommand.html#m1">commandType</a> = <a class="code" href="SoccerTypes_8h.html#a247a183">CMD_TURNNECK</a>;00563       socCommand.<a class="code" href="classSoccerCommand.html#m2">dAngle</a>      = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00564       <font class="keywordflow">break</font>;00565     <font class="keywordflow">case</font> <font class="charliteral">'o'</font>:                              <font class="comment">// count nr opp in cone</font>00566       x = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00567       y = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00568       i = <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a115">getNrInSetInCone</a>( <a class="code" href="SoccerTypes_8h.html#a241a116">OBJECT_SET_OPPONENTS</a>, x, 00569               <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a43">getAgentGlobalPosition</a>(),00570               <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a43">getAgentGlobalPosition</a>()+<a class="code" href="classVecPosition.html">VecPosition</a>( y,00571           <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a37">getAgentGlobalNeckAngle</a>(), POLAR ) );00572       printf( <font class="stringliteral">"%d opponents\n"</font>, i );00573       <font class="keywordflow">return</font> <font class="keyword">true</font>;00574     <font class="keywordflow">case</font> <font class="charliteral">'p'</font>:                              <font class="comment">// predict cycles to point</font>00575       x = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00576       y = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00577       i = <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a109">predictNrCyclesToPoint</a>( <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a34">getAgentObjectType</a>(),00578                      <a class="code" href="classVecPosition.html">VecPosition</a>( x, y ), <a class="code" href="classBasicPlayer.html#n3">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a9">getPlayerWhenToTurnAngle</a>() );00579       printf( <font class="stringliteral">"%d cycles\n"</font>, i );00580       <font class="keywordflow">return</font> <font class="keyword">true</font>;00581     <font class="keywordflow">case</font> <font class="charliteral">'q'</font>:                             <font class="comment">// quit</font>00582       <a class="code" href="classPlayer.html#o1">bContLoop</a> = <font class="keyword">false</font>;00583       <font class="keywordflow">return</font> <font class="keyword">true</font>;00584     <font class="keywordflow">case</font> <font class="charliteral">'s'</font>:                             <font class="comment">// ss (serversettings) or say</font>00585       <font class="keywordflow">if</font>( strlen(str) &gt; 1 &amp;&amp; str[1] == <font class="charliteral">'s'</font> )00586       {00587         <a class="code" href="classBasicPlayer.html#n2">SS</a>-&gt;<a class="code" href="classGenericValues.html#a9">show</a>( cout, <font class="stringliteral">":"</font> );00588         <font class="keywordflow">break</font>;00589       }00590       socCommand.<a class="code" href="classSoccerCommand.html#m1">commandType</a> = <a class="code" href="SoccerTypes_8h.html#a247a189">CMD_SAY</a>;00591       <a class="code" href="classParse.html#d3">Parse::gotoFirstOccurenceOf</a>( <font class="charliteral">' '</font>, &amp;str );00592       <a class="code" href="classParse.html#d4">Parse::gotoFirstNonSpace</a>( &amp;str );00593       strcpy( socCommand.<a class="code" href="classSoccerCommand.html#m8">str</a>, str);00594       <font class="keywordflow">break</font>;00595     <font class="keywordflow">case</font> <font class="charliteral">'t'</font>:                             <font class="comment">// turn</font>00596       socCommand.<a class="code" href="classSoccerCommand.html#m1">commandType</a> = <a class="code" href="SoccerTypes_8h.html#a247a182">CMD_TURN</a>;00597       socCommand.<a class="code" href="classSoccerCommand.html#m2">dAngle</a>      = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;str );00598       <font class="keywordflow">break</font>;00599     <font class="keywordflow">case</font> <font class="charliteral">'v'</font>:                             <font class="comment">// change_view</font>00600       socCommand.<a class="code" href="classSoccerCommand.html#m1">commandType</a> = <a class="code" href="SoccerTypes_8h.html#a247a184">CMD_CHANGEVIEW</a>;00601       <a class="code" href="classParse.html#d3">Parse::gotoFirstOccurenceOf</a>(<font class="charliteral">' '</font>, &amp;str );00602       <a class="code" href="classParse.html#d4">Parse::gotoFirstNonSpace</a>( &amp;str );00603       socCommand.<a class="code" href="classSoccerCommand.html#m5">va</a>          = <a class="code" href="classSoccerTypes.html#d25">SoccerTypes::getViewAngleFromStr</a>( str );00604       <a class="code" href="classParse.html#d3">Parse::gotoFirstOccurenceOf</a>(<font class="charliteral">' '</font>, &amp;str );00605       <a class="code" href="classParse.html#d4">Parse::gotoFirstNonSpace</a>( &amp;str );00606       socCommand.<a class="code" href="classSoccerCommand.html#m4">vq</a>          = <a class="code" href="classSoccerTypes.html#d28">SoccerTypes::getViewQualityFromStr</a>( str );00607       <font class="keywordflow">break</font>;00608     <font class="keywordflow">case</font> <font class="charliteral">'w'</font>:                            <font class="comment">// worldmodel</font>00609       <a class="code" href="classBasicPlayer.html#n1">WM</a>-&gt;<a class="code" href="classWorldModel.html#a153">show</a>();00610       <font class="keywordflow">return</font> <font class="keyword">true</font>;00611     <font class="keywordflow">default</font>:                             <font class="comment">// default: send entered string</font>00612       <a class="code" href="classBasicPlayer.html#n0">ACT</a>-&gt;<a class="code" href="classActHandler.html#a6">sendMessage</a>( str );00613       <font class="keywordflow">return</font> <font class="keyword">true</font>;00614   }00615   <font class

⌨️ 快捷键说明

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