2014-01-19 87 views
-3

我正在考虑为android应用程序制作一个国际象棋游戏。我不知道该怎么做的唯一事情就是为对手AI编写代码或者它甚至可以工作。如何编程一个国际象棋游戏的AI

我是否必须从头开始编写AI代码,或者是否有可以实现的包?

+0

http://web.comhem.se/petero2home/droidfish/ – sihrc

+5

这是一个非常广泛的问题。人们仅仅在这个话题上教全班:) – kmera

+0

http://stockfishchess.org/ http://www.craftychess.com/ –

回答

1

有很多方法可以去。大多数国际象棋引擎都依靠经过批准的国际象棋主动调查,并将其中的大型图书馆安静地评估为游戏的前12个动作。这就是为什么其中一些人在做不寻常的事情时会感到困惑,这是老一辈国际象棋中的winnig方法。基本上,它是对游戏规则进行编码的过程,然后找到找到最佳解决方案的算法。 对于这种情况,还有很多不同的方法,线性优化是一种,但其影响是因为游戏相当复杂,并且解决线性不等式的系统既是内存又是CPU消耗任务,并且不能正确执行多线程。 另一种方法是使用遗传算法,这种算法最适合于这类问题领域,因为它将规则和可能的策略编码到输出结果中,并对适应度函数中的种群个体进行评分。 这可以很好地传播多个线程,但这种方法也有其自身的影响,因为所需的人口规模将很高,这显然再次是内存消耗。
现有的解决方案,例如http://stockfishchess.org/download/ stockfishchess引擎或http://cinnamonchess.altervista.org/,它们提供了一个android api和网络上的许多资源,关于如何执行它也可以在网络中使用,例如http://chessprogramming.wikispaces.com/Chess+for+Android(起点)。
你也可以尝试移植一个现有的国际象棋引擎的Linux到Android如
http://cinnamonchess.altervista.org/这应该不会沉重,因为android是基于Linux的,而且android替代glibc大多是兼容的。
或者您可以尝试Java国际象棋引擎,如https://github.com/albertoruibal/carballo并将其移植到android。
只要搜索开源的国际象棋引擎,你会发现许多现有的解决方案。
在这种情况下,“唯一的事情”非常有趣,因为编写国际象棋游戏的主要部分是为它写Ai。
另一种方法可能是使用http://de.wikipedia.org/wiki/Schachserver国际象棋服务器并与其通信,以便您的播放器可以连接到网络并再次播放其他人。

+0

好的,谢谢你的回复。看起来好像我忽略了制作国际象棋游戏的AI方面。我认为AI程序已经存在于我可以使用的软件包和源代码中。我的意思是为什么我必须为我的游戏重新编写整个引擎?在处理随机数字生成器时,我们不会创造种子,我们只是使用库中的方法。我认为这将是相同的情况,因为我认为AI的程序非常普遍。不是吗? – user2817240

+0

是的,就像我写的,有很多现有的解决方案,但我个人会错过“有趣”的一部分。 ;) – Peter