计算战斗系统的关键几率

时间:2014-01-23 23:33:47

标签: java percentage

我的谷歌链接都是紫色的,我搜索了多少链接以找到这个答案,我尝试了很多不同的建议,我开始感到沮丧,所以我直接来Stack。我试图增加英雄处理攻击的关键几率,所以或多或少我只是试图弄清楚如何计算出现事件发生的几率。这是我现在的代码块:

public void attack(){
    enemydmg = hero.att - enemy.def;
    herodmg = enemy.att - hero.def;
    enemy.hp -= enemydmg;
    hero.hp -= herodmg;

    if(Math.random() < hero.critchnc){
        enemydmg = enemydmg * 2;
    }
}

我已经查明了如何处理百分比,这是我认为我需要去的方式,我只是不知道它是如何工作的或如何实现它。任何帮助都会很棒。提前谢谢。

3 个答案:

答案 0 :(得分:1)

如果您想要百分比,则Math.random()会产生01之间的数字。您只需将其乘以100并将其投放到int即可获得百分比。

int percentage = ((int)(Math.random() * 100));

这将在变量0中生成99percentage之间的值。

注意 Here's a link到工作代码,生成10随机百分比。

答案 1 :(得分:0)

让我们hero.critchnc为0到1之间的浮动数字(0没有关键的可能性,1个总是关键),然后你有:

if(Math.random() >= (1 - hero.critchnc))
{
   // Critical hit
}

答案 2 :(得分:0)

你实际上需要一个有机会发生作为英雄暴击几率的随机值,例如,如果一个英雄有17%的暴击几率并且你有一个随机函数给你100个值中的一个,那么其中17个值(以任何方式选择)实际上应该发生暴击(即如果所有一百个值都有相同的发生机会)将其转换为代码:

我们将使用Random.nextInt(99);这应该给我们一百个(几乎均匀分布的)值。如果英雄暴击几率表示为0到100之间的整数(例如17),那么nextInt返回的值是0到16之间的数字的概率实际上是17%,所以我们可以在这样的代码中表达:

    rand = Random.nextInt(99);
    if(rand <= critchance - 1){
       //we have a crit
    }