当前位置:  开发笔记 > 编程语言 > 正文

实施国际象棋引擎有多难?

如何解决《实施国际象棋引擎有多难?》经验,为你挑选了5个好方法。

我想知道实施国际象棋引擎有多难.是否已经有开源实现?

看起来你需要一个给定的板星座的评分函数,以及探索几个可能的未来板块星座的快速方法.探索所有可能的未来动作当然是不可能的,因此人们可以贪婪地遵循最有希望的动作,或使用模拟退火等近似技术来概率地跟踪可能的动作.

您是否认为这属于机器学习研究生项目的范围- 假设有一个学生可以使用的开源实现,那么基本的事情就像返回给定数字的下一个可能的动作一样?可能太难了?

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



1> Adam Berent..:

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

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

http://www.chessbin.com

我甚至创建了一个国际象棋游戏开发套件,它将帮助您开始开发自己的国际象棋引擎,其中包含:

    代表棋盘和棋子所需的所有代码

    与验证棋子运动有关的代码

    图形用户界面,显示国际象棋的位置,允许您在棋盘周围移动棋子

我的网站基本上是专门为像你这样的人而设的; 想要开始构建自己的国际象棋引擎的人.



2> RoadWarrior..:

是的,这绝对属于学生项目的范围.以下是我的存档中的一些链接,可帮助您入门:

这是一个有用的国际象棋编程维基.

这是国际象棋编程的简单介绍.

这是一个更高级的介绍.

这是对MTD的一种很好的分析,MTD是一种复杂的搜索算法.

这是验证移动生成的良好指南.

这描述了国际象棋程序的基本架构.

这是关于黑暗思想国际象棋程序的很多好消息.

这些是国际象棋编程的更多注释.

旋转位板的合理介绍.

魔术位板的合理介绍.

以下是2位写过国际象棋程序的学生的旧报告.

最后,这是维基百科对计算机国际象棋的看法.



3> CaptainProto..:

Crafty是最受欢迎的国际象棋引擎之一.但是我不鼓励你将它用于用C编写的学生项目,非常复杂且非常难以理解,因为它是高度优化的.

出于教育目的,我建议你看一下Adam Berents网站,在那里他描述了他在C#中实现国际象棋引擎时所经历的过程.当然也可以使用源代码.在我看来,这是一个很好的开始.


Adam Berent自己回答了这个问题,他的回答绝对值得一试.

4> Stefano Bori..:

我不能回答你的问题,但我可以回答你的最后评论

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

这已在FICS国际象棋服务器上完成.我建议你登录那里(需要telnet)并检查文档,你可能能够联系那些能够给你关于他们的象棋机器人的具体提示的人



5> Nosredna..:

在现代PC上合理的国际象棋引擎当然是可行的,特别是如果你已经足够老了,可以记住有许多国际象棋程序在1和2 MHz 8位机器上只使用了几K内存就能很好地运行.你现在可以用解释语言掏出一个国际象棋引擎,并从顶级6502或Z80程序员那里击败他最快的东西.

我和Dan Spracklen一起工作,他和妻子Kathleen在1978年完成了Sargon的原创.Kathleen的兄弟为Apple II做了端口,我与他和他的儿子一起工作.(当时我与这些家伙合作,国际象棋换消费者的利润业务已经完成.我记得有一个人带出了Atari ST和Amiga Chess游戏,到那时他们的市场真的不多.)

" 计算机游戏技巧 "是国际象棋编程的一个很棒的介绍,因为业余爱好者在1983年表演过.它仍然是一个阅读的乐趣.涵盖好东西:alpha-beta,minimax等.

这是一本很好的书,你可以从那里开始,然后了解自那以后所取得的进步.

替代文字http://g-ecx.images-amazon.com/images/G/01/ciu/a9/01/ef2de893e7a081414e106110.L._AA240_.jpg

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有