Отображение результатов или игровой статистики по завершенной игре - PullRequest
1 голос
/ 05 сентября 2011

Пожалуйста, кто-нибудь может указать мне на любой учебник или дать мне краткое описание шагов, которые нужно предпринять, чтобы показать, как отображать статистику игры, например, "очки", когда игра заканчивается на Cocos2d-iphone, мне нужно некоторое руководство, чтобы реализоватьсцена завершения уровня для игры, где по завершении или в конце игры появляется экран завершения уровня, на котором отображаются результаты, использованное время и имя игрока, как видно в большинстве игр.Я провел некоторое исследование, и до сих пор я видел примеры, когда состояние игры было сохранено с использованием NSKeyedArchiver и NSKeyedUnarchiver, как показано в коде ниже:

В методе applicationWillTerminate в appdelegate.mm

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,   
NSUserDomainMask,YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *gameStatePath = [documentsDirectory  
      stringByAppendingPathComponent:@"gameState.dat"];

NSMutableData *gameData;
NSKeyedArchiver *encoder;
gameData = [NSMutableData data];
encoder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:gameData];

[encoder encodeDouble:[[GameManager sharedGameManager]bestTime] forKey:@"bestTime"];
[encoder encodeInteger:[[GameManager sharedGameManager]livesLeft]  
           forKey:@"livesLeft"];
[encoder encodeInteger:[[GameManager sharedGameManager]currentLevel] 
            forKey:@"currentLevel"];

[encoder finishEncoding];
[gameData writeToFile:gameStatePath atomically:YES];
[encoder release];[/code]

и в моем файле levelComplete.mm у меня есть

   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,    
   NSUserDomainMask, YES);

   NSString *documentDirectory = [paths objectAtIndex:0];

   NSMutableData *gameData;
   NSKeyedUnarchiver *decoder;

   NSString *documentPath = [documentsDirectory    
   stringByAppendingPathComponent:@"gameState.dat"]; 
   gameData = [NSData dataWithContentsOfFile:documentPath];

   if(gameData) {

   decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:gameData];

   [[GameManager sharedGameManager] setCurrentLevel:[decoder   
            decodeIntegerForKey:@"currentLevel"]];
  [[GameManager sharedGameManager] setlivesLeft:[decoder   
                 decodeIntegerForKey:@"livesLeft"]];
[[GameManager sharedGameManager] setBestTime:[decoder   
              decodeDoubleForKey:@"bestTime"]];

[decoder release];

После этой информации я, похоже, застрял в следующем шаге, и я не знаю, является ли это правильным способомидти.Я буду очень рад любым предложениям или планам относительно пути реализации этого.

Также в моем проекте есть одноэлементный класс, gameplayLayer и слой HUD, где в настоящее время отображаются эти переменные.

Спасибо

1 Ответ

1 голос
/ 05 сентября 2011

Здесь - это отличный небольшой урок о том, как сделать простое приложение для космического шутера.У меня есть случай в конце игры, который отображает некоторую информацию.Есть также много других учебных пособий о том, как выполнять базовое программирование игр, с большим количеством примеров кода.Надеюсь, что поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...