計算機圍棋/棋盤表示
外觀
< 計算機圍棋
所有圍棋程式必須解決的首要問題之一是如何儲存遊戲的當前狀態。最簡單的表示至少需要實現
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 規則,忽略 超級禁入,並額外規定 自殺 是非法的。