2011-07-01 8 views
3

私には10レベルあります。通常のゲームと同じように、レベルを上回らない限り、次のレベルをプレイすることはできません。各レベルで変化する唯一の部分は、スプライトとスプライトの位置です。レベル - Cocos2d

レベルを上げると次のレベルのロックが解除され、次にどのレベルのレベルが区別され、定義された「詳細」(スプライトファイルと位置)がロードされますか?

ご協力いただきありがとうございます。ありがとう!

EDIT:

私はレベル

まずに関するすべての情報をロードするためのplistを使用し、私はPLISTを作成した(右の[グループ]をクリックし、リソースをクリックし、「プロパティリスト」 )。次に、PLIST内のすべての情報を定義しました。

次に、レベル番号を設定するグローバル変数を設定します。ユーザがどちらのレベル(CCMenu)を選択した場合、本方法はintレベルを正しいレベル番号(例えば1,2,3,4,5)に変更する。次に、私のゲームのinitでintレベルをチェックし、PLISTからレベルを実行します。

これは私のレベルメソッドで、レベルチェック後にgamescene initが実行されます。 PLISTをロードし、辞書を設定し、背景を選択してレイヤーに追加し、次にintファイル "_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

あなたのレベルクラスは、データファイル(plistファイルまたはxmlなど)からそのレベルのデータを読み込みましたか?その後、別のレベルをロードするときはいつでも、別のデータファイルをポイントするだけです。

ロック解除レベルについては、レベル選択クラスがさまざまなレベルを表示するために使用するロックされた/ロック解除されたステータスとともにレベルの配列を作成するだけです。ゲームの間に、その情報を別のデータファイル(plistファイル、xml、CoreDataを使用していても)に保存することができます。

3

私が扱う方法は基本的に抽象クラスを持ち、この抽象クラスを各レベルの別のクラスに実装し、そのレベルが完了するたびに次のクラス(レベル)を読み込みます。

+0

基本的に、スプライトなどのレベルごとに別のクラスがありますか?私は10レベルしか持っていないので、私はそれをする必要はないと思っていました。毎回2つのものを変更しています。レベルを確認する方法はありますか?たぶん、レベル番号にグローバルintを使用し、intをチェックして、追加するスプライトとそれをどこに移動するかを決定しますか? – Jonathan

+2

また、その情報をすべて含んだ.plistファイルを作成して、そのシーンのデータをplistから取得するようにすることもできます。 –

+0

これを行う最もクリーンな方法だと思います。変更してすべての定数あなたの抽象クラスまたは単なるスーパークラスのもの。それはたくさんのファイルのように見えるかもしれませんが、私はそうするのが簡単だと思います。 –