我希望你有一个美好的一天:)
最近在做一个象棋程序。
我现在正处于制作 AI 的阶段,我正在使用 Stockfish 进行测试。
由于我需要计算机有时间在不暂停 pygame 游戏循环的情况下进行评估,因此我正在使用线程库。
我还使用 python-chess 作为我的主要库来处理游戏状态和移动,以及访问 Stockfish。
这是我的线程代码:
def engine_play():
global player_color
global board
while board.result() == "*":
if board.turn is not player_color:
result = engine.play(board, chess.engine.Limit(time=3.0))
board.push(result.move)
print(result.move)
print(board.result())
engine_thread = threading.Thread(target=engine_play)
engine_thread.setDaemon(True)
engine_thread.start()
由于某种原因,engine_play() 中的 while 循环停止执行。
它不会一直停止,它只是随机停止。
当它在while循环之后打印board.result时,值=“*”。
当条件 (board.result() == "*") 仍然满足时,这个 while 循环如何停止?
它实际上是一个线程问题吗?
此外,pygame 游戏循环只是更新图形并实现诸如拖放功能之类的东西。
没有显示错误,我只有一个线程。