5

我想知道这里是否有人使用 GKMinmaxStrategist 运气好。这个类/功能在 WWDC 上被展示过,但大部分示例代码都是用 Objective-C 编写的,这令人失望。

GameplayKit 的 WWDC 视频展示了另一款游戏 Stone Flipper (Reversi/Othello),但他们尚未发布代码(还没有?)。

有没有人有这方面的运气?我希望只用一个简单的井字游戏来尝试这个,但我完全不知道如何开始。

4

2 回答 2

5

我同意这是一个很难学习的框架——我刚刚写完一篇关于 GameplayKit 和 GKMinmaxStrategist 的教程,这绝非易事。如果您按照教程从头开始构建一个完整的游戏,并解释它是如何组合在一起的。至少,您可能会发现它作为起点很有用。

我希望 Apple 能够在 iOS 9 最终版之前改进其文档!

如果你想直接潜入,这里是你至少需要知道的:

  • 确保您的游戏模型(数据)和视图(布局)保持分离。
  • 让你的模型实现NSCopying协议,因为它会在 AI 运行时被复制很多次。
  • 您还应该使其实现GKGameModel协议,该协议要求您能够枚举可用的移动,在棋盘副本上应用移动(实际上,不是真实的),然后判断玩家的得分。
  • 每个“动作”(无论在您的游戏中意味着什么)都需要符合GKGameModelUpdate协议,因此它将是您创建的一个定义特定动作的类。当你选择了最好的移动时,你会得到这个,所以它会包含“将骑士移动到 E4”之类的东西。
  • 如果您的游戏没有得分(在我的教程中,我使用了连续四个,这正是这个问题),那么您需要提出一个启发式估计大致有多好的移动。
  • 在后台线程上运行 AI 以确保您的 UI 保持响应,然后在您准备好进行 UI 更改时将结果推送回前台线程。

如果你发现 AI 运行缓慢,要么限制它可以移动的数量,要么减少它的前瞻深度。

于 2015-06-24T13:59:02.553 回答
3

这是Swift 中的 GKMinmaxStrategist TicTacToe 教程

这应该解释事情是如何工作的,并就如何制作一个好的 AI 提供一些指导。战略家当然不是创建任何类型棋盘游戏 AI 的模板,它只是提供了一个框架。95% 的工作仍然落在你的肩上。;)

代码可在此处获得。请注意,它不仅需要 Xcode 7,还需要 OS X 10.11。虽然它应该很容易适应 iOS 9。

于 2015-07-03T18:52:18.197 回答