计算机围棋/棋盘表示
外观
< 计算机围棋
所有围棋程序必须解决的首要问题之一是如何存储游戏的当前状态。最简单的表示至少需要实现
public class Board { public Point koPoint; private int boardSize; private Color[][] board; public Color getColor(Point p) { board[p.x][p.y]; } public void setColor(Point p, Color color) { board[p.x][p.y] = color; } }
一些程序,比如 GNU Go,使用一维数组而不是二维数组。这样做有几个优点
- 棋盘上的一个点可以用单个整数表示
- 对于一维坐标,通常只需要一次计算,而对于二维坐标则需要两次计算
有关此策略的更多信息,请参见 将棋盘表示为一维数组.
大多数程序还存储其他信息,这使得评估棋盘位置更容易;我们将在下一节介绍这些策略。
[1] 为了简单起见,我们的程序将假设 Tromp-Taylor 规则,忽略 超级禁入,并额外规定 自杀 是非法的。