我的奖金达到一定分数的方法有什么问题?

问题描述:

你好我是新来的所有这一切,只需要一点帮助。我有4枚奖牌,玩家在达到一定水平时应该看到。我注意到的问题是我可能达到20分并获得第一枚奖牌,但如果我达到medal_02的下一个分数,它仍会显示medal_01。我认为这可能是因为我告诉它如果(得分> = 20)显示medal_01,但如果它是下一个得分,则不说,因为它在技术上仍然大于20,它将显示medal_01。我的奖金达到一定分数的方法有什么问题?

谢谢

if(_score >= 2){ 
    SKSpriteNode *medal = [SKSpriteNode spriteNodeWithImageNamed:@"medal_1"]; 
    medal.position = CGPointMake(CGRectGetMaxX(self.frame)*1/4 + 23, CGRectGetMidY(self.frame) + 23); 
    [gameOver addChild:medal]; 
}else if(_score >= 4){ 
    SKSpriteNode *medal = [SKSpriteNode spriteNodeWithImageNamed:@"medal_2"]; 
    medal.position = CGPointMake(CGRectGetMaxX(self.frame)*1/4 + 23, CGRectGetMidY(self.frame) + 23); 
    [gameOver addChild:medal]; 
}else if(_score >= 30){ 
    SKSpriteNode *medal = [SKSpriteNode spriteNodeWithImageNamed:@"medal_3"]; 
    medal.position = CGPointMake(CGRectGetMaxX(self.frame)*1/4 + 23, CGRectGetMidY(self.frame) + 23); 
    [gameOver addChild:medal]; 
}else if(_score >= 50){ 
    SKSpriteNode *medal = [SKSpriteNode spriteNodeWithImageNamed:@"medal_4"]; 
    medal.position = CGPointMake(CGRectGetMaxX(self.frame)*1/4 + 23, CGRectGetMidY(self.frame) + 23); 
    [gameOver addChild:medal]; 
} 

你应该扭转你if S的顺序;你的第一枚奖牌对于第一枚奖牌将是真实的,但在此之后保持不变,以防其他奖牌的任何if得到测试。

首先你可以制作出创造奖牌的方法。

- (void)setMedalWithName:(NSString *)medalName 
{ 
    SKSpriteNode *medal = [SKSpriteNode spriteNodeWithImageNamed:medalName]; 
    medal.position = CGPointMake(CGRectGetMaxX(self.frame)*1/4 + 23, CGRectGetMidY(self.frame) + 23); 
    [gameOver addChild:medal]; 
} 

之后我不知道你为什么检查score> =,如果用户可以达到任何级别,那么你不需要检查。你应该检查当前分数是否是某个数字。如果有情况下,用户可以跳过分数数量,比需要检查

if (_score >= 2 && _score < 4) 
{ 
    [self setMedalWithName:"medal_1"]; 
} 
else if (_score >= 4 && _score < 10) 
{ 
    [self setMedalWithName:"medal_2"]; 
} 

,但你也可以使用这个伪代码:

/// method for calling 
if (_score == 50) 
{ 
[self setMedalWithName:"medal_4"]; 
} 
else if(_score == 25) 
{ 
///etc 
} 
+0

'gameOver'可能是本地的原始方法。返回勋章并让调用者执行'addChild:'可能会更好 – 2014-12-05 20:00:10