⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 group__board.html

📁 黑白棋终局解算程序
💻 HTML
📖 第 1 页 / 共 5 页
字号:
01173     move-&gt;<a class="code" href="structMove.html#o3">hash_code</a>[1] = hash_code_set_disc[x][(<span class="keywordtype">int</span>)p][1];01174     <span class="keywordflow">switch</span> (<a class="code" href="group__mac.html#ga0">FLIPPING_DIRECTION_ID</a>[x]) {01175     <span class="keywordflow">case</span> 1:01176         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>( E, 6);01177         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(S , 6);01178         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(SE, 6);01179         <span class="keywordflow">break</span>;01180     <span class="keywordflow">case</span> 3:01181         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>( W, 6);01182         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(SW, 6);01183         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(S , 6);01184         <span class="keywordflow">break</span>;01185     <span class="keywordflow">case</span> 7:01186         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(N , 6);01187         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(NE, 6);01188         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>( E, 6);01189         <span class="keywordflow">break</span>;01190     <span class="keywordflow">case</span> 9:01191         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(NW, 6);01192         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(N , 6);01193         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>( W, 6);01194         <span class="keywordflow">break</span>;01195     <span class="keywordflow">case</span> 2:01196         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>( W, 4);01197         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>( E, 4);01198         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(SW, 4);01199         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(S , 6);01200         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(SE, 4);01201         <span class="keywordflow">break</span>;01202     <span class="keywordflow">case</span> 4:01203         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(N , 4);01204         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(NE, 4);01205         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>( E, 6);01206         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(S , 4);01207         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(SE, 4);01208         <span class="keywordflow">break</span>;01209     <span class="keywordflow">case</span> 6:01210         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(NW, 4);01211         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(N , 4);01212         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>( W, 6);01213         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(SW, 4);01214         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(S , 4);01215         <span class="keywordflow">break</span>;01216     <span class="keywordflow">case</span> 8:01217         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(NW, 4);01218         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(N , 6);01219         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(NE, 4);01220         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>( W, 4);01221         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>( E, 4);01222         <span class="keywordflow">break</span>;01223     <span class="keywordflow">case</span> 5:01224         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(NW, 4);01225         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(N , 4);01226         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(NE, 4);01227         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>( W, 4);01228         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>( E, 4);01229         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(SW, 4);01230         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(S , 4);01231         <a class="code" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(SE, 4);01232         <span class="keywordflow">break</span>;01233     }01234     <span class="keywordflow">if</span> (move-&gt;<a class="code" href="structMove.html#o1">n</a>&gt;0) {01235         *move-&gt;<a class="code" href="structMove.html#o0">position</a> = x;01236     }01237 01238     <span class="keywordflow">return</span> move-&gt;<a class="code" href="structMove.html#o1">n</a>;01239 }</pre></div>    </td>  </tr></table><a class="anchor" name="ga9" doxytag="solver.c::board_get_movelist" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> void board_get_movelist </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">const <a class="el" href="structBoard.html">Board</a> *&nbsp;</td>          <td class="mdname" nowrap> <em>board</em>, </td>        </tr>        <tr>          <td></td>          <td></td>          <td class="md" nowrap><a class="el" href="structMoveList.html">MoveList</a> *&nbsp;</td>          <td class="mdname" nowrap> <em>start</em></td>        </tr>        <tr>          <td></td>          <td class="md">)&nbsp;</td>          <td class="md" colspan="2"></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Get a list of legal moves. <p>Compute the complete list of legal moves and store it into a simple linked list, to fasten ulterior move sorting. <dl compact><dt><b>Parameters:</b></dt><dd>  <table border="0" cellspacing="2" cellpadding="0">    <tr><td valign=top><em>board</em>&nbsp;</td><td>: the board to check </td></tr>    <tr><td valign=top><em>start</em>&nbsp;</td><td>: start point of the linked-list that will received the legal moves. </td></tr>  </table></dl><p><div class="fragment"><pre>01323 {01324     <a class="code" href="structMoveList.html">MoveList</a> *list = start + 1, *previous = start;01325     <a class="code" href="structSquareList.html">SquareList</a> *empties;01326 01327     <span class="keywordflow">for</span> (empties = board-&gt;<a class="code" href="structBoard.html#o7">empties</a>-&gt;<a class="code" href="structSquareList.html#o2">next</a>; empties-&gt;<a class="code" href="structSquareList.html#o0">position</a> != <a class="code" href="group__mac.html#gga56a56">NOMOVE</a>; empties = empties-&gt;<a class="code" href="structSquareList.html#o2">next</a>) {01328         <span class="keywordflow">if</span> (<a class="code" href="group__board.html#ga4">board_get_move</a>(board, empties-&gt;<a class="code" href="structSquareList.html#o0">position</a>, &amp;(list-&gt;<a class="code" href="structMoveList.html#o0">move</a>))) {01329             previous = previous-&gt;<a class="code" href="structMoveList.html#o1">next</a> = list;01330             list++;01331         }01332     }01333     previous-&gt;<a class="code" href="structMoveList.html#o1">next</a> = NULL;01334 }</pre></div>    </td>  </tr></table><a class="anchor" name="ga12" doxytag="solver.c::board_print" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> void board_print </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top"><a class="el" href="structBoard.html">Board</a> *&nbsp;</td>          <td class="mdname" nowrap> <em>board</em>, </td>        </tr>        <tr>          <td></td>          <td></td>          <td class="md" nowrap>FILE *&nbsp;</td>          <td class="mdname" nowrap> <em>f</em></td>        </tr>        <tr>          <td></td>          <td class="md">)&nbsp;</td>          <td class="md" colspan="2"></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Initialize the local parity counters. Print out the board. <p>Print an ASCII representation of the board to an output stream. <dl compact><dt><b>Parameters:</b></dt><dd>  <table border="0" cellspacing="2" cellpadding="0">    <tr><td valign=top><em>board</em>&nbsp;</td><td>: board to print. </td></tr>    <tr><td valign=top><em>f</em>&nbsp;</td><td>: output stream. </td></tr>  </table></dl><p><div class="fragment"><pre>01430 {01431     <span class="keywordtype">int</span> i, j, square, x;01432     <span class="keywordtype">char</span> *color = <span class="stringliteral">"*O-.?"</span>;01433 01434     fputs(<span class="stringliteral">"  A B C D E F G H\n"</span>, f);01435     <span class="keywordflow">for</span> (i = 1; i &lt;= 8; i++) {01436         fputc(i + <span class="charliteral">'0'</span>, f);01437         fputc(<span class="charliteral">' '</span>, f);01438         <span class="keywordflow">for</span> (j = 1; j &lt;= 8; j++) {01439             x = i * 9 + j;01440             square = (<span class="keywordtype">int</span>)board-&gt;<a class="code" href="structBoard.html#o0">square</a>[x];01441             <span class="keywordflow">if</span> (square == <a class="code" href="group__mac.html#gga58a132">EMPTY</a> &amp;&amp; <a class="code" href="group__board.html#ga1">board_check_move</a>(board, x, board-&gt;<a class="code" href="structBoard.html#o1">player</a>))01442                 square++;01443             fputc(color[square], f);01444             fputc(<span class="charliteral">' '</span>, f);01445         }01446         fputc(i+<span class="charliteral">'0'</span>, f);01447         <span class="keywordflow">if</span> (i == 2)01448             fprintf(f, <span class="stringliteral">" %c to move"</span>, color[(<span class="keywordtype">int</span>)board-&gt;<a class="code" href="structBoard.html#o1">player</a>]);01449         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (i == 4)01450             fprintf(f, <span class="stringliteral">" *: discs = %2d    moves = %2d"</span>,01451                 board-&gt;<a class="code" href="structBoard.html#o2">n_discs</a>[BLACK], <a class="code" href="group__board.html#ga10">board_get_mobility</a>(board, BLACK));01452         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (i == 5)01453             fprintf(f, <span class="stringliteral">" O: discs = %2d    moves = %2d"</span>,01454                 board-&gt;<a class="code" href="structBoard.html#o2">n_discs</a>[WHITE], <a class="code" href="group__board.html#ga10">board_get_mobility</a>(board, WHITE));01455         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (i == 6)01456             fprintf(f, <span class="stringliteral">"  empties = %2d      ply = %2d"</span>,01457                 board-&gt;<a class="code" href="structBoard.html#o3">n_empties</a>, 61-board-&gt;<a class="code" href="structBoard.html#o3">n_empties</a>);01458         fputc(<span class="charliteral">'\n'</span>, f);01459     }01460     fputs(<span class="stringliteral">"  A B C D E F G H\n"</span>, f);01461 }

⌨️ 快捷键说明

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