私は20レベルのiOSゲームを開発しました。開始画面に20レベルの20ボタンのメニューがあります。
私が必要としているのは、たとえば、ユーザーがレベル1を終了しない場合、レベル2ボタンを有効にしないなどです。ユーザーがゲームの一部のレベルを終了すると、次のレベルを有効にする必要があります。
私はその非常に基本的なことを知っています、そしてこれはiosでの私の最初のゲームです。:)
注:私のゲームは完全にcocos2dです。cocos2dのアイデアはどれでも良いです:)
私は20レベルのiOSゲームを開発しました。開始画面に20レベルの20ボタンのメニューがあります。
私が必要としているのは、たとえば、ユーザーがレベル1を終了しない場合、レベル2ボタンを有効にしないなどです。ユーザーがゲームの一部のレベルを終了すると、次のレベルを有効にする必要があります。
私はその非常に基本的なことを知っています、そしてこれはiosでの私の最初のゲームです。:)
注:私のゲームは完全にcocos2dです。cocos2dのアイデアはどれでも良いです:)
アプリデリゲートには、彼が終了したレベルを指す変数を含めることができます。また、その変数に基づいてボタンを有効または無効にする関数もあります。
ボタンを無効にするには、次を使用できます
button.enabled = NO;
ユーザーがレベルを終了したら、レベル到達変数をインクリメントし、ボタンを有効/無効にします
ユーザーのデフォルトを使用した例
設定currentLevel
[[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithInt:currentLevel]
forKey:@"level"];
[[NSUserDefaults standardUserDefaults] synchronize];
currentLevelを取得する
currentLevel = [[[NSUserDefaults standardUserDefaults] valueForKey:@"level"] intValue];
NSUserDefaultsを使用して、プレーヤーが終了したレベルを記憶できます。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"savedGameLevel"] ) {
NSNumber *num = [defaults objectForKey:@"savedGameLevel"];
}
次に、次のようなボタンを有効/無効にできます
for(UIButton *levelBtn in self.yourView.subviews)
{
if(levelBtn.tag == [num intValue] + 1)
[levelBtn setEnabled:YES];
else
[levelBtn setEnabled:NO];
}
//ゲームの状態を保存するため
-(void)saveLevelAsFinished
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"1" forKey:@"savedGameLevel"];
}
その中で「custombutton」class.setBOOL変数を使用してすべてのボタンを作成します。
@interface CustomLabel : UIButton
{
BOOL *is_level_completed;
}
@property (nonatomic, retain)BOOL *is_level_completed;
ボタンの作成中はbtn.is_level_completed=NOを設定します。すべてのレベルを完了すると、btn.is_level_completed = YESを設定します。その後、ビューのチェックインが表示され、完了したレベルの画像が変更されます。
データを保存する
ボタン(1、2、3 ...など)のタグ値を設定し、レベルの完了時に、次のコードを使用してタグ値をNSUserDefaultsに保存します。
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setInteger:btn.tag forKey:@"Completed_level_no"];
viewWillAppearで完了したレベルを取得し、ボタンの画像を変更します。
最初に、次のようにbutton1を除くすべてのボタンを無効にします。
button2.enabled = FALSE;
など、次にユーザーは第1レベルを終了し、次のようにbutton2を有効にします。
button2.enabled = TRUE;
擬似コードは次のとおりです。
for (int i=1; i<=count;i++)
button[i].enable() //This method will enable the button
for (int i=count+1; i<=20; i++)
button[i].disable() //This method will disable the button
基本的に、最初のループはカウント(到達したレベルの数)まで繰り返され、それに応じてボタンが有効になります。同様に、2番目のループは次のボタンから反復を開始し、残りを無効にします。
すべてのボタンが無効として開始された場合、2番目のループを回避できます。