【问题标题】:cocos2d High score it messed upcocos2d 高分搞砸了
【发布时间】:2012-06-27 19:05:45
【问题描述】:

我尝试设置我的高分,如果超过高分,它将显示在高分中,我已经知道了一些东西,但是现在一旦超过高分,它将需要相同数量的高分上去一分。例如,每次击杀获得一分,如果高分是 7 分,则需要再击杀 7 次才能在高分板上达到 8 分。一旦您获得高分,分数就会再次重置,并在高分中获得相同数量的分数以上升一次。希望有道理。

这里是代码

.h 文件

 int _score;
    int _oldScore;
   CCLabelTTF *_scoreLabel;
    @property (nonatomic, assign) CCLabelTTF *scoreLabel;

.m 文件

     _score = [[NSUserDefaults standardUserDefaults] integerForKey:@"score"];           


     _oldScore = -1;
     self.scoreLabel = [CCLabelTTF labelWithString:@"" dimensions:CGSizeMake(100, 50) alignment:UITextAlignmentRight fontName:@"Marker Felt" fontSize:32];
     _scoreLabel.position = ccp(winSize.width - _scoreLabel.contentSize.width, _scoreLabel.contentSize.height);
     _scoreLabel.color = ccc3(255,0,0);
     [self addChild:_scoreLabel z:1];     



    if (_score > _oldScore) {

   _oldScore = _score;

    [_scoreLabel setString:[NSString stringWithFormat:@"score%d", _score]];

    [[NSUserDefaults standardUserDefaults] setInteger:_oldScore forKey:@"score"];

   [[NSUserDefaults standardUserDefaults] synchronize];          


      _score = 0;         

}

  }

现在我知道 _score = 0;休息了董事会,但一旦获得高分,它就会继续重置。另一个例子是,如果你在高分板上有 12 分,则需要 24 分的击杀才能达到高分 13 分。

如果我取出 _score=0,还有一件事;分数会不断累积,但不会重新开始。

【问题讨论】:

  • 我在 if 语句上没有看到你的右括号,所以很难判断逻辑在做什么。能否在底部再添加几行代码,以便我查看 if 语句何时终止?
  • 只需要两个花括号就可以了

标签: iphone xcode4 cocos2d-iphone


【解决方案1】:

我不明白这些行:

 _score = [[NSUserDefaults standardUserDefaults] integerForKey:@"score"];           
 _oldScore = -1;

[[NSUserDefaults standardUserDefaults] integerForKey:@"score"] 不应该是旧分数吗? 为什么将 _oldScore 设置为 -1?

也许我错过了什么......

【讨论】:

  • ns userdefualts 将代码保存为旧分数,-1 不需要诚实
  • 是的,但我认为_oldScore 是从 NSUserDefaults 中检索到的。您将最后的最高分存储在那里,然后与当前的比较...
  • @JhonDoe 我认为您需要做的是开始学习编程,而不是复制以前的问题答案,然后要求人们添加您需要的下一点编码。我们来这里是为了帮助,但不是为你做你的工作。您刚刚接受了我的回答并将其发布在这里并要求人们做下一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多