西洋棋引擎文章(一)uci協議

2021-04-15 07:19:37 字數 2257 閱讀 6207

棋弈程式(應該稱之為引擎)是高度「可移植的」隨著越來越多的棋弈程式遵從如winboard和uci協議等各種協議,它們不再被限定於乙個軟體或介面了。使用者現在可以把乙個棋弈程式(引擎)從乙個他們所購買的軟體/介面中「輸出」到另乙個[軟體/介面]。

棋弈引擎所走的棋

首先讓我們來定義幾條術語。當我們談論起你所購買的一套常規軟體時,比方說

ches**aster ,你可能以為整個軟體包就是完整的乙個整體。實際上,我們可以把這套軟體分開成彼此很不相同的兩個組成部分來看待。第一部分是我所說的使用者介面或者圖形使用者介面

(gui),而另一部分就是棋弈引擎

(chess engine)。【譯註:往往分別簡稱介面和引擎】

靈與肉

通過這樣把西洋棋軟體分開成兩個組成部分,現在你可知,乙個棋弈引擎有可能在不止乙個介面下都能夠良好地執行。思考一下這種情況:你可以把比如crafty(著名的免費棋弈引擎)「輸入」到winboard,fritz,chess assistant等或者其它任何介面中去,令crafty執行,這個事實暗示了肯定存在某些方法讓crafty與軟體之間建立聯絡。這也暗示了有兩個程 序在工作著,「大腦」或者說是引擎部分命令該走哪步棋,同時使用者介面(也稱作gui,即圖形使用者介面)處理棋步顯示的工作以及與使用者建立互動交流。所有工作是同時地、無間隙地進行著的,你看上去就象只有乙個程式在執行。不過如果你觀察任務管理器裡的程式運**況,你就可以清楚看見有兩個程式在工 作著。作個粗略比喻,可認為介面就是「肉體」;而棋弈引擎就是「靈魂」,是它在作決定。上述例子中,crafty充當靈魂,它在任何乙個能忠實地反映由crafty所決定全部棋步的「肉體」/介面中都能工作得同樣的好。顯然,每當提及乙個西洋棋軟體包的時候,我們必須小心指明我們是在說它的介面還是引擎,特別是當這兩者頂著同乙個名字時【譯註:比如說起fritz,必要時必須分清是指fritz介面還是fritz引擎,還是指整套fritz軟體。後面還有進一步說明】。不是所有的棋弈引擎都能執行在全部使用者介面中的。對於能良好執行在某使用者介面(fritz,chess assistant, winboard等)的某棋弈引擎,它們兩者必須通過共享一種通用的通訊協議或「語言」來進行交流。

語言 」

到目前為止最通行的協議或者說所使用的語言,是tim mann所提出的winboard

通訊協議

【譯註:tim mann同時也是winboard這個工具的主要作者】。現在至少有120種免費的西洋棋棋弈引擎支援這個協議。另乙個是shredder的作者stefan meyer-kahlen和sos的作者rudolf huber所提出的通用西洋棋介面協議

(uci),到寫這篇文章的時候,它有大約20種引擎支援。

西洋棋通用介面(uci)

正得到普及的另一開放性協議是西洋棋通用介面協議(uci)。第乙個支援uci協議的介面是商業性的shredder 5,它的作者也是uci的提出者。最近,其它介面已開始支援它了,包括chess assistant 6、chess partner 和

fritz 7

。【譯 注:因此自從fritz 7之後,支援uci的引擎都能夠在fritz介面下使用--注意又再次提出這兩個(甚至該說是三個)概念的區分,一般說的fritz是指這整套軟體;fritz有它獨特的介面和顯示、功能選單和操作,這就是fritz介面;而負責棋步計算的核心,即引擎,在商業上也叫fritz引擎,但在技術上,它有 別的名字,如quest。使用過fritz的人都知道,除了"fritz"這個引擎外,它還帶有別的其它引擎,而且可以新增。這樣就很容易理解什麼叫引擎、什麼叫介面、又什麼叫整個(套)會下棋的軟體。】

開放與非開放協議winboard

和uci都是開放性協議的例子。意思是協議自由公開,任何程式設計師都可以(如果願意)設計使他們的程式適應其標準。這與非公開協議相 反,後者的標準不公開,既包括私有的不打算讓別的引擎理解的介面;另一方面也指秘密/版權協議,它只被屬於同一家公司的引擎、或付了許可費用而有權使用該 協議的作者所寫的引擎理解。chessbase協議可能就是最出名的乙個。【譯 注:作為西洋棋資料庫的那套chessbase工具,知道的人應該比較多;但說起"chessbase",要注意可能指:1)chessbase協議, 正是本段所述;2)chessbase所出版的那些軟體的統一介面或典型介面,以fritz的最典型;3)名字就叫chessbase的那套西洋棋資料庫工具;4)chessbase這間公司,或者它的**;等等】

出處: aaron的西洋棋引擎faq主頁譯者: michael

python繪製西洋棋規則口訣 西洋棋口訣

1.用車鎖門 直線或橫線 2.王與王形成馬步 用自己的王逼迫對方王到角落去 3.不是馬步走馬步 想辦法按正確的走法用已方王和對方王走成馬字步的局面 4.捉車就遠離 有時聰明的對方王會來捉你的車,這時就用車離它遠點,記住 離,豎線鎖門就豎線遠離 5.對王就將軍 如果對方的王和已方王走成了對王時,就是將...

1345 西洋棋

西洋棋的棋盤是黑白相間的8 8的方格,棋子放在格仔中間。王 後 車 象的走子規則如下 王 橫 直 斜都可以走,但每步限走一格。後 橫 直 斜都可以走,每步格數不受限制。車 橫 豎均可以走,不能斜走,格數不限。象 只能斜走,格數不限。你的任務是寫乙個程式,給定起始位置和目標位置,計算王 後 車 象從起...

西洋棋皇后問題

1 八皇后問題 2 求解思路 3 實現 include include object.h include linklist.h using namespace std using namespace mylib template class queuesolution public object s...