繁体   English   中英

COCOS-2d:需要在游戏中实现关卡进度的想法[关闭]

[英]COCOS-2d:NEED Idea to implement Level progress in games [closed]

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

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

我知道它的基本知识,这是我在ios中的第一款游戏。所以请保持温柔,感谢任何想法。 :)

注意:我的游戏完全是cocos 2d。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.set 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中获取完成的级别并更改按钮的图像。

最初,您将除button1之外的所有其他按钮都禁用,如下所示:

button2.enabled = FALSE;

等等,然后用户完成第一个级别的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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM