如果把这4步棋涉及的5个局面都告诉引擎,那么指令依次是:
1:position fen
rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR
w - - 0 1
2:position fen
rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR
w - - 0 1 moves h2e2
3:position fen
rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR
w - - 0 1 moves h2e2 h7e7
4:position fen
rnbakabnr/9/1c2c4/p1p1C1p1p/9/9/P1P1P1P1P/1C7/9/RNBAKABNR
b - - 0 2
5:position fen
rnbakabnr/9/1c2c4/p1p1C1p1p/9/9/P1P1P1P1P/1C7/9/RNBAKABNR
b - - 0 2 moves d9e8
其中第4行更换了FEN串,因为该局面前一个着法是吃子着法。
五、指令和反馈
按照惯例,指令用红色表示,反馈用蓝色表示。
1.ucci
引导状态的指令。这是引擎启动后,界面需要给引擎发送的第一条指令,通知引擎现在使用的协议是UCCI。
2.id {name | copyright | author | user}
引导状态的反馈。显示引擎的版本号、版权、作者和授权用户,例如:
id name
ElephantEye 1.6 Beta,说明引擎的版本号是ElephantEye 1.6 Beta;
id copyright
2004-2006 www.xqbase.com,说明引擎的版权属于www.xqbase.com所有;
id author
Morning Yellow,说明引擎的作者是Morning Yellow;
id user
ElephantEye Test Team,说明引擎授权给用户ElephantEye Test Team使用。
3.option type [min ] [max ] [var [var [...]]] [default
]
引导状态的反馈。显示引擎所支持的选项,指选项的名称(后面会介绍),选项的类型是label(标签,非选项)、button(指令)、check(是或非)、combo(多选项)、spin(整数)、string(字符串)中的一种。
通常的UCCI引擎支持以下选项:
(1)usemillisec(check),通知界面采用毫秒模式。建议引擎始终采用毫秒模式(即go指令的时间单位是“毫秒”),并总是在ucciok前输出option usemillisec
...的反馈信息。除非引擎不发送 option usemillisec
...的反馈信息,否则界面将自动使用毫秒模式,并向引擎发送setoption usemillisec true的指令。目前已知的UCCI界面程序(如象棋巫师、UCCI引擎联赛模拟器等)都采用这种做法;
(2)batch(check),批处理模式(前面介绍过),默认是关闭的;
(3)debug(check),调试模式,默认是关闭的,打开后引擎会输出更多的信息(info反馈),以帮助调试;
(4)ponder(check),是否使用后台思考的时间策略,默认是关闭的,设定该参数的目的仅仅是让引擎改变时间分配策略,而后台思考则仍然需要界面发出指令,参阅go ponder和ponderhit指令;
(5)usebook(check),是否使用开局库的着法,默认是启用的,如果关闭的话,即便当前局面在开局库中有着法,引擎也会不顾开局库而思考的;
(6)useegtb(check),是否使用残局库,默认是启用的,和usebook类似;
(7)bookfiles(string),设定开局库文件的名称,可指定多个开局库文件,用分号“;”隔开,如不让引擎使用开局库,除了可以关闭usebook选项外,还可以把bookfiles设成空值;
(8)egtbpaths(string),设定残局库路径的名称,和bookfiles类似;
(9)evalapi(string),设定局面评价API函数库文件的名称,和bookfiles类似,但只能是一个文件(例如,Windows下默认值是EVALUATE.DLL,Linux下默认值是libeval.so);
(10)hashsize(spin)