2009-01-30 35 views
75

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

+1

http://www.frayn.net/beowulf/theory.html – SmallChess 2014-11-20 04:27:16

回答

98

从我的档案:

+4

国际象棋程序设计维基是非常酷。 – 2009-11-11 20:41:12

+0

第二个链接是现在:http://archive.gamedev.net/reference/programming/features/chess1/ – Grandpa 2011-02-07 14:27:50

1

这基本上是在Artificial Intelligence (AI).

最常见的方式现场通过分析从结果使得计算机“思考”国际象棋比赛使用mini-max method其中计算机“思考”从当前状态提前做出不同的动作。

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

这个过程递归地完成许多回合。转数越大,你需要的时间就越多。转数越大,软件越聪明。只在一个回合中提前思考可能只会导致贪婪的选择。智能国际象棋软件具有很强的启发式功能,并且多次思考。

ps。我没有在这里解释一些迷你最大算法的细节,但这应该涵盖基本思想。

3

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

2

最好的国际象棋程序设计教程对于初学者是在GameDev。这很容易理解,但它非常详细。

26

在创建我的国际象棋引擎时,我花了几个月时间试图收集描述创建国际象棋游戏较难的方面的好资源。这是我认为最有用的部分名单:

象棋编程弗朗索瓦·多米尼克Laramée

这是一个让我到电脑国际象棋的文章,它是计算机如何下棋了很好的概述。这是非常容易阅读,它会向你介绍所有的术语和关键字。

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

计算机象棋维基,这确实扩大了在过去数个月。它是参考资料的极好资源。

http://chessprogramming.wikispaces.com/

路易·凯斯勒的计算机国际象棋链接

一旦你通过上述资源的其余部分可以在下面的链接中找到。

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

最后但并非最不重要的我写计算机象棋博客,带您通过编写从无到有C#中的国际象棋引擎的所有步骤,它包括计算机象棋连接部分和一盘棋首发套件。

http://www.chessbin.com

亚当Berent

1

我加入保罗威克斯(上图),我也想写一个国际象棋引擎为自己的学习着想的,唯一的限制就是我的日常工作(同一联赛这是在无聊的Web服务和东西上工作..),但它的价值是痛苦。

我决定使用逐层方法来构建它。 我几乎通过多玩家部分,即(人类与人类)。

一旦我完成了这一点,我很乐意加入AI层来支持(COMPUTER vs HUMAN)玩法。这是我最担心的部分,我在这里发现了非常好的帮助提示,非常感谢大家。

目前我很熟悉的语言是Java,万一有性能问题 那么我可能将它移植到C++。