每10次后有效升级吗?

时间:2014-09-28 14:04:37

标签: c#

我正在努力使它在每次说出一个值200之后,它会将全局变量增加1.正如你在下面看到的那样,问题就是那个,它没有任何形状或形式有效,但确实效果不佳。

总体而言,我希望如何使用此功能,以便当 GV.TotalNumberValue 超过某个数字时,假设为200, GV.TotalLevel 将会增加1并更新文本,每当 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;
        }
    }

2 个答案:

答案 0 :(得分:4)

好吧,你可以使用简单的数学:

  • 从值中推断出级别,如下所示:

    int totalLevel = value / 200;
    

    这是有效的,因为整数除法总是向下舍入。

  • 或者,如果您知道value刚刚增加,您可以检测到这样的水平边界:

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

答案 1 :(得分: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.