【问题标题】:Progress Bar for Leveling System调平系统进度条
【发布时间】:2019-11-16 23:23:00
【问题描述】:

所以这是一个 2 个问题,但基本上我正在为我的 Discord 机器人 (Discord.js) 制作排名/等级系统,并且我在下一个级别的进度条上遇到问题。到目前为止,这是我所得到的:

        const x = "□";
        let progressBarArr = [x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x];

        let currentLevel = Math.ceil(result.allocatedExp/1000)*1000;
        if (currentLevel < 1000) currentLevel = 1000;

        let progressBar = "["+progressBarArr.fill("=", Math.ceil(result.allocatedExp/currentLevel)*35).join('')+"]"

每 1,000 XP 你就升级了,所以说用户的 XP 是 1234 他们将是 1 级和 2 级的 23%。我只需要在进度条类型中显示风格。我现在拥有的代码有效,但前提是他们的 XP 低于 1k,否则栏总是满的。

我的另一个问题对大多数人来说很可能是微不足道的,但我被它难住了,假设用户有 15k xp,我如何从 15000 中得到 15 来表示他们是 15 级?

谢谢!

【问题讨论】:

    标签: javascript node.js math progress-bar discord.js


    【解决方案1】:

    只需带Math.floor(xp / 1000)即可获取玩家当前等级。

    对于进度条,使用模 1000 来检查玩家在最后 1000 和下 1000 之间的距离,然后将结果乘以 35 来计算要显示多少 =s:

    const showBar = xp => {
      const currentLevel = Math.floor(xp / 1000);
      const progress = (xp % 1000) / 1000;
      const progressOutOf35 = Math.round(progress * 35);
      
      const x = "□";
      const barStr = `[${'='.repeat(progressOutOf35)}${'□'.repeat(35 - progressOutOf35)}]`;
      console.log(barStr + ', currntly at level ' + currentLevel);
    };
    
    showBar(1500);
    showBar(3900);
    showBar(15000);

    【讨论】:

      猜你喜欢
      • 2020-10-04
      • 1970-01-01
      • 2021-07-28
      • 2021-03-25
      • 2022-01-24
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多