android - 在 finishMatch 上结束多人游戏

标签 android google-play google-play-services google-play-games

我正在使用 Google Play 游戏服务Android 中开发一款回合制多人游戏。

当用户点击 Finish Button 时,我已经成功结束了游戏:

    Games.TurnBasedMultiplayer.finishMatch(mGoogleApiClient, mMatch.getMatchId(), mMatch.getData(), creatorResult, opponentResult)
            .setResultCallback(new ResultCallback<TurnBasedMultiplayer.UpdateMatchResult>() {
                @Override
                public void onResult(TurnBasedMultiplayer.UpdateMatchResult result) {
                    processResult(result);
                }
            });

当前玩家的游戏在“已完成的游戏”部分得到更新。

然而对手的游戏被列为“我的回合”

来自 在 Android 中开发回合制多人游戏 页面:

“Play Game 服务向所有其他比赛参与者发送通知,通知他们比赛已经结束。这些参与者在他们各自的比赛列表 UI 中的“轮到你”类别下看到这场比赛。此时,您的游戏可以为这些参与者调用 finishMatch() 以保存他们的最终游戏数据。调用此方法还会将匹配移动到参与者匹配列表 UI 中的“已完成匹配”类别。”

如何为其他玩家调用 finishMatch

--是否通过mGoogleApiClient

--或者有没有办法让对手的比赛状态= MATCH_STATUS_COMPLETE

有人可以帮忙吗?

最佳答案

您应该在每个其他播放器设备上进行以下调用:

Games.TurnBasedMultiplayer.finishMatch( mGoogleApiClient, mMatch.getMatchId());

这将导致每个玩家设备上的状态发生以下变化:

  • 比赛状态将从 MATCH_STATUS_ACTIVE 变为 MATCH_STATUS_COMPLETE
  • 比赛回合状态将从 MATCH_TURN_STATUS_MY_TURN 到 MATCH_TURN_STATUS_COMPLETE。
  • 玩家的参与者状态将从 STATUS_JOINED 变为 STATUS_FINISHED。

请注意,一个玩家的参与者状态可能在其他玩家设备上保持 STATUS_JOINED(至少我在我的实现中看到的是这样)。

关于android - 在 finishMatch 上结束多人游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28846258/

相关文章:

java - 将上下文传递给多个线程是否安全?

java - 上传的 APK 使用与之前的 APK 不同的证书进行签名

android - Google Play 不会自动更新内部应用

android-studio - Google服务; com.google.gms:google-services:2.1.2;无法解决服务-测量

安卓 : Sqlite error - (1) near "null": syntax error

java - RecyclerView 中的 SharedPreferences

java - Android REQUEST_DENIED Google 地点 API

android - 在Google Play商店上发布应用后,基于MongoDB Stitch的具有电子邮件身份验证的Android应用登录无法正常工作

android - 如何检测用户是否禁用 GPS(Android - Play 服务)

android - 在 Android 中获取用户的 Gmail Id