如何在Google Play服务中完成2人回合制游戏?

时间:2015-07-04 15:12:19

标签: android google-play-services

这是我的finishTurnBasedGame()函数,当第二个玩家轮到他时,我正在运行它。

public void finishTurnBasedGame(TurnBasedMatch mMatch){

        showSpinner();
        Games.TurnBasedMultiplayer.finishMatch(mHelper.getApiClient(), mMatch.getMatchId())
                .setResultCallback(new ResultCallback<TurnBasedMultiplayer.UpdateMatchResult>() {
                    @Override
                    public void onResult(TurnBasedMultiplayer.UpdateMatchResult result) {
                        processResult(result);
                    }
                });
        isTurnBasedGameComplete = false;
        isDoingTurn = false;
        setViewVisibility();
}

这是我从Logcats得到的错误。没有完成并转回第一名球员。

  

E / TurnBasedAgent:未能完成匹配:null

     

W / TurnBasedAgent:{“code”:409,“errors”:[{“message”:“播放器的无效操作106811846324577577566.原因:首次调用Finish必须由待处理的播放器。”,“domain”:“全球”, “理由”: “InvalidParticipantState”}]}

不知道这样做的正确方法是什么,但基本上我想要的是一旦第二个玩家轮到他,游戏应该以结果结束。如果没有必要,我不希望转牌再次回到第一名球员。

1 个答案:

答案 0 :(得分:0)

有两种方法可以做到:

  1. 当您为玩家2调用takeTurn时,请将玩家2指定为下一个参与者。这样玩家2仍然可以转弯,然后你可以调用finishMatch。

  2. 请勿为播放器2调用takeTurn。而是调用包含匹配数据和参与者结果的finishMatch方法:

    finishMatch(GoogleApiClient apiClient, String matchId, byte[] matchData, List<ParticipantResult> results).
    

    这将更新两个玩家设备上的匹配数据并完成匹配。