我有兴趣编写一个国际象棋引擎(主要作为学习练习),并且会对人们知道的任何可能感兴趣或使用的资源感兴趣,任何真正的东西:论文,书籍,理论,教程,任何可能的东西有用。
4 回答
从我的档案:
- 这是一个有用的国际象棋编程维基。
- 这是国际象棋编程的简单介绍。
- 这是一本关于国际象棋算法的(免费)书籍。
- 这包含几个简单的循序渐进的YouTube 教程系列,从初级到高级。
- 这是一个更高级的介绍。
- 这是Adam Berent 有趣的计算机国际象棋博客。
- 这是对 MTD(f) 的一个很好的分析,一个有趣的搜索算法。
- 这是验证移动生成的一个很好的指南。
- 这是关于 Rebel国际象棋引擎的大量有用信息。
- 这是关于黑暗思想国际象棋引擎的很多好信息。
- 季风国际象棋引擎的良好信息和源代码。
- 这些是关于国际象棋编程的更多注释。
- 对旋转位板的合理介绍。
- 魔术位板的合理介绍。
- 合理介绍后期移动减少。
- 看看null-move pruning。
- 用于测试目的的一组位置集。
- 这是2 名编写国际象棋程序的学生的旧报告。
- 一堆杂七杂八的国际象棋编程链接。
- 最后,这是维基百科对计算机国际象棋的看法。
在创建我的国际象棋引擎时,我花了几个月的时间试图收集好的资源,这些资源描述了创建国际象棋游戏的一些困难方面。以下是我认为最有用的列表:
François Dominic Laramée 的国际象棋编程
这是让我进入计算机国际象棋的文章,它很好地概述了计算机如何下棋。它非常易于阅读,它将向您介绍所有术语和关键字。
计算机国际象棋维基,这在过去几个月里确实得到了扩展。它是参考资料的极好资源。
https://www.chessprogramming.org/Main_Page
路易斯凯斯勒的电脑国际象棋链接
浏览完上述资源后,可以在以下链接页面中找到其余资源。
http://www.lkessler.com/cclinks.shtml
最后但并非最不重要的一点是,我写了一个计算机国际象棋博客,它将带您完成从头开始用 C# 编写国际象棋引擎的所有步骤,它包括一个计算机国际象棋链接部分和一个国际象棋游戏入门工具包。
亚当·贝伦特
这基本上是在人工智能(AI)领域。
让计算机在国际象棋游戏中“思考”的最常见方法是使用最小最大方法,在这种方法中,计算机通过分析从当前状态提前做出不同动作的结果来“思考”。
不同动作结果的“好坏”可以通过许多标准来确定,例如得分、剩余敌人数量、获胜状态等。例如,如果您将玩家向右移动并且您赢得了游戏,那么这是一个非常好的状态。但是如果你把它移到左边,你什么也得不到。向右移动是合理的。这个定义“善良”的函数通常称为启发式函数。
这个过程在很多回合中递归地完成。转数越多,您需要的时间就越多。转数越多,你的软件就越智能。只考虑一个回合可能只会导致贪婪的选择。智能象棋软件具有很强的启发式功能,多轮思维超前。
附言。mini-max 算法的一些细节我没有在这里解释,但这应该涵盖了基本思想。
我加入了 Paul Wicks 的同一个联盟(上图),我也想为自己的学习编写一个国际象棋引擎,唯一的限制是我的日常工作(即从事无聊的 Web 服务和其他东西..)但它的价值疼痛。
我决定使用逐层的方法来构建它。我几乎完成了多人游戏部分,即(人类对人类)。
完成此操作后,我很想将 AI 层合并到支持(计算机 vs 人类)播放方案。这是我最担心的部分,我在此线程中找到了非常好的帮助提示,非常感谢你们所有人。
目前我精通的语言是Java,如果性能受到影响,我可能会将它移植到C++。