我正在考虑为Android应用程序制作国际象棋游戏。我唯一不知道该怎么做的是为对手AI编写代码或者它是如何工作的。
我是否必须从头开始编写AI代码,或者我可以实现哪些软件包?
答案 0 :(得分:1)
你有很多方法可以去。大多数国际象棋引擎依赖于经过批准的国际象棋理论调查,并安静地使用大型图书馆来评估游戏的前12个动作。这就是为什么他们中的一些人在做不同寻常的事情时会感到非常困惑,这在老一代的国际象棋工程中是一种winnig方法。
基本上,它是编码游戏规则的目标,然后,当然,找到一种算法来找到最佳解决方案。
对于这一点,有许多不同的方法,线性优化是一个,但有其影响,因为游戏相当复杂,解决线性不等式系统既是内存和cpu完善任务,也不能正确多线程。
另一种方法是使用遗传算法,这种算法最适合这种问题领域,因为它将规则和可能的策略编码到结构主体中,并在适应度函数中对群体的个体进行评级。
这可以很好地传播多个线程,但是这种方法也有其自身的影响,因为所需的群体大小将很高,这显然也是内存消耗。
现有的解决方案,例如提到的http://stockfishchess.org/download/ stockfishchess引擎或http://cinnamonchess.altervista.org/,提供了一个android api,网上有很多关于如何做的资源也可以在网上找到,例如{{3} (一个起点)。
你也可以尝试将现有的国际象棋引擎移植到安卓等机器人
http://chessprogramming.wikispaces.com/Chess+for+Android这应该是沉重的,因为android是基于Linux的,并且glibc的android替换大部分是兼容的。
或者您可以尝试使用http://cinnamonchess.altervista.org/之类的Java国际象棋引擎,并将其移植到android。
只需搜索开源国际象棋引擎,你会发现许多现有的解决方案。
在这种情况下,“唯一的东西”非常有趣,因为写国际象棋游戏的主要部分是为它编写Ai。
另一种方法可能是使用https://github.com/albertoruibal/carballo国际象棋服务器并与之通信,以便您的播放器可以连接到网络并再次播放。