J'essaie d'écrire un moteur d'échecs en python, je peux trouver le meilleur coup donné une position, mais j'ai du mal à recueillir la variation principale de cette position, ce qui suit est ce que je l'ai essayé jusqu'à présent:Collecte et récupération de la variation principale à partir d'un cadre 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
J'utilise pvtable[depth - 1] = str(move)
pour ajouter mouvements mais à la fin je trouve que pvtable
contient mouvements aléatoires non uniformes, des choses comme ['g1h3', 'g8h6', 'h3g5', 'd8g5']
pour la position de départ.
Je sais que des questions similaires à ce sujet ont été posées mais je n'ai toujours pas compris comment je peux résoudre ce problème.
Merci, J'ai déjà lu cette page, c'est intéressant mais je ne peux pas traduire cela en code python puisque mon expérience sur C est 0, pouvez-vous me donner un exemple? – Hedwig
J'ai édité ma réponse, laissez-moi savoir si cela fonctionne. – ZzetT
Merci beaucoup, je viens d'éditer cela à 'si score> alpha: alpha = score pline [:] = [str (move)] + line', ça semble correct mais toujours pas sûr si c'est la bonne approche – Hedwig