使用通用象棋界面

我打算制作一个与UCI国际象棋引擎接口的程序。 我一直在对它进行一些研究,但在深入研究之前,我希望获得更多信息。 我想知道你们中的任何一个人是否可以在UCI引擎和前端程序之间提供一些示例“交流”。 我并不真正关心实际的接口代码(如发送/接收命令),应该很简单。 我只是想获得一些小游戏和一些选项的很好的例子。 目前我正在使用鳕鱼引擎,但我希望能够使用多个引擎。

无论如何,我正在寻找一些关于如何通过UCI玩游戏的例子。


让我们假设GUI正在促进人类用户和引擎之间的匹配。 假设用户从e2e4开始。 然后这些命令看起来像这样:

// GUI: tell the engine to use the UCI protocol
uci

// ENGINE: identify  
id name Chess Engine
id author John Smith

// ENGINE: send the options that can be changed
//         in this case the hash size can have a value from 1 to 128 MB
option name Hash type spin default 1 min 1 max 128

// ENGINE: sent all parameters and is ready
uciok

// GUI: set hash to 32 MB
setoption name Hash value 32

// GUI: waiting for the engine to finish initializing
isready

// ENGINE: finished setting up the internal values and is ready to start
readyok

// GUI: let the engine know if starting a new game
ucinewgame

// GUI: tell the engine the position to search
position startpos moves e2e4

// GUI: tell the engine to start searching
//      in this case give it the timing information in milliseconds
go wtime 122000 btime 120000 winc 2000 binc 2000

// ENGINE: send search information continuously during search
//         this includes depth, search value, time, nodes, speed, and pv line
info depth 1 score cp -1 time 10 nodes 26 nps 633 pv e7e6
info depth 2 score cp -38 time 22 nodes 132 nps 2659 pv e7e6 e2e4
info depth 3 score cp -6 time 31 nodes 533 nps 10690 pv d7d5 e2e3 e7e6
info depth 4 score cp -30 time 55 nodes 1292 nps 25606 pv d7d5 e2e3 e7e6 g1f3

// ENGINE: return the best move found
bestmove d7d5

我简化了交互的许多方面。 一个全功能的GUI将不得不支持你可以在UCI规范中找到的其他许多命令(另一个来源)。 你也可以看看现有的GUI如何工作。 例如,如果您使用Arena,则可以按F4查看命令交互的日志,

链接地址: http://www.djcxy.com/p/84647.html

上一篇: Using the Universal Chess Interface

下一篇: Chess engine speed in python