无法关闭与Google Play游戏基于交互式的多人游戏匹配

时间:2015-05-11 20:20:36

标签: android google-play-games

我在最后一位玩家关闭最后一场比赛后关闭游戏时遇到问题。轮到我的计划是:

  1. 玩家A
  2. 玩家B
  3. 玩家B
  4. 玩家A
  5. 玩家A
  6. 玩家B
  7. 游戏运作良好,但反过来" 6"当玩家B试图关闭比赛时,玩家A总是看到matsh为"我的回合"而不是"完成"

    这里有代码thar规则转换和游戏结束:

    @Override
        public void onGameEnd(final NMXGameData updatedData) {
            super.onGameEnd(updatedData);
    
            if (updatedData.getMatchNumber() == NMXGameConfig.MATCHES) {
                boolean iWin = updatedData.getResultPoints()[1] > updatedData.getResultPoints()[0];
                boolean tile = updatedData.getResultPoints()[1] == updatedData.getResultPoints()[0];
    
                ParticipantResult opponentParticipantResult;
                ParticipantResult myParticipantResult;
    
                if (tile) {
                    opponentParticipantResult = new ParticipantResult(getOpponentId(), ParticipantResult.MATCH_RESULT_TIE, 1);
                    myParticipantResult = new ParticipantResult(getCurrentPlayerId(), ParticipantResult.MATCH_RESULT_TIE, 1);
                } else {
                    if (iWin) {
                        opponentParticipantResult = new ParticipantResult(getOpponentId(), ParticipantResult.MATCH_RESULT_LOSS, 2);
                        myParticipantResult = new ParticipantResult(getCurrentPlayerId(), ParticipantResult.MATCH_RESULT_WIN, 1);
                    } else {
                        opponentParticipantResult = new ParticipantResult(getOpponentId(), ParticipantResult.MATCH_RESULT_WIN, 1);
                        myParticipantResult = new ParticipantResult(getCurrentPlayerId(), ParticipantResult.MATCH_RESULT_LOSS, 2);
                    }
                }
    
                ArrayList<ParticipantResult> participantResultArrayList = new ArrayList<>();
                participantResultArrayList.add(opponentParticipantResult);
                participantResultArrayList.add(myParticipantResult);
    
                Games.TurnBasedMultiplayer.finishMatch(getApiClient(), match.getMatchId(), new Gson().toJson(updatedData).getBytes(), opponentParticipantResult, myParticipantResult).setResultCallback(new ResultCallback<TurnBasedMultiplayer.UpdateMatchResult>() {
                    @Override
                    public void onResult(TurnBasedMultiplayer.UpdateMatchResult updateMatchResult) {
                        finish();
                    }
                });
    
            } else if (updatedData.getMatchNumber() < NMXGameConfig.MATCHES) {
    
                if (getNextPlayerIndex(updatedData.getMatchNumber()) != getNextPlayerIndex(updatedData.getMatchNumber() - 1)) {
                    Games.TurnBasedMultiplayer.takeTurn(getApiClient(), match.getMatchId(), new Gson().toJson(updatedData).getBytes(), getNextParticipantId());
                } else {
                    Games.TurnBasedMultiplayer.takeTurn(getApiClient(), match.getMatchId(), new Gson().toJson(updatedData).getBytes(), getCurrentPlayerId());
                    startActivity(startNewOnlineGameIntent(this, updatedData, match.getMatchId()));
                }
                finish();
            }
    
    
        }
    
        private String getCurrentPlayerId() {
            return match.getParticipantId(Games.Players.getCurrentPlayerId(getApiClient()));
    
        }
    
        private String getOpponentId() {
            for (String id : match.getParticipantIds()) {
                if (!id.equals(getCurrentPlayerId())) {
                    return id;
                }
            }
            return null;
        }
    
        private int getNextPlayerIndex(int nextRoundIndex) {
            nextRoundIndex = nextRoundIndex + 1;
            return (nextRoundIndex / 2) % 2;
        }
    

1 个答案:

答案 0 :(得分:1)

我终于明白了。

我不知道这是否是所期望的行为,但是当在第6轮播放时播放:_

Games.TurnBasedMultiplayer.finishMatch(getApiClient(), match.getMatchId(), new Gson().toJson(updatedData).getBytes(), opponentParticipantResult, myParticipantResult).setResultCallback(new ResultCallback<TurnBasedMultiplayer.UpdateMatchResult>() {
                @Override
                public void onResult(TurnBasedMultiplayer.UpdateMatchResult updateMatchResult) {
                    finish();
                }
            });

转向player_A,看到那场比赛为&#34;轮到我了#34;。此时玩家A必须拨打Games.TurnBasedMultiplayer.finishMatch(getApiClient(), match.getMatchId())(不玩真实游戏)并且两个玩家的游戏都已完成