OStack程序员社区-中国程序员成长平台

标题: ios - 如何计算 RPG 等级进度百分比 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 03:58
标题: ios - 如何计算 RPG 等级进度百分比

我正在设计一款 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-推荐答案


嗯。一种简单的方法是将级别上限值存储在数组中。根据小于的最大值找到玩家的当前等级。 (一级是 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/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4