2016-06-11 74 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)使其正常工作。 –