1

ゲーム センター ベースの 2 プレーヤー ゲームを開発しています。ゲームプレイは次のとおりです。

1) プレイヤー 1 がチャレンジを開始します。
2) プレイヤー 1 が手番を行います。(ゲームが尋ねる 5 つの質問に答える)
3) プレーヤー 1 は、配列に保存されている 5 つの質問と自分のスコア情報を送信します。
4) プレイヤー 2 はチャレンジを受け取り、それを受け入れます。
5) プレイヤー 2 は同じ質問に答え、両方のプレイヤーの結果を表示します。
6) プレーヤー 1 は、プレーヤー 2 の結果について通知されます。
7) 試合はセットエンドです。

次のコードを使用しています。

- (IBAction)sendTurn:(id)sender {
GKTurnBasedMatch *currentMatch = [[GCTurnBasedMatchHelper sharedInstance] currentMatch];


NSData *data = [NSKeyedArchiver archivedDataWithRootObject:challengedQuestions]; //sends same same questions answered by player1 to player 2 in an array


NSUInteger currentIndex = [currentMatch.participants indexOfObject:currentMatch.currentParticipant];
GKTurnBasedParticipant *nextParticipant;

NSUInteger nextIndex = (currentIndex + 1) % [currentMatch.participants count];
nextParticipant = [currentMatch.participants objectAtIndex:nextIndex];

for (int i = 0; i < [currentMatch.participants count]; i++) {
    nextParticipant = [currentMatch.participants objectAtIndex:((currentIndex + 1 + i) % [currentMatch.participants count ])];
    if (nextParticipant.matchOutcome != GKTurnBasedMatchOutcomeQuit) {
        NSLog(@"isnt' quit %@", nextParticipant);
        break;
    } else {
        NSLog(@"nex part %@", nextParticipant);
    }
}

if (turnCounter > 0)
{
    for (GKTurnBasedParticipant *part in currentMatch.participants) {
        part.matchOutcome = GKTurnBasedMatchOutcomeTied;
    }
    [currentMatch endMatchInTurnWithMatchData:data completionHandler:^(NSError *error) {
        if (error) {
            NSLog(@"%@", error);
        }
    }];
    statusLabel.text = @"Game has ended";
    LYResultsViewController *controller = [[LYResultsViewController alloc] init];
    [controller setChallenge:self.challenge];
    [self.navigationController pushViewController:controller animated:YES];
}
else {

    [currentMatch endTurnWithNextParticipant:nextParticipant matchData:data completionHandler:^(NSError *error) {
        if (error) {
            NSLog(@"%@", error);
            statusLabel.text = @"Oops, there was a problem.  Try that again.";
        }
        else {
            statusLabel.text = @"Your turn is over.";
            LYResultsViewController *controller = [[LYResultsViewController alloc] init];
            [controller setChallenge:self.challenge];
            [self.navigationController pushViewController:controller animated:YES];
        }
    }];
}
NSLog(@"Send Turn, %@, %@", data, nextParticipant);
turnCounter++;

}

問題は、配列とプレーヤー 1 のスコアの両方を同じ NSData 変数に送信するにはどうすればよいかということです。

プレイヤー 2 の結果をプレイヤー 1 に通知するにはどうすればよいですか?

助けてください

4

1 に答える 1