假设我有两名玩家进行回合制比赛。在某个时候,玩家1意识到他将要输掉比赛。轮到玩家1时,他使用Game Center App滑动来删除比赛。

问题:

答:轮到计时器永远不会在玩家1上过期。因此,时间到时比赛的轮到不会切换到玩家2上。

B.游戏还提供仅查看模式,因此玩家可以在转弯时查看游戏进度。但是由于没有状态被更新以指示玩家1已经手动删除了比赛。应用程式无法提供解析度。另外,轮到您时才可以结束比赛。

理想情况下,我想宣布玩家2为赢家并结束比赛。

在这种情况下如何处理?

最佳答案

我终于找到了解决方法。

如果删除匹配项,则调用GKTurnBasedMatch:loadMatchesWithCompletionHandler,删除的匹配项不会出现(如预期)。但是,事实证明,如果您碰巧仍然具有删除的匹配的ID,您可以仍然使用GKTurnBasedMatch:LoadMatchWithID重新下载已删除的匹配。

我认为我们可以合理地认为“骗子”将再次玩游戏。否则,他们为什么会担心遭受损失?因此,我实现了以下内容:

  • 在设备上本地维护一个匹配表。
  • 启动时,从Game Center中提取本地玩家的比赛列表,并与我的本地列表进行比较。

  • 当作弊者识别出这种情况并使用Game Center界面删除了比赛后,该比赛将从Game Center中删除,但不会从我的本地数据库中删除。当The Cheater再次开始我的游戏时,我看到他们在本地的比赛比在Game Center上的比赛多。

    然后,根据需要使用participantQuitInTurnWithOutcome的结果调用participantQuitOutOfTurnWithOutcomeGKTurnBasedMatchOutcomeLost

    这将回合转到下一位玩家,并记录了The Cheater的损失。但是,如果作弊者再也不玩游戏了,那就行不通了。 (但是,如果他们不参加比赛,就不会破坏比赛,因此可以避免混乱)

    关于ios - 玩家滑动即可删除比赛,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34994621/

    10-09 18:46