import manual
import intrsc
import gridf
+import output
def argument_parser():
parser = argparse.ArgumentParser(description=__doc__)
print board
else:
+ game = output.Game(19, board) #TODO size parameter
for f in args.files[1:]:
try:
image = Image.open(f)
except IOError, msg:
print >> sys.stderr, msg
continue
+ if verbose:
+ print >> sys.stderr, "Opening", f
if image.mode == 'P':
image = image.convert('RGB')
board = intrsc.board(image, lines, show_all, do_something)
- for line in board:
- print ' '.join(line)
+ if args.sgf_output:
+ game.addMove(board)
+ else:
+ print board
+
+ if args.sgf_output:
+ print game.asSGF()
return 0
try:
sys.exit(main())
except KeyboardInterrupt: #TODO does this work?
- print "Interrupted."
+ print >> sys.stderr, "Interrupted."
sys.exit(1)
def asSGFsetPos(self):
"""Returns SGF (set position) representation of the position."""
+ #TODO version numbering
+ sgf = "(;FF[4]GM[1]SZ[" + str(self.size) + "]AP[Imago:0.1.0]\n"
+ sgf += self.SGFpos()
+ sgf += ")"
+ return sgf
+
+ def SGFpos(self):
black = []
white = []
black.append((i, j))
elif stone == 'W':
white.append((i, j))
-
sgf = ""
- #TODO version numbering
- sgf += "(;FF[4]GM[1]SZ[" + str(self.size) + "]AP[Imago:0.1.0]\n"
- sgf += "AB" + ''.join('[' + COORDS[j] + COORDS[i] + ']'
+ if len(black) > 0:
+ sgf += "AB" + ''.join('[' + COORDS[j] + COORDS[i] + ']'
for (i, j) in black) + "\n"
- sgf += "AW" + ''.join('[' + COORDS[j] + COORDS[i] + ']'
+ if len(white) > 0:
+ sgf += "AW" + ''.join('[' + COORDS[j] + COORDS[i] + ']'
for (i, j) in white) + "\n"
- sgf += ")"
return sgf
+ def getMove(self, board):
+ for i in range(self.size):
+ for j in range(self.size):
+ if (self.stones[self.size * i + j] == "."):
+ if (board.stones[self.size * i + j] == "W"):
+ return ("W", COORDS[i] + COORDS[j])
+ elif (board.stones[self.size * i + j] == "B"):
+ return ("B", COORDS[i] + COORDS[j])
+ return None
+
+
class Game:
- def __init__(self, size):
- self.board = (size * size) * "."
+ def __init__(self, size, board=None):
+ self.init_board = board or Board(size, (size * size) * ".")
+ self.board = self.init_board
self.moves = []
+ self.size = size
+
+ def addMove(self, board):
+ self.moves.append(self.board.getMove(board))
+ self.board = board
+
+ def asSGF(self):
+ 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:
+ if m:
+ sgf += ";" + m[0] + "[" + m[1] + "]\n"
+ sgf += ")"
+ return sgf
- def add(self, board):
- self