创建范围表

时间:2012-11-20 17:21:12

标签: c#

首先,线程名称可能有点奇怪,但我会尽力解释我想在这里做什么,这样你就可以建议我一个好的线程名称。

我想通过检查他的经验来创建一个返回员工级别的函数

如果经验是0~50,他就是1级 如果经验是50~150,那么他就是2级 ......等到100级

我在想的是创建一个const int,它包含每个级别所需的所有exp

public const int Level1 = 50,
                 Level2 = 150...;

那么有没有办法让函数返回我想要的东西?没有使用1000 ++线?!

请不要将我的问题视为垃圾邮件我只是非常困惑,如果需要,我会尽力澄清我的想法。

3 个答案:

答案 0 :(得分:2)

int level = Math.Min(10, experience / 10);

那会吗?

如果你想拥有0-10 - > 1和11-20 - > 2等,改变它:

int level = Math.Min(10, (experience + 9) / 10);

如果在经验收益方面根本没有模式,或者某些非常模糊的模式,你可以使用它:

var level = 1;

var levelRequirements = new int[] {10, 20, 50, 150, 300};
for (int i = 0; i < levelRequirements.Length; i++)
{
    if (levelRequirements[i] > currentExperience)
        break;
    level++;
}

现在我的最后更新:

var level = 0;

var levelRequirement = 0;
var levelRequirementAddition = 50;

while (currentExperience >= levelRequirement)
{
    levelRequirement += levelRequirementAddition;
    levelRequirementAddition += 50;
    level++;
}

答案 1 :(得分:1)

由于级别x所需的xp公式似乎为25*(x²+x)

您可以使用反函数:

public int GetLevel(int xp)
{
    return (int)(Math.Sqrt(1 + 4 * xp / 25) - 1) / 2;
}

答案 2 :(得分:1)

public int ReturLevel(int experience)
{
    return (experience-1)/10 + 1;
}

如果您的意思是“如果经验是1~9”,您可以删除-1中的(experience-1)

如果您的意思是“如果经验是11~20他是2级”,请保留

编辑:

如果您的等级功能体验不符合任何模式,那么您必须为每个模式制作一个单独的案例。

if(experience > 20)
    return level 3;
else if(experience > 10)
    return level 2;
else
    return level 1;

不同的设计模式会影响您添加这些不同案例的方式和方式,但如果您没有模式,则必须添加它们。