实现一个象棋引擎有多难?

我想知道如何实现一个国际象棋引擎 。 有没有开源的实现?

看起来你需要给定棋盘星座的得分函数,以及探索几个未来棋盘星座的快速方法。 探索所有可能的未来动作当然是不可能的,所以人们可以贪婪地遵循最有前途的动作,或者使用类似模拟退火的近似技术来概率地跟踪可能的动作。

你认为这是在机器学习研究生项目的范围之内 - 假设有一个学生可以使用的开放源代码实现,那么基本的东西就像返回给定数字的下一个可能的动作一样? 可能太难了?

这将是一个有趣的项目,让不同的团队在国际象棋引擎上工作,然后让他们互相对抗......


我花了去年用C#构建自己的国际象棋引擎。 这并不困难。 在我的工作中,我犯了错误,我发现互联网上的信息只是没有清楚表达出来,其中大部分都是从其他网站复制而来。

为了让其他人能够更轻松地完成这一过程,我一直在记录我的国际象棋引擎的开发情况,并在我的博客上发布了大量源代码:

http://www.chessbin.com

我甚至创建了一个国际象棋游戏开发工具包,可以帮助您开始开发自己的国际象棋引擎,其中包含:

  • 代表国际象棋棋盘和棋子的所有代码
  • 与验证棋子运动有关的代码
  • 图形用户界面,显示国际象棋位置,并允许您在棋盘周围移动棋子
  • 我的网站基本上是专为像你这样的人而设; 想要开始构建自己的国际象棋引擎的人。


    是的,这绝对是在一个学生项目的范围内。 以下是我的档案中的一些链接,以帮助您入门:

  • 这是一个有用的国际象棋程序设计wiki。
  • 这是一个简单的国际象棋程序设计介绍。
  • 这是一个更高级的介绍。
  • 这是对复杂搜索算法MTD的一个很好的分析。
  • 这是验证移动生成的好指南。
  • 这描述了国际象棋程序的基本架构。
  • 这是关于黑暗思维国际象棋程序的很多很好的信息。
  • 这些是关于象棋编程的更多笔记。
  • 对旋转位板的合理介绍。
  • 合理介绍魔术贴纸。
  • 这是一个来自2位编写国际象棋程序的学生的旧报告。
  • 最后,这里是维基百科对计算机象棋的看法。

  • 狡猾是顶级国际象棋引擎之一,完全开源。 不过,我会阻止你将它用于C语言编写的学生项目,这非常复杂,很难理解,因为它是高度优化的。

    为了教育目的,我建议看看Adam Berents网站,他描述了他在C#中实现国际象棋引擎时所经历的过程。 源代码当然可用。 在我看来,这是一个很好的起点。

    链接地址: http://www.djcxy.com/p/84641.html

    上一篇: How hard is it to implement a chess engine?

    下一篇: Image is not member AxBarcodeLib.AxBARCODE