我有興趣編寫一個國際象棋引擎(主要作爲一個學習練習),並且會對任何人都知道的可能感興趣或使用的資源感興趣,任何事情都可以:真實的:論文,書籍,理論,教程,任何可能是有用的。寫一個國際象棋引擎有什麼好的資源?
回答
從我的檔案:
- 這是一個有用的chess programming wiki。
- 這是一個simple introduction下棋程序。
- 這包含幾個簡單的步驟YouTube tutorial series'從初學者到高級水平。
- 這是more advanced introduction。
- 這是Adam Berent's interesting computer chess blog。
- 這是一個good analysis of MTD(f),一個有趣的搜索算法。
- 這是一個很好的指導validation of move generation。
- 這是很多good information on the Rebel象棋引擎。
- 這是很多good information on the Dark Thought象棋引擎。
- 好的信息和Monsoon chess engine的源代碼。
- 這些是more notes on chess programming。
- 合理的introduction to rotated bitboards。
- 合理introduction to magic bitboards。
- 合理的introduction to late move reductions。
- 看看null-move pruning。
- A collection of position sets用於測試目的。
- 這是一份來自2 students who wrote a chess program的舊報告。
- 一堆miscellaneous chess programming links。
- 最後,這裏是Wikipedia's take on computer chess。
國際象棋程序設計維基是非常酷。 – 2009-11-11 20:41:12
第二個鏈接是現在:http://archive.gamedev.net/reference/programming/features/chess1/ – Grandpa 2011-02-07 14:27:50
在國際象棋中有用的許多算法的概述 - http://www.frayn.net/beowulf/theory.html - 應該是理解問題度量的好起點,以及幾種簡化計算工作的方法。
- 亞當
這基本上是在Artificial Intelligence (AI).
最常見的方式現場通過分析從結果使得計算機「思考」國際象棋比賽使用mini-max method其中計算機「思考」從當前狀態提前做出不同的動作。
不同動作結果的「優點」可以通過許多標準來確定,例如評分,剩餘敵人數量,獲勝狀態等。例如,如果您將玩家移動到正確位置並贏得比賽,那麼這是一個非常好的狀態。但是如果你把它移到左邊,你什麼也得不到。向右移動是合理的。這個定義「善良」的函數通常被稱爲啓發式函數。
這個過程遞歸地完成許多回合。轉數越大,你需要的時間就越多。轉數越大,軟件越聰明。只在一個回合中提前思考可能只會導致貪婪的選擇。智能國際象棋軟件具有很強的啓發式功能,並且多次思考。
ps。我沒有在這裏解釋一些迷你最大算法的細節,但這應該涵蓋基本思想。
您可以隨時查看GNU Chess的代碼。
香農的1949 paper(警告:PDF)關於這個問題是一個很好的起點
最好的國際象棋程序設計教程對於初學者是在GameDev。這很容易理解,但它非常詳細。
在創建我的國際象棋引擎時,我花了幾個月時間試圖收集描述創建國際象棋遊戲較難的方面的好資源。這是我認爲最有用的部分名單:
象棋編程弗朗索瓦·多米尼克Laramée
這是一個讓我到電腦國際象棋的文章,它是計算機如何下棋了很好的概述。這是非常容易閱讀,它會向你介紹所有的術語和關鍵字。
計算機象棋維基,這確實擴大了在過去數個月。它是參考資料的極好資源。
http://chessprogramming.wikispaces.com/
路易·凱斯勒的計算機國際象棋鏈接
一旦你通過上述資源的其餘部分可以在下面的鏈接中找到。
http://www.lkessler.com/cclinks.shtml
最後但並非最不重要的我寫計算機象棋博客,帶您通過編寫從無到有C#中的國際象棋引擎的所有步驟,它包括計算機象棋連接部分和一盤棋首發套件。
亞當Berent
我加入保羅威克斯(上圖),我也想寫一個國際象棋引擎爲自己的學習着想的,唯一的限制就是我的日常工作(同一聯賽這是在無聊的Web服務和東西上工作..),但它的價值是痛苦。
我決定使用逐層方法來構建它。 我幾乎通過多玩家部分,即(人類與人類)。
一旦我完成了這一點,我很樂意加入AI層來支持(COMPUTER vs HUMAN)玩法。這是我最擔心的部分,我在這裏發現了非常好的幫助提示,非常感謝大家。
目前我很熟悉的語言是Java,萬一有性能問題 那麼我可能將它移植到C++。
- 1. 國際象棋棋盤代表 - 引擎
- 2. C中的國際象棋引擎
- 3. 使用Asp.net的國際象棋引擎
- 4. 使用FPGA的國際象棋引擎
- 5. Minimax與國際象棋引擎moveselection
- 6. 寫競技場gui的國際象棋引擎
- 7. 爲什麼Faile比簡單國際象棋程序(TSCP)快得多? (國際象棋引擎優化)
- 8. 任何人都知道一個好的.Net國際象棋引擎
- 9. 國際象棋:獲得所有合法國際象棋棋子
- 10. iphone有很好的開源國際象棋遊戲嗎?
- 11. 面向對象設計的國際象棋引擎
- 12. 國際象棋引擎的深度是它的優勢嗎?
- 13. c或java中的國際象棋引擎,性能差異?
- 14. 國際象棋引擎中的滑塊生成
- 15. 如何整合Valil象棋引擎Unity3d國際象棋遊戲[C#]?
- 16. 「跟隨國際象棋」直播國際象棋遊戲如何?
- 17. 編程一個國際象棋AI
- 18. 用C++ GUI程序連接國際象棋引擎
- 19. 與XBoard(國際象棋引擎)通信(C++/C)
- 20. 國際資源
- 21. 國際象棋棋盤界面。無法移除孩子。有什麼建議麼?
- 22. 沒有僞類的國際象棋表
- 23. 爪哇國際象棋
- 24. 國際象棋negamax功能
- 25. Java國際象棋桌
- 26. 國際象棋棋盤人口
- 27. 0x88國際象棋棋盤代表
- 28. 國際象棋棋局職位
- 29. Java主教國際象棋棋盤
- 30. 在Android中創建一個國際象棋棋盤
http://www.frayn.net/beowulf/theory.html – SmallChess 2014-11-20 04:27:16