Я использую Python 3.6 с Jupyter и Anaconda.Сценарий «ход за ходом» в шахматной игре из файла PGN и возвращает счет.Это прекрасно работает.
Проблема возникает, когда возвращается счет "-M8", что означает, что черные могут дать мат в 8 ходов.
Но следующая строка:
(handler.info["score"][1].cp)
возвращает «none» вместо «-M8», как и ожидалось.
Сценарий:
import chess
import chess.uci
import chess.pgn
import sys
with open('E:\PGN Files\Fischer.pgn') as f:
handler = chess.uci.InfoHandler()
engine = chess.uci.popen_engine('C:\Program Files (x86)\Arena\Engines\stockfish_9_x64.exe') #give correct address of your engine here
engine.info_handlers.append(handler)
for number in range(10):
game = chess.pgn.read_game(f)
m=0
while not game.is_end():
m=m+1
node = game.variations[0]
board = game.board()
game = node
engine.position(board)
#Set your evaluation time, in ms:
evaltime = 5000 #so 5 seconds
evaluation = engine.go(movetime=evaltime)
score =(handler.info["score"][1].cp)
print(str(score))