我正在尝试用更时髦的 UI重新实现我编写的旧黑白棋棋盘游戏。我查看了 Jens Alfke 的 GeekGameBoard 代码以获得灵感,而 CALayers 看起来像是实现 UI 的方式。
然而,在 GeekGameBoard 代码中,模型和视图并没有清晰的分离;模型就是视图,这使得例如制作游戏状态的副本以便为 AI 玩家执行游戏树搜索变得困难。但是,我似乎无法想出另一种结构方法,允许模型和视图分离,而不涉及保持两个平行网格的持续战斗(模型打开,视图一个) 同步。当然,这有其自身的问题。
如何最好地实现 AI 搜索友好的模型结构和显示友好的视图之间的关系?任何建议/经验将不胜感激。我害怕/一半期待着“没有好的答案:尽你所能处理它”这样的答案,但我准备好感到惊讶了!
感谢彼得的回答。但是,我不完全确定我完全理解它。如果您只有一组初始的可以移动甚至移除的部件,我可以看到这是如何工作的,但是当一个人放下一个新部件时会发生什么?它会像这样工作吗:
- 用户在视图中单击。
- 查看点击被转换为板位置并通知控制器。
- 控制器创建一个具有后继状态的新董事会(如果合适,即这是一个合法的举动)。
- 视图通过其绑定获取新板,拆除现有的视图/层层次结构并将其替换为当前状态。
听起来对吗?
PS:很抱歉未能指定它是用于 iPhone 还是 Mac。我对适用于 iPhone 的东西最感兴趣,但如果我能让它首先在 Mac 上很好地工作,我相信我可以调整解决方案以自己在 iPhone 上工作。(或发布一个新问题!)