Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在Google play services中完成一个2人回合的游戏?_Android_Google Play Services - Fatal编程技术网

Android 如何在Google play services中完成一个2人回合的游戏?

Android 如何在Google play services中完成一个2人回合的游戏?,android,google-play-services,Android,Google Play Services,这是我的finishTurnBasedGame()函数,当第二个玩家玩完他的回合时,我正在运行该函数 public void finishTurnBasedGame(TurnBasedMatch mMatch){ showSpinner(); Games.TurnBasedMultiplayer.finishMatch(mHelper.getApiClient(), mMatch.getMatchId()) .se

这是我的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();
}
public void finishTurnBasedGame(TurnBasedMatch mMatch){
showSpinner();
Games.TurnBasedMultiplayer.finishMatch(mHelper.getApiClient(),mMatch.getMatchId())
.setResultCallback(新的ResultCallback(){
@凌驾
public void onResult(TurnBasedMultiplayer.UpdateMatchResult结果){
处理结果(result);
}
});
isTurnBasedGameComplete=false;
isDoingTurn=false;
setViewVisibility();
}
这就是我从Logcats那里得到的错误。未完成,将换班回到第一名球员

E/周转基地﹕ 未能完成匹配:null

W/TurnBasedAgent﹕{“代码”:409,“错误”:[{“消息”:“播放机106811846324577577566的操作无效。原因:完成的第一个调用必须由挂起的播放机执行。”,“域”:“全局”,“原因”:“InvalidParticipantState”}]}


我不知道怎么做才是正确的方法,但我想要的是,一旦第二名玩家轮到他,游戏就应该以结果结束。我不想在不必要的情况下再次轮回第一名玩家。

有两种方法:

  • 当您为玩家2调用takeTurn时,指定玩家2作为下一个参与者。这样玩家2仍然有回合,然后你可以调用finishMatch

  • 不要为玩家2呼叫takeTurn。而是调用finishMatch方法,该方法包括匹配数据和参与者结果:

    finishMatch(GoogleApiClient apiClient, String matchId, byte[] matchData, List<ParticipantResult> results).
    
    finishMatch(GoogleAppClient apiClient,字符串匹配ID,字节[]匹配数据,列表结果)。
    
    这将更新两个玩家设备上的比赛数据并完成比赛