#iphone #ios #game-center
#iPhone #iOS #игровой центр
Вопрос:
В настоящее время я создаю игру Game Center и использую доступные одноранговые функции. Тем не менее, я хотел бы выбрать одного из игроков (2 игрока) в качестве ведущего, чтобы обеспечить синхронизацию.
Каков наилучший способ выбрать хост (даже случайным образом) из доступных игроков и убедиться, что другое устройство знает, какой хост был выбран?
Ответ №1:
Это хороший, простой учебник с кодом, который демонстрирует, как это сделать. Они случайным образом выбирают одного из одноранговых узлов в качестве хоста. Надеюсь, это поможет!
Комментарии:
1. Спасибо, трюк со случайными числами должен сработать :). Думаю, я был настолько погружен в попытки найти постоянную и постоянную строку, похожую на PlayerID, а затем сравнивал ее, что я даже близко не подошел к мысли об этом. Еще раз спасибо
Ответ №2:
уже опубликованный ответ, все еще здесь пример кода для этого
NSString *uid = [[UIDevice currentDevice] uniqueIdentifier];
CoinTossID = [uid hash];
теперь в функции делегирования
- (void)match:(GKMatch *)match didReceiveData:(NSData *)data fromPlayer:(NSString *)playerID
{
NSMutableArray *ReceivedArray = [[NSMutableArray alloc] init];
ReceivedArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
int flag = [[ReceivedArray objectAtIndex:0] intValue];
[ReceivedArray removeObjectAtIndex:0];
int CoinValue = [ReceivedCoinTossID intValue];
if(CoinValue > CoinTossID)
{
isPlayer1 = YES;
}
else
{
isPlayer1 = NO;
}
}
Комментарии:
1. Спасибо, использование идентификатора устройства тоже должно работать. Однако обратите внимание, что [[UIDevice currentDevice] uniqueIdentifier] устарел в iOS 5. Возможно, использование [GKLocalPlayer LocalPlayer].PlayerID будет работать лучше.