围棋自动提子的算法

不败的石头 posted @ 2008年4月21日 06:20 in 编程 , 8172 阅读

可以仿照迷宫的算法来编制,假设是白棋提黑子:
1、以白棋当前下的点为例,遍历此白子的四个邻接子(上下左右)

2、如果此邻接子为黑子则分别向它的四个临接点做遍历;如果为白子则返回第1步取下一个邻接子
3、如果遇到白棋,则此个方向的遍历结束,此方向黑棋无气;
4、如果遇到棋盘边界,则此个方向的遍历结束,此方向黑棋无气;
5、如果遇到空(临界点处无棋子),则整个遍历结束,黑棋还有气;
6、如果遇到黑棋,则又向它的三个临接点遍历(去除掉来路的那个临接点),继续执行3-6部,直到遇到结束条件返回;

7、如果4个邻接子都遍历完则结束否则返回第1步,去下一个邻接子。

在整个遍历过程中要记住所有黑棋的位置,在整个遍历结束后,如果不是因为第四种情况结束的,则所有的黑棋将被删除。

Avatar_small
Panda Chen 说:
2011年1月08日 23:20

我觉得这个算法比较费时饿,可以把棋盘上的每一块棋保存为对象,但是棋块儿的合并算法比较麻烦。当然,数气的时候,遍历还是少不了的~


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter