我想把一个象棋AI移植到iPhone上,但我不知道该怎么做。 显然,iPhone不支持多线程,所以你不能简单地单独编译AI,而是必须以某种方式将其合并到代码中。
我有一个sjeng引擎实现的GPL副本,但我不知道他们是怎么做到的,因为它是由C和C++编写的,而我只会Apple的ObjC。
有没有人能推荐一下该怎么做?我需要为一个独立的程序制作某种包装器。
包含代码的文件,我会尽可能地保留它。
回答:
你的问题实际上比它需要的更复杂,因为我认为你遇到的基本问题与专门为iPhone编译无关。
如果你说你已经有一些象棋AI代码,那么在其中的某个地方会有一个对评估函数的调用,该函数接受一个游戏状态(棋盘位置和要移动的玩家),并返回一个移动。 这就是你需要深入研究并找到的,因为这本质上是驱动你的应用程序的“引擎”,而不管你为哪个平台编译。
现在,我猜这个象棋AI假设移动搜索在其自己的线程中运行,这可能是为了方便随时“中断”搜索并让其自己下棋的设计决策。 你当然可以在iPhone上在单独的线程中运行代码,所以你的问题是如何将该代码从其现有的平台依赖项中分离出来。
首先将这个问题视为编写一个在Mac OS X上运行的C语言命令行实用程序可能会对你有所帮助。 这样可以让你摆脱很多依赖项并简化情况。 我猜一旦你完成了这一点,你就会立即知道如何在(Cocoa)iPhone环境中使其工作。