def get_games_from_all_files(self): files = find_pgn_files(self.config.resource.play_data_dir) print(files) games = [] for filename in files: games.extend(get_games_from_file(filename)) print("done reading") return games
def get_games_from_all_files(self): """ Loads game data from pgn files :return list(chess.pgn.Game): the games """ files = find_pgn_files(self.config.resource.play_data_dir) print(files) games = [] for filename in files: games.extend(get_games_from_file(filename)) print("done reading") return games
def read_game(self, idx): self.env.reset() self.black = ChessPlayer(self.config, self.model) self.white = ChessPlayer(self.config, self.model) files = find_pgn_files(self.config.resource.play_data_dir) if len(files) > 0: random.shuffle(files) filename = files[0] pgn = open(filename, errors='ignore') size = os.path.getsize(filename) pos = random.randint(0, size) pgn.seek(pos) line = pgn.readline() offset = 0 # Parse game headers. while line: if line.isspace() or line.startswith("%"): line = pgn.readline() continue # Read header tags. tag_match = TAG_REGEX.match(line) if tag_match: offset = pgn.tell() break line = pgn.readline() pgn.seek(offset) game = chess.pgn.read_game(pgn) node = game result = game.headers["Result"] actions = [] while not node.is_end(): next_node = node.variation(0) actions.append(node.board().uci(next_node.move)) node = next_node pgn.close() k = 0 observation = self.env.observation while not self.env.done and k < len(actions): if self.env.board.turn == chess.BLACK: action = self.black.sl_action(observation, actions[k]) else: action = self.white.sl_action(observation, actions[k]) board, info = self.env.step(action) observation = board.fen() k += 1 self.env.done = True if not self.env.board.is_game_over() and result != '1/2-1/2': self.env.resigned = True if result == '1-0': self.env.winner = Winner.white elif result == '0-1': self.env.winner = Winner.black else: self.env.winner = Winner.draw self.finish_game() self.save_play_data(write=idx % self.config.play_data.nb_game_in_file == 0) self.remove_play_data() return self.env
def get_games_from_all_files(self): files = find_pgn_files(self.config.resource.play_data_dir) games = [] for filename in files: games.extend(self.get_games_from_file(filename)) return games
def read_all_files(self): files = find_pgn_files(self.config.resource.play_data_dir) print(files) from itertools import chain return chain.from_iterable( self.read_file(filename) for filename in files)