- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我编写了一个具有非常漂亮的 GUI 的国际象棋程序 (PyQt5)。当我输入一个 Action 时,它会对其进行分析并更新棋盘的 SVG 表示形式 - 这要归功于出色的 python-chess 模块。现在一切正常。但是,我想做的是让引擎在后台工作并无限分析棋盘,让我输入新的 Action 。这是一个简单的代码示例:
import asyncio
import chess
import chess.engine
board = chess.Board()
async def analyse():
transport, engine = await chess.engine.popen_uci("./stockfish-10-64")
board = chess.Board()
info = await engine.analyse(board, chess.engine.Limit(time=2))
print(info["score"])
await engine.quit()
return(info)
async def get_input():
a = input("enter move in SAN format")
board.push_san(a)
print(board)
xx = await analyse()
print(xx)
while(True):
asyncio.run(get_input())
在此示例中,在分析完成之前我无法输入新的着法。 (注:原设计中的 Action 都是在PyQt5的“lineedit”小部件中输入的,不用担心异步终端输入的困难)
谢谢
最佳答案
您可以使用engine.play的“ponder”属性,它允许在后台进行分析。现在,您可以将 2 秒的搜索分成多个 block ,并能够在中间输入移动以获得相似的搜索质量。
关于python - 在 python-chess 后台运行 stockfish 进行无限分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59019206/
我有一个 FEN位置,我想分析哪个位置更强。 例如,我有这个职位 rnbq1bnr/pp2k2N/8/2p1p2Q/4N3/8/PPPP1PPP/R1B1KB1R b KQ - 0 1 如何使用 St
我已经用PYTHON写了一个国际象棋软件,它通过这个库使用了斯托克菲什:https://pypi.org/project/stockfish/。该软件运行良好,运行良好。太好了,实际上是…。我的想法是
在我项目的某个地方,我使用 fork 和 pipe 来执行另一个进程并通过管道传输它的 I/O 以与其通信(我用 C++ 编写它)。当我在 Ubuntu 14.04 中编译它时没有问题,它会工作得很好
我正在尝试研究如何将 stockfish(或任何 UCI 兼容引擎)集成到我的 Android 应用程序中。 我从这里下载了 stockfish Android zip: Download Stock
早上好。我正在尝试将 Stockfish 实现到 Unity 国际象棋游戏中,有人告诉我最好的方法是使用 Spawn.Process有谁知道我可以查看并作为引用的现有代码? 不同的游戏状态是与 AI
早上好。我正在尝试将 Stockfish 实现到 Unity 国际象棋游戏中,有人告诉我最好的方法是使用 Spawn.Process有谁知道我可以查看并作为引用的现有代码? 不同的游戏状态是与 AI
我想在我的网站上为我的学生制作一个国际象棋拼图。我使用 stockfish.js 来玩这个引擎。如何更改棋盘上的起始位置?我尝试更改所有 FEN 字符串但没有用。在哪里寻找功能或其他东西?有谁能帮帮我
我编写了一个具有非常漂亮的 GUI 的国际象棋程序 (PyQt5)。当我输入一个 Action 时,它会对其进行分析并更新棋盘的 SVG 表示形式 - 这要归功于出色的 python-chess 模块
我正在尝试编写一个通过命令行与 Stockfish 国际象棋引擎交互的程序。我研究过使用管道和重定向 cin/cout,但问题是 Stockfish 运行它自己的 shell 而不是只给出单行输出,例
自 Stockfish是评价最高的国际象棋引擎,众所周知它非常高效,我决定打开它的源代码并尝试了解它是如何工作的。 我遇到了这段代码,只需将位板移动到某个方向(北、南、东...) 取自 STOCKFI
我正在尝试将 Stockfish Chess Engine 与一个用 Swift 编写的应用集成。 Stockfish iOS 源代码对所有人开放,但它是用 Objective-C 编写的,引擎是用
目标是一个 Angular 应用程序,它可以在浏览器中运行并与国际象棋引擎对战。我想将 Stockfish.js 作为 Web Worker 运行。当使用指向 stockfish.js 文件的 uri
我是一名优秀的程序员,十分优秀!