2

我正在使用 gamecenter 编写一个基于回合的 iOS 游戏,并且在找到当前坐在部分填充游戏中的每个人时遇到问题。我应该如何穿过我的比赛的参与者阵列并拉出坐着的球员?任何时候游戏中都会有 [1,8] 名玩家,我正在尝试用那些被填满的人填充大厅。

4

2 回答 2

2

以下是我为“GKTurnBasedMatch”类别编写的两种便捷方法:

@implementation GKTurnBasedMatch (Convenience)

- (NSArray *) remainingPlayingParticipants;
{
    NSMutableArray *participants = [NSMutableArray array];

    // start searching at the current player
    NSUInteger currentIndex = [self.participants indexOfObject:self.currentParticipant];

    for (int i = 0; i < [self.participants count]; i++)
    {
        GKTurnBasedParticipant *part = [self.participants objectAtIndex:(currentIndex + 1 + i)
                                                                        % self.participants.count];
        if (part.matchOutcome == GKTurnBasedMatchOutcomeNone)
        {
            [participants addObject:part];
        }
    }

    return [NSArray arrayWithArray:participants];
}


- (NSArray *) remainingPlayingAndMatchedOpponents;
{
    NSMutableArray *participants = [NSMutableArray array];
    GKTurnBasedParticipant *localParticipant = [self localParticipant];

    // start searching at the current player
    NSUInteger currentIndex = [self.participants indexOfObject:self.currentParticipant];

    for (int i = 0; i < [self.participants count]; i++)
    {
        GKTurnBasedParticipant *part = [self.participants objectAtIndex:(currentIndex + 1 + i)
                                        % self.participants.count];
        if (part.matchOutcome == GKTurnBasedMatchOutcomeNone
            && part.status == GKTurnBasedParticipantStatusActive
            && part != localParticipant)
        {
            [participants addObject:part];
        }
    }

    return [NSArray arrayWithArray:participants];
}
@end
于 2013-05-10T10:47:40.940 回答
1

编辑:

按照这两个链接中的教程进行操作,您应该已准备就绪..

第 1部分-第 2 部分

简而言之,每个GKTurnBasedMatch对象都有一个NSArray属性,称为participantsGKTurnBasedMatchParticipant对象填充。你可以遍历这个数组并查看游戏中的每个参与者。status查看这些实例(种类GKTurnBasedParticipantStatus)的属性以查看参与者是否积极就座或拒绝等是明智的。希望这会有所帮助。

于 2013-05-10T05:08:18.863 回答