回合制多人游戏未完成

时间:2014-10-25 13:41:30

标签: android

我的逻辑是第一个创造游戏的玩家轮到他了。第二个玩家轮到他并以完成()结束比赛。

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

第一个用户现在可以在Play游戏内置收件箱中获得现在轮到他的状态。

match.getStatus() == MATCH_STATUS_COMPLETE

但是match.getTurnStatus()不是MATCH_TURN_STATUS_COMPLETE

我如何真正结束游戏?在玩家2完成游戏后,第一个用户应该看到胜利者。

示例代码假定必须为所有玩家调用结束。这是唯一可行的方法吗?玩家一获得通知,随着游戏结束,轮到他了。这太刺激了。

        // 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.");

由于

1 个答案:

答案 0 :(得分:0)

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

我找到了解决方法:

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

此解决方法将MATCH_TURN_STATUS设置为完成,第一个用户看到匹配完成且结果正确。

像这样:

 @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是MATCH_STATUS_COMPLETED。 这项工作对我有好处,但只是一种解决方法,我向谷歌发送一个错误报告... 你可以在这里看到它: https://code.google.com/p/play-games-platform/issues/detail?id=191&thanks=191&ts=1414438242