2014-11-22 41 views
0

我不知道這是否是問這樣一個問題的合適地點,但我希望如此!我正在開發一款有趣的遊戲,你可以在不同的球隊獲得積分,以便在足球比賽中進行每次踢球。當比賽結束時,我正在計算每支球隊的得分並按最佳得分排序。通過評分確定團隊位置的不同結果

所以說:

team 1 = 9 points 
team 2 = 7 points 
team 3 = 20 points 

然後我用最好的一個排序的,所以位置是:

team 3 = 20 points 
team 1 = 9 points 
team 2 = 7 points 

然後我打印在屏幕上,並說像「團隊3以20分排在第一位「。 「第一隊......第二隊」,「第二隊......第三隊」。

問題是當一些團隊得到相同的分數。所以說,它最終是這樣的:

team 1 = 9 points 
team 2 = 9 points 
team 3 = 20 points 

在這種情況下,我想它打印這樣的:「團隊3亮起以20分第一名」,「1隊和2隊亮起同積9分位居第二每」。

以下是我一直在思考和思考的問題,但我無法想出如何使代碼考慮共享第一/第二/第三位的智能解決方案。

這裏是我當前的代碼,不考慮是:

for var i = 0; i < teamScoreArray.count; ++i { //sorted array by best score first 
      var tmpTeam:Team = teamScoreArray[i] 

      if i == 0{ 
       firstPlacelbl.text = "On first place comes \(tmpTeam.teamName) with \(tmpTeam.teamScore) points" 
      } 
      if i == 1{ 
       secondPlacelbl.text = "On second place comes \(tmpTeam.teamName) with \(tmpTeam.teamScore) points" 
      } 
      if i == 2{ 
       thirdPlacelbl.text = "On third place comes \(tmpTeam.teamName) with \(tmpTeam.teamScore) points" 
      } 
      if i == 3{ 
       fourthPlacelbl.text = "On fourth place comes \(tmpTeam.teamName) with \(tmpTeam.teamScore) points" 
      } 
      prevScore = tmpTeam.teamScore 
     } 

有誰有如何使這個任何想法?

預先感謝您!

回答

1

從以前的一個增加排名僅在當前迭代的分數不同:

var rank = 0 
var previousScore = 0 

for team in teamScoreArray { 
    if team.teamScore != previousScore { 
     rank += 1 
    } 

    println("Rank \(rank): \(team.teamName)") 

    previousScore = team.teamScore 
} 
+0

稍後我會嘗試了這一點今天,並且你的答案是正確的!謝謝 – user2099024 2014-11-23 12:48:42