Android 回合制多人游戏未完成

Android 回合制多人游戏未完成,android,Android,我的逻辑是第一个玩家创建一个游戏,然后轮到他。第二名球员轮到他,以终点结束比赛 Games.TurnBasedMultiplayer.finishMatch(getApiClient(), mMatch.getMatchId(), mTurnData.persist(), creatorResult, opponentResult) .setResultCallback(new ResultCallback<TurnBased

我的逻辑是第一个玩家创建一个游戏,然后轮到他。第二名球员轮到他,以终点结束比赛

Games.TurnBasedMultiplayer.finishMatch(getApiClient(), mMatch.getMatchId(),
                mTurnData.persist(), creatorResult, opponentResult)
                .setResultCallback(new ResultCallback<TurnBasedMultiplayer.UpdateMatchResult>() {
                    @Override
                    public void onResult(TurnBasedMultiplayer.UpdateMatchResult result) {
                        processResult(result);
                    }
                });
但是match.getTurnStatus不匹配\u回合\u状态\u完成

我怎样才能真正结束一场比赛?第一个用户应该在玩家2完成游戏后看到赢家

示例代码假定必须为所有玩家调用finish。这是唯一可能的办法吗?玩家一收到通知,游戏结束时该轮到他了。这太令人恼火了

        // Note that in this state, you must still call "Finish" yourself,
        // so we allow this to continue.
        showWarning("Complete!",
                "This game is over; someone finished it!  You can only finish it now.");
谢谢

是的,我认为这是一个错误

我找到了一个解决办法:

您可以检查状态是否为MATCH_COMPLETED,并调用OnTurnBasedMatch Received上第一个用户的finishMatch

此解决方法将“匹配”状态设置为“完成”,并且第一个用户看到匹配已完成且结果正确

像这样:

 @Override
public void onTurnBasedMatchReceived(TurnBasedMatch match) {
    Toast.makeText(this, "A match was updated.", TOAST_DELAY).show();

    if (match.getStatus()==2){
     Games.TurnBasedMultiplayer.finishMatch(mGoogleApiClient, mMatch.getMatchId())
     .setResultCallback(new ResultCallback<TurnBasedMultiplayer.UpdateMatchResult>() {
         @Override
         public void onResult(TurnBasedMultiplayer.UpdateMatchResult result) {
             processResult(result);
         }
     });
    }
int 2表示匹配状态为“已完成”。 这项工作对我很好,但只是一个解决办法,我发送一个错误报告谷歌。。。 你可以在这里看到:

 @Override
public void onTurnBasedMatchReceived(TurnBasedMatch match) {
    Toast.makeText(this, "A match was updated.", TOAST_DELAY).show();

    if (match.getStatus()==2){
     Games.TurnBasedMultiplayer.finishMatch(mGoogleApiClient, mMatch.getMatchId())
     .setResultCallback(new ResultCallback<TurnBasedMultiplayer.UpdateMatchResult>() {
         @Override
         public void onResult(TurnBasedMultiplayer.UpdateMatchResult result) {
             processResult(result);
         }
     });
    }