You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stockfish.py中兵升变时的走法日志格式咨询

Stockfish.py兵升变走法格式及PGN转换问题解决

一、Stockfish.py的升变走法格式

Stockfish Python库返回的兵升变走法是完整长格式,例如c7c8=Q,包含:

  • 起始格子(前2位:c7)
  • 目标格子(中间2位:c8)
  • 升变棋子后缀(=Q)
    不会返回c8=Q这种短格式。

二、你的代码问题分析

  1. 升变处理逻辑错误:原代码中sq2 = move[2:]会把升变后缀=Q和目标格合并(比如c7c8=Q会得到c8=Q),直接导致PGN解析失败——PGN要求升变后缀附加在目标格后,但你的逻辑未正确拆分这两部分。
  2. 变量赋值错误:获取黑方最佳走法时,best_b = best_w[random.randint(0,2)]['Move']是错误的,best_w是已提取的白方走法字符串,应该用stockfish.get_top_moves(3)返回的列表取值。

三、修正后的PGN转换函数

以下是修复了升变处理的getfgn函数:

import random

def getfgn(move, stockfish):
    # 拆分升变部分
    has_promotion = '=' in move
    if has_promotion:
        move_core, promotion_piece = move.split('=', 1)
        promotion_suffix = f'={promotion_piece}'
        start_sq = move_core[:2]
        end_sq = move_core[2:]
    else:
        start_sq = move[:2]
        end_sq = move[2:]
        promotion_suffix = ''
    
    # 判断是否为兵
    piece = stockfish.get_what_is_on_square(start_sq)
    is_pawn = piece.endswith('P')
    
    # 判断是否为吃子
    is_capture = stockfish.will_move_be_a_capture(move)
    
    # 构建PGN格式走法
    if is_pawn:
        if is_capture:
            # 兵吃子升变:列 + x + 目标格 + 升变后缀
            pgn_move = f"{start_sq[0]}x{end_sq}{promotion_suffix}"
        else:
            # 兵推进升变:目标格 + 升变后缀
            pgn_move = f"{end_sq}{promotion_suffix}"
    else:
        # 非兵棋子基础处理(可补充同子区分逻辑)
        piece_abbr = piece[1].upper()  # 提取棋子缩写:N=马,B=象,R=车,Q=后,K=王
        pgn_move = f"{piece_abbr}{end_sq}"
        if is_capture:
            pgn_move = f"{piece_abbr}x{end_sq}"
    
    return pgn_move

# 调用示例
best_w_list = stockfish.get_top_moves(3)
best_w = best_w_list[random.randint(0,2)]['Move']
fgn_w = getfgn(best_w, stockfish)

best_b_list = stockfish.get_top_moves(3)
best_b = best_b_list[random.randint(0,2)]['Move']
fgn_b = getfgn(best_b, stockfish)

四、关键修复点

  • 主动判断走法中是否包含升变符号=,拆分核心走法与升变后缀
  • 正确提取起始格、目标格,避免升变后缀混入目标格
  • 按照PGN规则生成升变走法:普通升变如c8=Q,吃子升变如bxc8=Q

内容的提问来源于stack exchange,提问作者ReliableAirRepair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:35:41