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'