2

我的辞职按钮后面有以下代码:

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"];
                                                    }];

它说“你辞职”,但对手没有收到通知,轮到他了。对手现在不能出手,否则会出错。结束比赛的唯一方法是让对手也辞职。

任何人都可以看到上面的代码有什么问题吗?

4

1 回答 1

2

上面的代码没有任何问题。Way Game Center Turn 基于的作品是下一个玩家需要处理他的回合并决定游戏现在是否结束并退出或继续游戏(如果超过 2 个玩家更有意义)。所以这是你游戏代码的一部分。

只要您不再将已辞职的玩家设置为下一个参与者,您就应该能够继续玩。这是你做不到的。(如果你想继续游戏,你应该将结果设置为 GKTurnBasedMatchOutcomeQuit 而不是 Lost)

如果您真的想在那一刻为所有玩家结束游戏,您可以根据需要设置该比赛参与者的所有结果,然后使用

[currentMatch endMatchInTurnWithMatchData:data completionHandler:(void (^)(NSError *error))completionHandler];

结束所有玩家的游戏。

于 2012-05-04T10:01:30.397 回答