85

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

4

4 回答 4

134

从我的档案:

于 2009-02-02T02:19:22.890 回答
33

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

François Dominic Laramée 的国际象棋编程

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

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

计算机国际象棋维基,这在过去几个月里确实得到了扩展。它是参考资料的极好资源。

https://www.chessprogramming.org/Main_Page

路易斯凯斯勒的电脑国际象棋链接

浏览完上述资源后,可以在以下链接页面中找到其余资源。

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

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

http://www.chessbin.com

亚当·贝伦特

于 2009-04-14T19:42:22.673 回答
1

这基本上是在人工智能(AI)领域。

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

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

这个过程在很多回合中递归地完成。转数越多,您需要的时间就越多。转数越多,你的软件就越智能。只考虑一个回合可能只会导致贪婪的选择。智能象棋软件具有很强的启发式功能,多轮思维超前。

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

于 2009-01-30T07:16:29.123 回答
1

我加入了 Paul Wicks 的同一个联盟(上图),我也想为自己的学习编写一个国际象棋引擎,唯一的限制是我的日常工作(即从事无聊的 Web 服务和其他东西..)但它的价值疼痛。

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

完成此操作后,我很想将 AI 层合并到支持(计算机 vs 人类)播放方案。这是我最担心的部分,我在此线程中找到了非常好的帮助提示,非常感谢你们所有人。

目前我精通的语言是Java,如果性能受到影响,我可能会将它移植到C++。

于 2010-05-08T19:18:59.973 回答