我正在开发一款回合制纸牌游戏。主循环很简单,我有这样的结构(简而言之很简单):
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/