iphone - 与一名人类玩家模拟回合制游戏中的回合顺序

标签 iphone objective-c ios

我正在开发一款回合制纸牌游戏。主循环很简单,我有这样的结构(简而言之很简单):

while (!gameEnded) {
    for (Player *pl in players) {
        Action *a = [pl askForAction];
        self [manageAction];
    }
    if (some condition...) {
        gameEnded = TRUE;
    }
}

如果所有玩家都是电脑玩家,那没问题,但如果我想要一个真人玩家,askForAction 方法应该“暂停”循环并让玩家选择 Action (按下按钮或触摸卡片.. .)

我该怎么做?我一直在“谷歌搜索”它,但我找不到任何东西。我想解决方案应该是使用 NSThread(或者 NSRunLoop 也许......)但我找不到方法。谁能帮帮我?

提前致谢

最佳答案

我的做法(可能有更好的答案)是使用事件驱动模型,而不是在循环中运行。

在代理(或任何地方)中,跟踪当前玩家(玩家数组的索引)。调用 [[players objectAtIndex:currentPlayer] askForActionWithDelegate:self];

在delegate中,有一个receiver(可以使用manageAction),当用户执行了action,调用manageAction。在 manageAction 中,检查胜利条件并推进 currentPlayer

关于iphone - 与一名人类玩家模拟回合制游戏中的回合顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9916200/

相关文章:

javascript - 隐藏 iPhone 键盘顶部的工具栏

objective-c - 向我的矩形添加一条曲线

iOS google maps sdk GMSMarker定位

ios - UITextField 在 UIButton 触摸时退出第一响应者

iphone - OpenAL iPhone : unable to play any sound

objective-c - 对受 OAuth 保护的 URL 进行 GET 调用

objective-c - 核心位置 : didUpdateToLocation not getting called

ios - 有没有一种简单的方法可以在 Swift 中暂时禁用 Sprite 的物理体? ( SpriteKit )

ios - 在 Swift 中导入 Swift 框架 : "Use of undeclared type ' MyCustomView'"

iphone - 搜索城市列表