有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何为国际象棋游戏编程AI

我正在考虑为安卓应用程序下一盘棋。我唯一不知道怎么做的就是为对手的AI编写代码,或者它是如何工作的

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


共 (1) 个答案

  1. # 1 楼答案

    你可以走很多路。大多数国际象棋引擎都依赖于经认可的国际象棋理论研究,并拥有大量的国际象棋引擎库,用于评估游戏的前12步。这就是为什么他们中的一些人在做不寻常的事情时会感到非常困惑的原因,这在老一代的象棋引擎中是一种获胜的方法。 基本上,这是对游戏规则进行编码,然后,当然,找到一种算法来找到最佳解决方案。 同样,也有许多不同的方法,线性优化是其中之一,但有其影响,因为游戏相当复杂,求解线性不等式系统是一项消耗内存和cpu的任务,不能正确地进行多线程处理。 另一种方法是使用遗传算法,它最适合于这类问题领域,因为它将规则和可能的策略编码到genstructer中,并在适应度函数中对群体中的个体进行评级。 这可以很好地扩展到多个线程,但这种方法也有其自身的影响,因为所需的总体大小将很高,这显然也是内存消耗
    有一些现有的解决方案,如metioned 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国际象棋服务器并与之通信,以便您的玩家可以连接到网络并与其他玩家进行游戏