编写国际象棋引擎有哪些好资源?

时间:2009-01-30 06:56:47

标签: resources chess

我有兴趣编写一个国际象棋引擎(主要是作为一种学习练习),并且会对人们所知道的任何可能感兴趣或使用的资源感兴趣,任何真正的东西:论文,书籍,理论,教程,任何东西这可能很有用。

8 个答案:

答案 0 :(得分:110)

从我的档案中:

答案 1 :(得分:27)

在创建我的国际象棋引擎时,我花了几个月时间试图收集描述创建国际象棋游戏的一些难点的好资源。这是我发现最有用的列表:

FrançoisDominicLaramée的国际象棋程序设计

这是让我进入计算机国际象棋的文章,它是计算机如何下棋的绝佳概述。它非常容易阅读,它将向您介绍所有术语和关键词。

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

计算机象棋维基,这在过去几个月里确实有所扩展。它是参考资料的绝佳资源。

https://www.chessprogramming.org/Main_Page

Louis Kessler的电脑国际象棋链接

完成上述资源后,可以在以下链接页面找到其余部分。

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

最后但并非最不重要的是,我写了一个计算机国际象棋博客,它带您完成从头开始在C#中编写国际象棋引擎的所有步骤,它包括一个计算机国际象棋链接部分和一个国际象棋游戏入门套件

http://www.chessbin.com

Adam Berent

答案 2 :(得分:9)

国际象棋中使用的许多算法概述 - http://www.frayn.net/beowulf/theory.html - 应该是理解问题度量的良好起点,以及简化计算工作的几种方法。

- 亚当

答案 3 :(得分:4)

您可以随时查看GNU Chess代码。

答案 4 :(得分:3)

克劳德·香农的1949 paper(警告:PDF)关于这个问题是一个很好的起点

答案 5 :(得分:2)

最适合初学者的国际象棋编程教程是GameDev。它非常容易理解,但它非常详细。

答案 6 :(得分:1)

这基本上属于Artificial Intelligence (AI).

的范围

在国际象棋游戏中让计算机“思考”的最常用方法是使用计算机“思考”的mini-max method,通过分析从当前状态提前做出不同动作的结果。

不同动作的结果的“好”可以根据许多标准来确定,例如得分,剩下的敌人数量,获胜状态等。例如,如果你将玩家向右移动并赢得游戏,那就是一个非常好的状态。但如果你把它移到左边,你什么也得不到。向右移动是合理的。定义“良好”的这个函数通常称为启发式函数。

此过程以递归方式完成多次转弯。转弯越多,您需要的时间就越多。转弯次数越多,您的软件就越智能。仅在一个回合中提前思考可能只会导致贪婪的选择。智能象棋软件具有很强的启发功能,可以多次思考。

PS。我在这里没有解释mini-max算法的一些细节,但这应该涵盖基本思想。

答案 7 :(得分:1)

我加入了Paul Wicks的同一联盟(上图),我也想为自己的学习写一个国际象棋引擎,唯一的约束是我的日常工作(这是为了解决无聊的网络服务和东西..)但它值得痛苦。

我决定使用逐层方法构建它。 我几乎完成了多人游戏部分,即(人与人)。

一旦我完成了这项工作,我很乐意将AI层纳入支持(COMPUTER vs HUMAN)的游戏方案。这是我最担心的部分,我在这里找到了非常好的帮助提示这个帖子,非常感谢大家。

目前,我精通的语言是Java,以防性能受到影响 然后我可能会把它移植到C ++。