Example #1
0
def read(f):
	format = Algebra()
	board = Board()
	player = 'white'
	for move in parse_pgn(f):
		if type(move) == types.TupleType and move[0] == "done":
			print "winner", move[1]
			board = Board()
			player = 'white'
			continue
		elif type(move) == types.TupleType and move[0] == 'metadata':
			print move[1]
			continue
		parsed = format.interpret(move, board, player)
		print '...' if player == 'black' else '', move, parsed
#		legal_moves = [x for x in board.legal_moves(player)]
#		if not parsed in legal_moves:
#			raise Exception, "%s is not legal: not in %s" % (repr(parsed), repr(sorted([board.format_move(m) for m in legal_moves])))
		board.apply_move(parsed)
		if player == 'white':
			player = 'black'
		else:
			player = 'white'