代码之家  ›  专栏  ›  技术社区  ›  Milad

在rpg游戏中创建机会函数

  •  -1
  • Milad  · 技术社区  · 6 年前

    我正在创建一个服务器端的RPG游戏,有一个机会系统。例如,当被击中的目标击晕敌人时,玩家有30%的几率和70%到35%的额外伤害。

    所以我来解决这个问题。

    //'s' as stuns and 'd' as more damage;
    array a = ['s', 's', 's', 'd', 'd', 'd', 'd', 'd', 'd', 'd'];
    int chance = random(0, 9);
    print a[chance];
    

    但是上面的解决方案有一个问题,首先它只适用于一个整数,另一个问题是它只适用于一个可以被10除的数字。

    例如,上面的函数不能以25%或0.1%的几率作为输入。

    **警告:以上代码不是语言。只是写了个算法**

    1 回复  |  直到 6 年前
        1
  •  1
  •   Carcigenicate    6 年前

    生成一个大数字,并检查该随机数是否小于表示百分比的数字。

    例如,有30%的机会(我将使用下界1使代码更简单,并且我假设两个界都包含在内):

    int chance = random(1, 10) // 1 - 10
    
    if (chance <= 3):
        // The 30% chance was met (3 / 10 == 30%)
    

    int chance = random(1, 100) // 1 - 100
    
    if (chance <= 37):
        // A 37% chance was met (37 / 100 == 37%)
    

    或者,对于浮动机会,从大于100的值生成:

    int chance = random(1, 1000) // 1 - 1000
    
    if (chance <= 123):
        // A 12.3% was met (123 / 1000 == 12.3%)
    

    向随机生成器中添加更多的0以获得更高的精度。1000代表数字到小数点后一位,10000代表数字到小数点后两位…

    条件中的数字是生成器可能生成的最大数的百分比。

    当然,这假设有一个统一的生成器。

    推荐文章