我正在设计一款 RPG 游戏,用户可以根据 XP 积累经验值 (XP) 并升级。计算当前水平很简单; if else 似乎是最有效的。
我想计算当前关卡的进度百分比。假设我有 10 个关卡,每个关卡的上限为指数值:
typedef NS_ENUM(NSInteger, RPGLevelCap) {
RPGLevelCap1=499,
RPGLevelCap2=1249,
RPGLevelCap3=2249,
RPGLevelCap4=3499,
RPGLevelCap5=4999,
RPGLevelCap6=6999,
RPGLevelCap7=9999,
RPGLevelCap8=14999,
RPGLevelCap9=19999,
RPGLevelCap10=19999 // Anything beyond previous level is Lvl 10; display as 100%
};
根据当前等级计算用户等级进度的有效且易于理解的方法是什么?
if else 语句既难以理解也难以维护,但可能相当有效:
float levelProgression=0;
// Calculate level progression as a fraction of 1
if(xp <= RPGLevelCap1)
{
levelProgression = ((float)xp / RPGLevelCap1);
}
else if (xp <=RPGLevelCap2)
{
levelProgression = ((float)(xp-RPGLevelCap1) / (RPGLevelCap2-RPGLevelCap1));
}
else if (xp <=RPGLevelCap3)
{
levelProgression = ((float)(xp-RPGLevelCap2) / (RPGLevelCap3-RPGLevelCap2));
}
...
else if (xp>RPGLevelCap10)
{
levelProgression = 1;
}
鉴于等级上限不一致...我应该如何处理这个问题?
Best Answer-推荐答案 strong>
嗯。一种简单的方法是将级别上限值存储在数组中。根据小于的最大值找到玩家的当前等级。 (一级是 0 到 499,二级是 500 到 1249 等)使用循环来查找用户的级别,而不是一组 if/else 语句。
然后计算玩家当前关卡的范围,(end_of_range - start_of_range)
0 - 499 = 499
500 - 1249 = 749,
等等
如果玩家得分为 600,则他是 2 级角色,在 500-1249 范围内。
他在 600-500 或 100 分的范围内。 (600-500)/749*100 是玩家在该范围内的完成百分比。在本例中完成了 13.35%。
关于ios - 如何计算 RPG 等级进度百分比,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/27454457/
|