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

📄 group__board.html

📁 黑白棋终局解算程序
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Othello Solver: Board module</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.5 --><div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div><h1>Board module</h1><table border=0 cellpadding=0 cellspacing=0><tr><td></td></tr><tr><td colspan=2><br><h2>Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__board.html#ga0">board_set</a> (<a class="el" href="structBoard.html">Board</a> *board, const char *string)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a board from a string description.  <a href="#ga0"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__board.html#ga1">board_check_move</a> (const <a class="el" href="structBoard.html">Board</a> *board, int x, int player)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check move validity.  <a href="#ga1"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__board.html#ga2">board_count_flips</a> (const <a class="el" href="structBoard.html">Board</a> *board, int x, int player)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Count flippable discs.  <a href="#ga2"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__board.html#ga3">board_do_flip</a> (<a class="el" href="structBoard.html">Board</a> *board, int x, <a class="el" href="structMove.html">Move</a> *move)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flip discs on the board.  <a href="#ga3"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__board.html#ga4">board_get_move</a> (const <a class="el" href="structBoard.html">Board</a> *board, int x, <a class="el" href="structMove.html">Move</a> *move)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compute a move.  <a href="#ga4"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__board.html#ga5">board_update_move</a> (<a class="el" href="structBoard.html">Board</a> *board, const <a class="el" href="structMove.html">Move</a> *move)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Update a board.  <a href="#ga5"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__board.html#ga6">board_restore_move</a> (<a class="el" href="structBoard.html">Board</a> *board, const <a class="el" href="structMove.html">Move</a> *move)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Restore a board.  <a href="#ga6"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__board.html#ga7">board_update_pass</a> (<a class="el" href="structBoard.html">Board</a> *board)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Passing move.  <a href="#ga7"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__board.html#ga8">board_restore_pass</a> (<a class="el" href="structBoard.html">Board</a> *board)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Un-passing.  <a href="#ga8"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__board.html#ga9">board_get_movelist</a> (const <a class="el" href="structBoard.html">Board</a> *board, <a class="el" href="structMoveList.html">MoveList</a> *start)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a list of legal moves.  <a href="#ga9"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__board.html#ga10">board_get_mobility</a> (const <a class="el" href="structBoard.html">Board</a> *board, int player)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Estimate the mobility.  <a href="#ga10"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__board.html#ga11">board_get_corner_stability</a> (<a class="el" href="structBoard.html">Board</a> *board, int player)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Estimate corner stability.  <a href="#ga11"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__board.html#ga12">board_print</a> (<a class="el" href="structBoard.html">Board</a> *board, FILE *f)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the local parity counters. Print out the board.  <a href="#ga12"></a><br><br></td></tr></table><hr><a name="_details"></a><h2>Detailed Description</h2>This module deals with the <a class="el" href="structBoard.html">Board</a> management.<p>The <a class="el" href="structBoard.html">Board</a> is represented with a structure containing the following data:<ul><li>a 1-D array with the square contents.</li><li>the player to move.</li><li>the disc number for each players.</li><li>the number of remaining empty squares.</li><li>a list of empty squares for a fast navigation through them.</li><li>hash table codes identifying the board in the hash table.</li><li>a node counter.</li></ul><p>High level functions are provided to set/modify the board data or to compute some board properties. Most of the functions are optimized to be as fast as possible, while remaining readable. <hr><h2>Function Documentation</h2><a class="anchor" name="ga1" doxytag="solver.c::board_check_move" ></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"> int board_check_move </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>int&nbsp;</td>          <td class="mdname" nowrap> <em>x</em>, </td>        </tr>        <tr>          <td></td>          <td></td>          <td class="md" nowrap>int&nbsp;</td>          <td class="mdname" nowrap> <em>player</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>Check move validity. <p>Check if a legal move exists on square 'x' for 'player' <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 test </td></tr>    <tr><td valign=top><em>x</em>&nbsp;</td><td>square on which to move. </td></tr>    <tr><td valign=top><em>player</em>&nbsp;</td><td>player to move. </td></tr>  </table></dl><dl compact><dt><b>Returns:</b></dt><dd>1 if a legal move exists, 0 otherwise. </dd></dl><p><div class="fragment"><pre>00932 {00933     <span class="keyword">const</span> <span class="keywordtype">char</span> p = player;00934     <span class="keyword">const</span> <span class="keywordtype">char</span> o = <a class="code" href="group__mac.html#ga50">OPPONENT</a>(p);00935     <span class="keyword">const</span> <span class="keywordtype">char</span> *square = board-&gt;<a class="code" href="structBoard.html#o0">square</a> + x;00936 00937     <span class="keywordflow">switch</span> (<a class="code" href="group__mac.html#ga0">FLIPPING_DIRECTION_ID</a>[x]) {00938     <span class="keywordflow">case</span> 1:00939         <span class="keywordflow">return</span>  (<a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>(SE) ||00940                  <a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>(S ) ||00941                  <a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>( E));00942     <span class="keywordflow">case</span> 3:00943         <span class="keywordflow">return</span>  (<a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>(SW) ||00944                  <a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>( W) ||00945                  <a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>(S ));00946     <span class="keywordflow">case</span> 7:00947         <span class="keywordflow">return</span>  (<a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>(NE) ||00948                  <a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>(N ) ||00949                  <a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>( E));00950     <span class="keywordflow">case</span> 9:00951         <span class="keywordflow">return</span>  (<a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>(NW) ||00952                  <a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>(N ) ||00953                  <a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>( W));00954     <span class="keywordflow">case</span> 2:00955         <span class="keywordflow">return</span>  (<a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>(S ) ||00956                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(SE) ||00957                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(SW) ||00958                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>( E) ||00959                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>( W));00960     <span class="keywordflow">case</span> 4:00961         <span class="keywordflow">return</span>  (<a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>( E) ||00962                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(NE) ||00963                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(SE) ||00964                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(N ) ||00965                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(S ));00966     <span class="keywordflow">case</span> 6:00967         <span class="keywordflow">return</span>  (<a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>( W) ||00968                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(NW) ||00969                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(SW) ||00970                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(S ) ||00971                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(N ));00972     <span class="keywordflow">case</span> 8:00973         <span class="keywordflow">return</span>  (<a class="code" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>(N ) ||00974                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(NE) ||00975                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(NW) ||00976                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>( E) ||00977                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>( W));00978     <span class="keywordflow">case</span> 5:00979         <span class="keywordflow">return</span>  (<a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(N ) ||00980                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>( E) ||00981                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(S ) ||00982                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>( W) ||00983                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(NE) ||00984                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(SE) ||00985                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(NW) ||00986                  <a class="code" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(SW));00987     }00988     <span class="keywordflow">return</span> 0;00989 }</pre></div>    </td>  </tr></table><a class="anchor" name="ga2" doxytag="solver.c::board_count_flips" ></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"> int board_count_flips </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>int&nbsp;</td>          <td class="mdname" nowrap> <em>x</em>, </td>        </tr>        <tr>          <td></td>          <td></td>          <td class="md" nowrap>int&nbsp;</td>          <td class="mdname" nowrap> <em>player</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;

⌨️ 快捷键说明

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