我的谷歌链接都是紫色的,我搜索了多少链接以找到这个答案,我尝试了很多不同的建议,我开始感到沮丧,所以我直接来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;
}
}
我已经查明了如何处理百分比,这是我认为我需要去的方式,我只是不知道它是如何工作的或如何实现它。任何帮助都会很棒。提前谢谢。
答案 0 :(得分:1)
如果您想要百分比,则Math.random()
会产生0
和1
之间的数字。您只需将其乘以100
并将其投放到int
即可获得百分比。
int percentage = ((int)(Math.random() * 100));
这将在变量0
中生成99
和percentage
之间的值。
注意 :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
}