📄 group__board.html
字号:
01173 move-><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-><a class="code" href="structMove.html#o1">n</a>>0) {01235 *move-><a class="code" href="structMove.html#o0">position</a> = x;01236 }01237 01238 <span class="keywordflow">return</span> move-><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">( </td> <td class="md" nowrap valign="top">const <a class="el" href="structBoard.html">Board</a> * </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> * </td> <td class="mdname" nowrap> <em>start</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </td><td>: the board to check </td></tr> <tr><td valign=top><em>start</em> </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-><a class="code" href="structBoard.html#o7">empties</a>-><a class="code" href="structSquareList.html#o2">next</a>; empties-><a class="code" href="structSquareList.html#o0">position</a> != <a class="code" href="group__mac.html#gga56a56">NOMOVE</a>; empties = empties-><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-><a class="code" href="structSquareList.html#o0">position</a>, &(list-><a class="code" href="structMoveList.html#o0">move</a>))) {01329 previous = previous-><a class="code" href="structMoveList.html#o1">next</a> = list;01330 list++;01331 }01332 }01333 previous-><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">( </td> <td class="md" nowrap valign="top"><a class="el" href="structBoard.html">Board</a> * </td> <td class="mdname" nowrap> <em>board</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>FILE * </td> <td class="mdname" nowrap> <em>f</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </td><td>: board to print. </td></tr> <tr><td valign=top><em>f</em> </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 <= 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 <= 8; j++) {01439 x = i * 9 + j;01440 square = (<span class="keywordtype">int</span>)board-><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> && <a class="code" href="group__board.html#ga1">board_check_move</a>(board, x, board-><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-><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-><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-><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-><a class="code" href="structBoard.html#o3">n_empties</a>, 61-board-><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 + -