1 """Imago output module."""
5 COORDS = 'abcdefghijklmnopqrs'
8 def __init__(self, size, stones):
15 for i in range(self.size):
17 for j in range(self.size):
18 line.append(self.stones[k])
20 lines.append(" ".join(line))
21 return ("\n".join(lines))
23 def asSGFsetPos(self):
24 """Returns SGF (set position) representation of the position."""
26 #TODO version numbering
27 sgf = "(;FF[4]GM[1]SZ[" + str(self.size) + "]AP[Imago:0.1.0]\n"
36 for i in range(self.size):
37 for j in range(self.size):
38 stone = self.stones[i * self.size + j]
45 sgf += "AB" + ''.join('[' + COORDS[j] + COORDS[i] + ']'
46 for (i, j) in black) + "\n"
48 sgf += "AW" + ''.join('[' + COORDS[j] + COORDS[i] + ']'
49 for (i, j) in white) + "\n"
52 def getMove(self, board):
53 for i in range(self.size):
54 for j in range(self.size):
55 if (self.stones[self.size * i + j] == "."):
56 if (board.stones[self.size * i + j] == "W"):
57 return ("W", COORDS[i] + COORDS[j])
58 elif (board.stones[self.size * i + j] == "B"):
59 return ("B", COORDS[i] + COORDS[j])
64 def __init__(self, size, board=None):
65 self.init_board = board or Board(size, (size * size) * ".")
66 self.board = self.init_board
70 def addMove(self, board):
71 self.moves.append(self.board.getMove(board))
75 sgf = "(;FF[4]GM[1]SZ[" + str(self.size) + "]AP[Imago:0.1.0]\n"
76 sgf += self.init_board.SGFpos()
79 sgf += ";" + m[0] + "[" + m[1] + "]\n"