写一个象棋引擎有什么好的资源?
我有兴趣编写一个国际象棋引擎(主要是作为一个学习练习),并会对任何人都知道的可能感兴趣或使用的资源感兴趣,任何事情都是真的:论文,书籍,理论,教程,任何可能有用。
从我的档案中:
- 这是一个有用的国际象棋编程维基 。
- 这是一个简单的国际象棋程序devise介绍 。
- 这包含了几个简单的一步一步的YouTube教程系列 ,从初级到高级。
- 这是一个更高级的介绍 。
- 这是Adam Berent有趣的电脑国际象棋博客 。
- 这是对MTD(f)的一个很好的分析 ,一个有趣的searchalgorithm。
- 这是validation移动代的好指南。
- 这是关于反叛国际象棋引擎很多很好的信息 。
- 这是关于黑暗思维国际象棋引擎的很多很好的信息 。
- 好的信息和季风棋引擎的源代码。
- 这是关于国际象棋程序devise的更多笔记 。
- 合理介绍旋转的纸板 。
- 合理的介绍魔术贴纸 。
- 合理引入后期降价 。
- 看看空移动修剪 。
- 用于testing目的的位置集合 。
- 这是一个来自两位写国际象棋程序的学生的旧报告。
- 一堆杂项国际象棋编程链接 。
- 最后,这里是维基百科的计算机象棋 。
在创build我的国际象棋引擎时,我花了好几个月的时间来收集描述创build国际象棋游戏一些难度较高的资源。 这里是我发现最有用的列表:
Chess Programming byFrançoisDominicLaramée
这是让我进入电脑国际象棋的文章,这是计算机如何下象棋的一个很好的概述。 这是非常容易阅读,它会向你介绍所有的术语和关键字。
电脑国际象棋维基 ,这在过去几个月里确实有所扩展。 这是一个很好的参考资料。
http://chessprogramming.wikispaces.com/
路易斯凯斯勒的电脑国际象棋链接
一旦你通过上述资源,其余的可以在以下链接页面find。
http://www.lkessler.com/cclinks.shtml
最后但并非最不重要的,我写了一个计算机国际象棋博客 ,从头开始用C#编写国际象棋引擎的所有步骤,包括计算机国际象棋链接部分和国际象棋游戏入门工具包。
亚当Berent
在国际象棋中有用的许多algorithm的概述 – http://www.frayn.net/beowulf/theory.html – 应该是理解问题度量的一个很好的起点,以及几种简化计算工作的方法。
-亚当
您可以随时查看GNU国际象棋代码。
克劳德·香农1949年的论文 (警告:PDF)是一个很好的起点
对于初学者来说最好的国际象棋程序教程是在GameDev 。 这是非常容易理解,而非常详细。
这基本上是在人工智能(AI)领域。
在国际象棋游戏中制作计算机“思考”的最常见的方式是使用计算机通过分析从当前状态提前做出不同动作的结果来“思考”的迷你最大值方法 。
不同动作结果的“善”可以从许多标准来确定,例如得分,剩余敌人数量,获胜状态。 例如,如果您将玩家移动到正确的位置并赢得比赛,那么这是一个非常好的状态。 但是如果你把它移到左边,你什么也得不到。 向右移动是合理的。 这个定义“善”的function通常被称为启发式function。
这个过程recursion地完成许多回合。 转数越大,您需要的时间就越多。 转弯次数越多,软件越聪明。 只有一个回合的思考才会导致贪婪的select。 智能国际象棋软件具有很大的启发function,并且多次思考。
PS。 有一些迷你最大值algorithm的细节我没有在这里解释,但是这应该涵盖基本思想。
我已经join了同样的Paul Wicks(上图),我也想为我自己的学习着想写一个国际象棋引擎,只有约束是我的日常工作(这是工作在枯燥的Web服务和东西..),但它的价值疼痛。
我决定使用逐层方法来构build它。 我几乎通过多玩家部分,即(人类vs人类)。
一旦我完成了这个,我很乐意把AI层join到支持(COMPUTER VS HUMAN)的播放scheme中。这是我最担心的部分,我在这里发现了非常好的帮助提示,非常感谢大家。
目前我所熟悉的语言是Java,如果有性能问题,我可以将它移植到C ++。