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);
}
});
}