COORDS = 'abcdefghijklmnopqrs'
+# TODO refactor method names
+
class Board:
+ """Represents the state of the board."""
def __init__(self, size, stones):
self.stones = stones
self.size = size
def __str__(self):
+ """Retrun string representation of the board."""
lines = []
k = 0
for i in range(self.size):
return sgf
def addMove(self, m):
+ """Add move to the board."""
self.stones[(m.y * self.size) + m.x] = m.color
def getMoveCandidates(self, board):
+ """Take the next board in game and return a list of moves that are
+ new."""
candidates = []
for i in range(self.size):
for j in range(self.size):
return candidates
class Move:
+ """Repsresents a move."""
def __init__(self, color, y, x, comment=None):
self.color = color
self.x = x
self.comment = comment
def sgf_coords(self):
+ """Return coordinates of the move in SGF."""
return COORDS[self.x] + COORDS[self.y]
class Game:
+ """Represents a game."""
def __init__(self, size, board=None, debug=True):
self.init_board = board or Board(size, (size * size) * ".")
self.board = copy.deepcopy(self.init_board)
self.debug_comment = ""
def addMove(self, board):
+ """Add next move to the game."""
candidates = self.board.getMoveCandidates(board)
if self.debug:
comment = str(board)
self.board.addMove(move)
def asSGF(self):
+ """Return the game representation as SGF string."""
sgf = "(;FF[4]GM[1]SZ[" + str(self.size) + "]AP[Imago:0.1.0]\n"
sgf += self.init_board.SGFpos()
for m in self.moves: