jifish / ezdice
一个用于解析骰子表示法和掷骰子的简单PHP库。
1.0.0
2022-09-25 13:45 UTC
Requires
- php: >=7.0
README
一个用于解析骰子表示法和掷骰子的简单PHP库。
适用于PHP 7+。
为什么使用EZDice?
EZDice是因为我对类似库不满意而编写的。与其他产品相比,EZDice有以下优势
- 无冗余。EZDice是一个简单的类,没有依赖关系。
- 提供每次掷骰子的结果,而不仅仅是总和。
- 设计用于人类而非机器的宽容解析器。
- 可以选择轻松替换RNG。
- MIT许可,确保您可以在任何项目中自由使用。
使用方法
这里是一个基本示例
require 'ezdice.php';
$ezd = new ezdice\EZDice();
echo($ezd->roll('1d20+2d4'));
echo(' Rolls:');
foreach($ezd->getDiceStates() as $die) {
echo(' ['.$die['value'].'] ');
}
示例输出
23 Rolls: [17] [4] [2]
使用Composer安装
您不必使用Composer将EZDice包含到项目中,但您可以选择
composer require jifish/ezdice
方法
roll($diceStr)
将 $diceStr 解析为骰子表示法,然后掷这些骰子。返回所有掷骰子和修正项的总和,或者如果没有找到,则返回 false。
解析器非常宽容,忽略空白符和它不识别的其他内容。它也不区分大小写。以下简要介绍了骰子表示法。
getTotal()
返回最后一次掷骰子的总和。
getDiceStates()
返回一个描述最后一次掷骰子后骰子状态的 (array)。每个骰子也是一个 (array),具有以下键
- sides - (int) 骰子的面数
- value - (int) 骰子掷出的值
- dropped - (bool) true 如果此骰子被丢弃,否则 false。丢弃的骰子不计入总和。
getModifier()
返回表示最后一次掷骰子中所有修正项的总和的 (string)。如果没有修正项或它们相互抵消,则返回空字符串。如果需要,您可以将其转换为 (int)。
例如,如果您掷出 1d8+10+1d4-2
,则此方法将返回 +8
。
strContainsDice($diceStr)
解析 $diceStr 并返回 true 如果它至少包含一个掷骰子,否则返回 false。用于验证用户输入很有用。没有骰子的修正项不计入。
骰子表示法
- 骰子表示法的形式为 (骰子数量)d(骰子面数)。例如
2d10
。 - 可以使用 + 和 - 运算符链式连接额外的骰子。例如
2d10+1d6
。 - 也可以指定修正项。例如
2d10-5
。 - 可以使用 d% 作为百分比骰子的简写。
1d%
和1d100
等价。 - 将掷骰子后附加 -L 以丢弃该组中的最低骰子,或 -H 以丢弃最高骰子。丢弃的骰子不包括在总和内。例如
2d20-L
将掷出 2 个二十面骰子并丢弃最低的。您也可以指定丢弃的骰子数量,例如6d6-H3
将丢弃最高的 3 个掷骰结果。 - 目前没有提供用于Fudge骰子的表示法。您可以使用
1d3-2
代替。 - 空白符以及任何未识别为骰子或修正项的内容都视为 + 运算符。例如
foo10 1d4bar1d4 5
等同于5+1d4+1d4+10
,或者简单地2d4+15
。
替换随机数生成器
默认情况下使用 mt_rand() 作为RNG,这对于大多数应用程序来说应该很好。如果您想更改此设置,例如要标准化骰子掷骰结果,您可以扩展类并重写方法 getRandomNumber($max)
class WeightedDice extends ezdice\EZDice {
protected function getRandomNumber($max) {
if (mt_rand(0,1)) return $max;
return mt_rand(1,$max);
}
}
法律条款
在MIT许可下发布。版权所有(c)2021约瑟夫·福勒。