Уровни - Cocos2d - PullRequest
       8

Уровни - Cocos2d

3 голосов
/ 01 июля 2011

У меня есть 10 уровней.Как и в обычной игре, вы не можете играть на следующем уровне, если не пройдете уровень до него.Единственные части, которые изменяются на каждом уровне, это один спрайт и позиция спрайта.

Как я могу сделать так, что если вы пройдете уровень, разблокируется следующий уровень, то определите, на каком уровне вы находитесь, и загрузите определенный«детали» (имеется в виду файл спрайта и позиция)?

Любая помощь приветствуется!Спасибо!

РЕДАКТИРОВАТЬ:

Я использовал plist для загрузки всей информации относительно уровня

Сначала я создалPLIST (щелкните правой кнопкой мыши группу, затем выберите ресурсы, «Список свойств»).Затем я определил всю информацию в PLIST.

Затем я установил глобальную переменную для установки номера уровня.Когда пользователь выбирает какой-либо уровень (который является CCMenu), метод изменяет int "level" на правильный номер уровня (например, 1,2,3,4,5).Затем в моем игровом init он проверяет int «уровни» и запускает уровень из PLIST.

Это в моих методах уровней init-сценарий gamescene запускается после проверки уровня.Он загружает PLIST, устанавливает словарь, выбирает фон, добавляет его к слою, затем в файле .h объявляются целые числа "_ballX, _ballY", которые устанавливают значение для позиции шара, расположенной в init!

NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"Levels.plist"];
NSDictionary *plistDataAll = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];
NSDictionary *levelData = [NSDictionary dictionaryWithDictionary:[plistDataAll valueForKey:@"LevelOne"]];

NSString *background = [levelData objectForKey:@"LevelBackground"];

_m = [CCSprite spriteWithFile:background];
_m.anchorPoint = ccp(0, 0);
_m.position = ccp(0, 0);

[self addChild:_m];

_ballX = [[levelData valueForKey:@"BallPositionX"] intValue];
_ballY = [[levelData valueForKey:@"BallPositionY"] intValue];

Надеюсь, это кому-нибудь поможет!Спасибо всем за очень быстрые ответы!

Ответы [ 2 ]

3 голосов
/ 01 июля 2011

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

2 голосов
/ 01 июля 2011

Пусть ваш уровень уровня загрузит данные для уровня из некоторого файла данных (plist-файл, или xml, или любой другой). Затем, когда вы захотите загрузить другой уровень, просто укажите на другой файл данных.

Что касается уровней разблокировки, просто создайте массив уровней вместе с их заблокированным / разблокированным состоянием, которое класс выбора уровней использует для отображения различных уровней. Между играми эта информация может храниться в другом файле данных (опять же, в файле plist, или в xml, или даже с использованием CoreData).

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