0

我开发了一个 20 级的 ios 游戏。我在开始屏幕上有菜单,其中有 20 个级别的 20 个按钮。

我需要的是,例如,如果用户未完成第 1 级,则不应启用第 2 级按钮,依此类推。当用户在游戏中完成某些级别时,应启用下一个级别。

我知道它非常基本,这是我在 ios 中的第一个游戏。所以请温柔,任何想法将不胜感激。:)

注意:我的游戏完全是 cocos 2d。cocos2d 中的任何想法都是好的 :)

4

5 回答 5

2

在您的应用程序委托中,您可以有一个指向他完成的级别的变量,并且您还将有一个函数,该函数将基于该变量启用和禁用按钮

要禁用按钮,您可以使用

button.enabled = NO;

当用户结束一个级别时,增加级别达到变量和启用/禁用按钮

使用用户默认值的示例

环境currentLevel

[[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithInt:currentLevel]
                                         forKey:@"level"];
[[NSUserDefaults standardUserDefaults] synchronize];

获取 currentLevel

currentLevel = [[[NSUserDefaults standardUserDefaults] valueForKey:@"level"] intValue];
于 2012-07-03T12:14:19.730 回答
2

你可以使用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"];

   }
于 2012-07-03T12:18:04.947 回答
1

使用“custombutton”类创建所有按钮。在其中设置 BOOL 变量。

@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 中获取已完成的关卡并更改按钮的图像。

于 2012-07-03T12:30:37.080 回答
-1

最初,您使除 button1 之外的每个按钮都禁用,如下所示:

button2.enabled = FALSE;

等,然后用户完成第一级使按钮2启用如下:

button2.enabled = TRUE;
于 2012-07-03T12:16:46.540 回答
-1

这是一个伪代码:

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

基本上,第一个循环迭代直到计数(即达到的级别数)并相应地启用按钮。同样,第二个循环从下一个按钮开始迭代并禁用其余的。

如果所有按钮都被启动为禁用,则可以避免第二个循环。

于 2012-07-03T12:18:35.873 回答