1
我想在python中寫一個國際象棋引擎,我可以找到給定位置的最佳舉動,但我努力從該位置收集主要變化,以下是我所到目前爲止已經試過:收集和檢索從alphabeta框架的主要變化
def alphabeta(board, alpha, beta, depth, pvtable):
if depth == 0:
return evaluate.eval(board)
for move in board.legal_moves:
board.push(move)
score = -alphabeta(board, -beta, -alpha, depth - 1, pvtable)
board.pop()
if score >= beta:
return beta
if score > alpha:
alpha = score
pvtable[depth-1] = str(move)
return alpha
我使用pvtable[depth - 1] = str(move)
追加移動,但最後我發現,pvtable
包含隨機非連貫的動作,像['g1h3', 'g8h6', 'h3g5', 'd8g5']
的起始位置的事情。
我知道類似的問題已經被問到,但我仍然沒有弄清楚我能如何解決這個問題。
謝謝,我已經閱讀了這個頁面,這很有趣,但是我不能將它翻譯成Python代碼,因爲我的C背景是0,你能給我一個例子嗎? – Hedwig
我編輯了我的答案,讓我知道這是否有效。 – ZzetT
非常感謝你,我剛剛編輯過'if score> alpha:alpha = score pline [:] = [str(move)] + line',它看起來不錯,但仍不確定是否是正確的方法 – Hedwig