2014-09-28 56 views
0

我試圖讓每個說200的值後,它會增加一個全局變量1.正如你可以看到下面的問題,我有一個,它不以任何形式或形式高效,實際上效果不佳。每10分鐘後有效提升水平嗎?

怎麼會喜歡我的工作會是這樣,當GV.TotalNumberValue命中過去一定數量的,比方說200,GV.TotalLevel將一個增加和更新文本的整體,這每次都會發生,GV.TotalNumberValue增加200.

最後,如果這是要檢查數字是否持續不斷,我應該有一個事件,如按鈕點擊或定時器?非常感謝您的幫助,謝謝。

void LevelMod() 
    { 
     if (GV.TotalNumberValue >= 200) 
     { 
      GV.TotalLevel = GV.TotalLevel + 1; 
      lblLevel.Text = string.Format("{0}{1}", GV.LevelPrefix, GV.TotalLevel); 
     } 
     else if (GV.TotalNumberValue >= 400) 
     { 
      GV.TotalLevel = GV.TotalLevel + 1; 
      lblLevel.Text = string.Format("{0}{1}", GV.LevelPrefix, GV.TotalLevel); 
     } 
     else 
     { 
      return; 
     } 
    } 

回答

1

或許使用類似整數除法:

void LevelMod() 
{ 
    // I assume the level variables are integrals, so perform an integer division 
    if (GV.TotalNumberValue/200 > GV.TotalLevel) 
    { 
     GV.TotalLevel = GV.TotalNumberValue/200; 
     lblLevel.Text = string.Format("{0}{1}", GV.LevelPrefix, GV.TotalLevel); 
    } 
} 

本質上,您的TotalLevel總是TotalNumberValue/200。這假定GV.TotalNumberValue是一個整數類型which always rounds the result towards zero.

+0

非常好!喜歡它,非常感謝:) – SirTiggs 2014-09-30 13:34:58

4

好了,你可以用簡單的數學:

  • 無論是從價值推導出水平,就像這樣:

    int totalLevel = value/200; 
    

    這工作,因爲整數除法總是捨去。

  • 或者,如果你知道value剛剛遞增,您可以檢測到這樣的水平邊界:

    bool shouldLevelUp = (value % 200) == 0; 
    if (shouldLevelUp) 
        ++totalLevel; 
    
+0

如果你由於某種原因跳過從'199'到'201'的值,它將不會升級。一個小問題可能或主要的錯誤取決於其他的實現。 – ja72 2014-09-28 14:25:27

+0

@ ja72是的,第一個解決方案是更好的IMO。當我說*如果你知道'價值'剛剛增加*我暗示它總是遞增1. – 2014-09-28 14:27:27

+0

@LucasTrzesniewski感謝您的意見!欣賞它。 – SirTiggs 2014-09-30 13:35:40