2017-06-01 75 views
-2

我正在做一個簡單的蛇遊戲,並且這是一個返回變量的函數,該變量指定了另一個函數中使用的蛇的速度。它工作得很好,但我想知道是否有辦法將我所有的條件都整合到一起?我想25每次由20 get_score()值的增加而前三如果我的代碼條件,使功能減退的返回整數值:指定每次變量增加特定量的條件

unsigned int get_speed(void) { 
     if(get_score() < 20) {     // spd increases by 25 as score gets higher (every 20 interval) 
      return 600; 
     } else if(get_score() < 40) { 
      return 575; 
     } else if(get_score() < 60) { 
      return 550; 
     } 
} 
+1

它是簡單的算術。除以20,然後乘以25. – Barmar

+1

我投票結束這個問題作爲題外話,因爲它質量很差。 – gsamaras

+0

@gsamaras對你的鉑金質量標準表示祝賀......但這個問題並不是真的很差......問題陳述,代碼示例。這只是一個初學者問題,這就是全部。 – grek40

回答

1

雖然你的具體情況,如Barmar說在評論中,用簡單的數學可以最優雅地解決,你具體說「每增加一個條件」。

switch(get_score()/20) { 
case 0: return 600; 
case 1: return 575; 
case 2: return 550; 
} 

請注意,在這種情況下,我不會在每種情況下中斷,因爲它們都是回報。如果你的情況沒有回來,你必須使用一個。


根據評論,我也會解釋爲什麼我們的方法有效。處理整數類型時,您的CPU將簡單地捨去多餘的數字。例如,「舍入到最近的20」可以表示爲x = x/20 * 20。對於0 <= x < 80,x/20只能等於0,1,2或3.

+1

可能值得有幾句關於爲什麼Barmers接近工作,並保存使用...整數算術不是簡單的數學 - 其他建議甚至不會工作但會導致每個分數的結果值穩步下降 – grek40