2016-06-11 34 views
1

在我的比赛中,我希望有像Flappy Bird这样的奖牌。所以在玩家死后,它应该显示正确的奖牌。我做了这段代码:在雪碧套件中死亡后显示奖牌

if self.score > 4{ 
         let platinummedalTexture = SKTexture(imageNamed: "medal_platinum.png") 
         self.platinummedal = SKSpriteNode(texture: platinummedalTexture) 
         self.platinummedal.setScale(1) 
         self.platinummedal.zPosition = 120 
         self.platinummedal.position = CGPointMake(CGRectGetMidX(self.frame)-65, CGRectGetMidY(self.frame)-0 - 10) 
         self.addChild(self.platinummedal) 
        } 

        if self.score > 3{ 
         let goldmedalTexture = SKTexture(imageNamed: "medal_gold.png") 
         self.goldmedal = SKSpriteNode(texture: goldmedalTexture) 
         self.goldmedal.setScale(1) 
         self.goldmedal.zPosition = 120 
         self.goldmedal.position = CGPointMake(CGRectGetMidX(self.frame)-65, CGRectGetMidY(self.frame)-0 - 10) 
         self.addChild(self.goldmedal) 

        } 

        if self.score > 2{ 
         let silvermedalTexture = SKTexture(imageNamed: "medal_silver.png") 
         self.silvermedal = SKSpriteNode(texture: silvermedalTexture) 
         self.silvermedal.setScale(1) 
         self.silvermedal.zPosition = 120 
         self.silvermedal.position = CGPointMake(CGRectGetMidX(self.frame)-65, CGRectGetMidY(self.frame)-0 - 10) 
         self.addChild(self.silvermedal) 
        } 
         if self.score > 1{ 
          let bronzemedalTexture = SKTexture(imageNamed: "medal_bronze.png") 
          self.bronzemedal = SKSpriteNode(texture: bronzemedalTexture) 
          self.bronzemedal.setScale(1) 
          self.bronzemedal.zPosition = 120 
          self.bronzemedal.position = CGPointMake(CGRectGetMidX(self.frame)-65, CGRectGetMidY(self.frame)-0 - 10) 
          self.addChild(self.bronzemedal) 
         } 

在比赛中比分更高达到奖牌,但我把它放在这个数字进行测试。所以我的问题是,如果我得到5分或更高的分数,它应该显示白金奖章,但它只显示4以后的金奖。 其他人运作良好。 (2 =青铜,3 =银,4 =黄金,5 =黄金 - >错)

我不知道如何解决这个问题,也许有人可以帮助我。

回答

0

有可能有更好的方法来做到这一点,虽然因为你想知道什么是错的,这个答案将集中在你的结构上。基本上你和黄金和铂金有冲突,因为没有什么能够阻止if语句继续下降到4,即使分数超过了这个数字。我会建议你先if后使用else if声明:

var score : Int = 5 

if score >= 5 { 
    print("platinum") 
} 
else if score >= 4 { 
    print("gold") 
} 
else if score >= 3 { 
    print("silver") 
} 
else if score <= 2 { 
    print("bronze") 
} 

而且你应该使用小于/与equals一起更大,以确保您的设置适当的分数权奖牌。我个人喜欢自下而上的方法(这与上面所看到的相反),但在这方面它确实是个人偏好。这里有一个例子:

var score : Int = 5 

if score <= 2 { 
    print("bronze") 
} 
else if score <= 3 { 
    print("silver") 
} 
else if score <= 4 { 
    print("gold") 
} 
else if score >= 5 { 
    print("platinum") 
} 
+0

PS:我离开了最后一个(没有奖牌)作为练习,让你明白如何适应。提示:它应该是(小于或等于1),你需要改变(<= 2)使其正常工作。 –