-
-
Save vhf/e16f68844eae63547c306d8d456a1339 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import chess | |
import chess.pgn | |
import chess.engine | |
from chess import BLACK, WHITE | |
engine = chess.engine.SimpleEngine.popen_uci("./stockfish_20090216_x64_avx2") | |
import bz2 | |
path = "lichess_db_standard_rated_2017-04.pgn.bz2" | |
f = bz2.open(path, "rt", encoding="ascii") | |
print("Opened", path) | |
#for i in range(1000): | |
# print(f.readline()) | |
#exit(1) | |
white = 0 | |
black = 0 | |
while True: | |
game = chess.pgn.read_game(f) | |
term = game.headers["Termination"] | |
#if term in ["Normal", "Time forfeit", "Abandoned", "Rules infraction", "Unterminated"]: | |
if term != "Normal": | |
#if term not in ["Time forfeit"]: | |
#print(term) | |
continue | |
result = game.headers["Result"] | |
if result not in ["1-0", "0-1"]: | |
continue | |
lastmove = list(game.mainline())[-1] | |
# Avoid simulating the game if it is a checkmate | |
if lastmove.san().endswith("#"): | |
continue | |
board = game.board() | |
for move in game.mainline_moves(): | |
board.push(move) | |
info = engine.analyse(board, chess.engine.Limit(time=0.1)) | |
#print(info) | |
score = info["score"] | |
if score.is_mate(): | |
#print(lastmove.san()) | |
continue | |
newmin = False | |
if result[0] == "1": | |
# black resigned | |
if score.black().cp > black: | |
black = score.black().cp | |
newmin = True | |
else: | |
# white resigned | |
if score.white().cp > white: | |
white = score.white().cp | |
newmin = True | |
if newmin: | |
print(game.headers) | |
print(score, result, white, black) | |
print(board) | |
print(board.fen()) | |
""" | |
board = chess.Board() | |
while not board.is_game_over(): | |
result = engine.play(board, chess.engine.Limit(time=0.1)) | |
board.push(result.move) | |
print(board) | |
engine.quit() | |
""" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment