The gomill.boards module contains Gomill’s Go board representation.
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:
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):
The board size.
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.
Return type: | colour or None |
---|
Returns the contents of the specified point.
Raises IndexError if the coordinates are out of range.
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:
Return type: | bool |
---|
Returns True if all points on the board are empty.
Return type: | list of pairs (colour, point) |
---|
Returns a list of all nonempty points, in unspecified order.
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.
Return type: | Board |
---|
Returns an independent copy of the board.
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.