我有兴趣编写一个国际象棋引擎(主要作为一个学习练习),并且会对任何人都知道的可能感兴趣或使用的资源感兴趣,任何事情都可以:真实的:论文,书籍,理论,教程,任何可能是有用的。写一个国际象棋引擎有什么好的资源?
回答
从我的档案:
- 这是一个有用的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