在下面的程序中,根据棋子的棋子排列棋子

2024-04-26 11:58:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码,它使用提供的引擎分析给定时间内的每个可能移动:

<pre><code>    
import chess
import chess.uci

fen = input('Enter FEN: ')
board = chess.Board(fen)
handler = chess.uci.InfoHandler()

engine = chess.uci.popen_engine('engine')

engine.info_handlers.append(handler)
engine.position(board)
if board.turn: print ('White to move')
else: print ('black to move')

for el in board.legal_moves:
    engine.go(searchmoves=[el],movetime=120000)
    print (str(board.san(el)), 'eval = ', handler.info["score"])
</code></pre>

示例输出如下:

<pre><code>
python Chess.py
Enter FEN: 6k1/6pp/1p2p3/p1pN4/4P3/1qP2RPP/6BK/8 w - - 0 1
White to move
Ne7+ eval =  {1: Score(cp=None, mate=2)}
Nc7 eval =  {1: Score(cp=-220, mate=None)}
Nf6+ eval =  {1: Score(cp=-871, mate=None)}
Nxb6 eval =  {1: Score(cp=-753, mate=None)}
Nf4 eval =  {1: Score(cp=-163, mate=None)}
Nb4 eval =  {1: Score(cp=-829, mate=None)}
Ne3 eval =  {1: Score(cp=-424, mate=None)}
Rf8+ eval =  {1: Score(cp=-1198, mate=None)}
Rf7 eval =  {1: Score(cp=-1174, mate=None)}
Rf6 eval =  {1: Score(cp=-1097, mate=None)}
Rf5 eval =  {1: Score(cp=-1042, mate=None)}
Rf4 eval =  {1: Score(cp=-604, mate=None)}
Re3 eval =  {1: Score(cp=-500, mate=None)}
Rd3 eval =  {1: Score(cp=-527, mate=None)}
Rf2 eval =  {1: Score(cp=-613, mate=None)}
Rf1 eval =  {1: Score(cp=-672, mate=None)}
Kh1 eval =  {1: Score(cp=-703, mate=None)}
Kg1 eval =  {1: Score(cp=-679, mate=None)}
Bh1 eval =  {1: Score(cp=-684, mate=None)}
Bf1 eval =  {1: Score(cp=-723, mate=None)}
e5 eval =  {1: Score(cp=-837, mate=None)}
h4 eval =  {1: Score(cp=-537, mate=None)}
g4 eval =  {1: Score(cp=-662, mate=None)}
c4 eval =  {1: Score(cp=800, mate=None)}
</code></pre>

我想输出排序根据配合和cp得分。我该怎么做?你知道吗


Tags: toboardnonemoveevalcodeprecp