首先,线程名称可能有点奇怪,但我会尽力解释我想在这里做什么,这样你就可以建议我一个好的线程名称。
我想通过检查他的经验来创建一个返回员工级别的函数
如果经验是0~50,他就是1级 如果经验是50~150,那么他就是2级 ......等到100级
我在想的是创建一个const int,它包含每个级别所需的所有exp
public const int Level1 = 50,
Level2 = 150...;
那么有没有办法让函数返回我想要的东西?没有使用1000 ++线?!
请不要将我的问题视为垃圾邮件我只是非常困惑,如果需要,我会尽力澄清我的想法。
答案 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;
不同的设计模式会影响您添加这些不同案例的方式和方式,但如果您没有模式,则必须添加它们。