我的resign按钮后面有以下代码:
currentMatch.currentParticipant.matchOutcome = GKTurnBasedMatchOutcomeWon;
nextParticipant.matchOutcome = GKTurnBasedMatchOutcomeLost;
[currentMatch participantQuitInTurnWithOutcome:GKTurnBasedMatchOutcomeLost
nextParticipant:nextParticipant matchData:data
completionHandler:^(NSError *error) {
if (error) {
NSLog(@"%@", error);
}
else {
[statusLabel setString:@"You resigned"];
}];
它说“你辞职了”但对手没有收到通知,转牌就转给了他。对手现在无法进行任何移动,否则会导致错误。完成游戏的唯一方法是让对手也辞职。
任何人都可以看到上述代码有什么问题吗?
答案 0 :(得分:2)
上述代码没有任何问题。游戏中心基于回合的方式是下一个玩家需要处理轮到他并决定游戏现在是否已结束并退出或继续游戏(如果超过2个玩家更有意义)。所以这是你游戏代码的一部分。
只要您不再将已退出的播放器设置为下一个参与者,您就应该可以继续播放。你不能这样做。 (如果你想继续游戏,你应该把结果设置为GKTurnBasedMatchOutcomeQuit而不是Lost)
如果您真的想在那一刻为所有玩家结束游戏,您可以根据需要设置该匹配参与者的所有结果,然后使用
[currentMatch endMatchInTurnWithMatchData:data completionHandler:(void (^)(NSError *error))completionHandler];
为所有玩家结束游戏。