2009-01-30 40 views
75

我有興趣編寫一個國際象棋引擎(主要作爲一個學習練習),並且會對任何人都知道的可能感興趣或使用的資源感興趣,任何事情都可以:真實的:論文,書籍,理論,教程,任何可能是有用的。寫一個國際象棋引擎有什麼好的資源?

+1

http://www.frayn.net/beowulf/theory.html – SmallChess 2014-11-20 04:27:16

回答

98

從我的檔案:

+4

國際象棋程序設計維基是非常酷。 – 2009-11-11 20:41:12

+0

第二個鏈接是現在:http://archive.gamedev.net/reference/programming/features/chess1/ – Grandpa 2011-02-07 14:27:50

1

這基本上是在Artificial Intelligence (AI).

最常見的方式現場通過分析從結果使得計算機「思考」國際象棋比賽使用mini-max method其中計算機「思考」從當前狀態提前做出不同的動作。

不同動作結果的「優點」可以通過許多標準來確定,例如評分,剩餘敵人數量,獲勝狀態等。例如,如果您將玩家移動到正確位置並贏得比賽,那麼這是一個非常好的狀態。但是如果你把它移到左邊,你什麼也得不到。向右移動是合理的。這個定義「善良」的函數通常被稱爲啓發式函數。

這個過程遞歸地完成許多回合。轉數越大,你需要的時間就越多。轉數越大,軟件越聰明。只在一個回合中提前思考可能只會導致貪婪的選擇。智能國際象棋軟件具有很強的啓發式功能,並且多次思考。

ps。我沒有在這裏解釋一些迷你最大算法的細節,但這應該涵蓋基本思想。

3

香農的1949 paper(警告:PDF)關於這個問題是一個很好的起點

2

最好的國際象棋程序設計教程對於初學者是在GameDev。這很容易理解,但它非常詳細。

26

在創建我的國際象棋引擎時,我花了幾個月時間試圖收集描述創建國際象棋遊戲較難的方面的好資源。這是我認爲最有用的部分名單:

象棋編程弗朗索瓦·多米尼克Laramée

這是一個讓我到電腦國際象棋的文章,它是計算機如何下棋了很好的概述。這是非常容易閱讀,它會向你介紹所有的術語和關鍵字。

http://www.gamedev.net/page/resources/_/technical/artificial-intelligence/chess-programming-part-i-getting-started-r1014

計算機象棋維基,這確實擴大了在過去數個月。它是參考資料的極好資源。

http://chessprogramming.wikispaces.com/

路易·凱斯勒的計算機國際象棋鏈接

一旦你通過上述資源的其餘部分可以在下面的鏈接中找到。

http://www.lkessler.com/cclinks.shtml

最後但並非最不重要的我寫計算機象棋博客,帶您通過編寫從無到有C#中的國際象棋引擎的所有步驟,它包括計算機象棋連接部分和一盤棋首發套件。

http://www.chessbin.com

亞當Berent

1

我加入保羅威克斯(上圖),我也想寫一個國際象棋引擎爲自己的學習着想的,唯一的限制就是我的日常工作(同一聯賽這是在無聊的Web服務和東西上工作..),但它的價值是痛苦。

我決定使用逐層方法來構建它。 我幾乎通過多玩家部分,即(人類與人類)。

一旦我完成了這一點,我很樂意加入AI層來支持(COMPUTER vs HUMAN)玩法。這是我最擔心的部分,我在這裏發現了非常好的幫助提示,非常感謝大家。

目前我很熟悉的語言是Java,萬一有性能問題 那麼我可能將它移植到C++。