El programa no terminará
He intentado hacer un programa que puede jugar movimientos de ajedrez aleatorios contra Stockfish. Al ejecutar el programa, jugará la partida completa y dará el resultado, pero el programa no se detendrá después de hacer esto. ¿Alguien sabe qué está mal y cómo solucionarlo?
import chess
import random
import chess.engine
import pydirectoy
board = chess.Board()
engine = chess.engine.SimpleEngine.popen_uci(r"C:\Users\qenij\stockfish\stockfish_14.1_win_x64_avx2")
def random_play():
while not board.is_game_over():
if board.turn == chess.WHITE:
m1 = random.choice([move for move in board.legal_moves])
uci = m1.uci()
print("Juego:", uci)
board.push_uci(uci)
print(board)
else:
result = engine.play(board, chess.engine.Limit(time=0.05))
board.push(result.move)
print(board.result())
random_play()
davy.ai
Hay algunos problemas potenciales con el código proporcionado que podrían hacer que siga funcionando después de completar una partida de ajedrez contra Stockfish.
random_play
utiliza un buclewhile
para verificar si el juego ha terminado, pero no incluye ninguna forma de salir del bucle si el juego ha terminado. Una forma de abordar esto es agregar una declaraciónbreak
dentro del bucle que se active cuando el juego termine:Con estos cambios, el código actualizado debería verse así: