假设我与两名球员进行了回合比赛。在某些时候,玩家1意识到他即将失去游戏。当玩家1轮到他时,他使用Game Center App进行滑动以移除匹配。
的问题:
一个。在播放器1上转动计时器永不过期。因此,当时间到期时,比赛的转弯将不会切换到播放器2。
B中。该游戏还提供仅查看模式,因此玩家可以在他不在时查看游戏进度。但由于没有更新状态表明玩家1已手动删除了匹配。 App无法提供解决方案。此外,您只能在轮到您时结束比赛。
理想情况下,我想宣布玩家2为胜利者并结束比赛。
在这种情况下你如何处理?
答案 0 :(得分:1)
我终于找到了解决方法。
如果您删除匹配项,然后拨打GKTurnBasedMatch:loadMatchesWithCompletionHandler
,则不会显示已删除的匹配项(如预期的那样)。但是,如果您仍然拥有已删除的匹配ID,则 仍会使用GKTurnBasedMatch:LoadMatchWithID
重新下载已删除的匹配。
我认为我们可以合理地假设The Cheater将再次玩游戏;否则,他们为什么要关心招致损失呢?因此,我实施了以下内容:
当Cheater识别出情况并使用Game Center界面删除比赛时,匹配将从Game Center中删除,但不会从我的本地数据库中删除。当The Cheater再次开始我的游戏时,我发现他们在本地比在Game Center上有更多的比赛。
然后我根据需要调用participantQuitInTurnWithOutcome
或participantQuitOutOfTurnWithOutcome
,结果为GKTurnBasedMatchOutcomeLost
。
这将轮到下一位玩家并记录了The Cheater的损失。如果骗子再也不玩游戏,它就不会工作。 (但是,如果他们没有参加比赛,他们就不会再破坏任何比赛,所以混乱就会被遏制)