The boards
module¶
The sgfmill.boards
module provides a Go board representation for use with the functions in sgfmill.sgf_moves
.
Everything in this module works with boards of arbitrarily large sizes.
The implementation is not designed for speed (even as Python code goes), and is certainly not appropriate for implementing a playing engine.
The module contains a single class:
- class
sgfmill.boards.
Board
(side)[source]¶ A
Board
object represents a legal position on a Go board.Instantiate with the board size, as an int >= 1. Only square boards are supported. The board is initially empty.
Board objects do not maintain any history information.
Board objects have the following attributes (which should be treated as read-only):
-
side
¶ The board size.
-
board_points
¶ A list of points, giving all points on the board.
-
The principal Board
methods are get()
and play()
. Their row and col parameters should be ints representing coordinates in the system used for a point.
-
Board.
get
(row, col)[source]¶ Return type: colour or None
Returns the contents of the specified point.
Raises
IndexError
if the coordinates are out of range.
-
Board.
play
(row, col, colour)[source]¶ Return type: move Places a stone of the specified colour on the specified point.
Raises
IndexError
if the coordinates are out of range.Raises
ValueError
if the point isn’t empty.Carries out any captures which follow from the placement, including self-captures.
This method doesn’t enforce any ko rule.
The return value indicates whether, immediately following this move, any point would be forbidden by the simple ko rule. If so, that point is returned; otherwise the return value is
None
.
The other Board
methods are:
-
Board.
list_occupied_points
()[source]¶ Return type: list of pairs (colour, point) Returns a list of all nonempty points, in unspecified order.
-
Board.
area_score
()[source]¶ Return type: int Calculates the area score of a position, assuming that all stones are alive. The result is the number of points controlled (occupied or surrounded) by Black minus the number of points controlled by White.
Doesn’t take any komi into account.
-
Board.
apply_setup
(black_points, white_points, empty_points)[source]¶ Return type: bool Adds and/or removes stones on arbitrary points. This is intended to support behaviour like SGF
AB
/AW
/AE
properties.Each parameter is an iterable of points.
Raises
IndexError
if any points are out of range.This method applies all the specified additions and removals, then removes any groups with no liberties (so the resulting position is always legal).
If the same point is specified in more than one list, the order in which the instructions are applied is undefined.
Returns
True
if the position was legal as specified.