gpt4 book ai didi

ios - 如何在 iOS9 中检测 Game Center 回合制比赛何时结束?

转载 作者:行者123 更新时间:2023-12-01 20:18:13 25 4
gpt4 key购买 nike

我完全不知道如何实现回合制游戏。我一直在尝试使用 GKLocalPlayerListener iOS9 中处理回合制的方法。唯一能触发的方法是receivedTurnEventForMatch ,这让我没有任何我知道的方法可以为每个玩家调用结束游戏例程。我正在尝试使用 Game Center 比赛制作器 View Controller 和委托(delegate)方法在我的应用程序内处理回合制比赛。我读到 GKLocalPlayerListener方法在通过实际的 Game Center 应用程序时适用于匹配(Apple 文档没有提到这一点)。所以如果这是真的,那么GKLocalPlayerListener不是我的应用程序的选项?

我可以做些什么来检测比赛何时结束?我想为每个球员保持一个输赢记录,所以在比赛结束时为每个球员调用一个例程很重要。

最佳答案

回合制比赛的生命周期如下所示:

  • 创建匹配
  • 邀请他人
  • 其他加盟
  • 玩家轮流传递比赛对象(您的游戏逻辑决定顺序)
  • 玩家来回发送交流(可选)
  • 玩家开始离开
  • ----因为他们已经被淘汰了
  • ----因为他们退出了
  • ----因为他们超时了
  • 有人中奖

  • 如果您不是活跃玩家,当步骤 3、4、7、8 和 9 发生时, playerReceivedTurnEventForMatch 会通知您射击;但是,正如您从我的回答中看到的 https://stackoverflow.com/a/34458493/1641444 playerReceivedTurnEventForMatch触发很多不同的条件,它不会告诉你是哪一个触发了它。您必须根据玩家的状态、哪个玩家是活跃玩家以及您在匹配对象中跟踪的任何其他信息来辨别这一点。
    playerReceivedExchangeRequest 通知您#5触发(以及回复和取消功能)。

    您的游戏逻辑将决定何时触发 #7。我的偏好是匹配对象来到被淘汰的玩家,他们被识别为失败,并调用 participantQuitInTurnWithOutcome
    玩家通过退出来决定何时触发#8,代码调用 participantQuitInTurnWithOutcomeparticipantQuitOutOfTurnWithOutcome取决于他们的状态。

    条件#9是一个真正的痛苦。在游戏设计的限制和彻底的错误之间,超时可能会产生几个不可恢复的边缘情况。处理超时保证自己的完整答案。

    最后,#10 通过调用 endMatchInTurnWithMatchData 触发. GKTurnBasedEventHandlerDelegatehandleMatchEnded在 IOS7 中已弃用。使用 GKLocalPlayerListner 时,您将通过 playerReceivedTurnEventForMatch 的另一次出现通知您 #10

    编辑——基于后续问题的澄清:

    是的,正是。在你的 sendTurn 函数中,当游戏结束时,不要调用 endTurnWithNextParticipant .相反,将每个参与者的状态设置为显示谁赢谁输,然后调用 endMatchInTurnWithMatchData .

    其他玩家将看到 playerReceivedTurnEventForMatch火。您可以从比赛状态和玩家状态中辨别游戏已经结束,并决定对该接收者采取什么行动。

    关于ios - 如何在 iOS9 中检测 Game Center 回合制比赛何时结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36227459/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com