• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何计算 RPG 等级进度百分比

[复制链接]
菜鸟教程小白 发表于 2022-12-13 03:58:41 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在设计一款 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap