sergej-kurakin/diceroller

骰子摇动器,PSR 兼容的分支,源自 https://github.com/ringmaster/dicecalc

2.0.0 2016-05-29 07:44 UTC

This package is not auto-updated.

Last update: 2024-09-28 16:21:00 UTC


README

项目状态

https://travis-ci.org/sergej-kurakin/dicecalc.svg?branch=master https://scrutinizer-ci.com/g/sergej-kurakin/dicecalc/badges/quality-score.png?b=master

如何使用

创建一个新的 Calc 类,并将骰子表达式传递给构造函数:
$calc = new Calc($expression);
输出摇动的解释:
echo $calc->infix();
输出摇动结果:
echo $calc();

骰子表达式

基本表达式是使用一个 "d" 后跟要摇动的骰子的面数。

示例

d6
摇动一个六面骰子
d20
摇动一个二十面骰子
d%
摇动一个百分比(1-100)骰子
df
摇动一个模糊(-1, 0, 1)骰子

要摇动多个相同面数的骰子,请在骰子类型前加上乘数数字。

示例

3d6
摇动 d6 三次,求和结果
2d20
摇动 d20 两次,求和结果
6df
摇动六个模糊骰子,求和结果

基本数学运算可以作为表达式使用。

示例

4+4
加 4+4
4*5
乘 4*5
4+4*5
乘 4*5,然后加 4(遵循运算顺序)
(4+4)*5
加 4+4,然后乘以 5

对数字集合进行数学运算。

示例

2*[3,4]
乘 2*3 和 2*4,结果为集合 [6,8]
[1,2]*[3,4]
将这些集合相乘,结果为嵌套集合 [[3,4],[6,8]]

表达式可以是任何骰子或常数的组合。

示例

2d6+4
摇动 2d6,求和骰子并加 4
3d8-5
摇动 3d8,求和骰子并减 5
2d4+d6
摇动 2d4 和 d6,求和所有骰子

评估结果是否满足特定条件或目标数字。

示例

4+4 > 7
返回 true,因为 4+4 大于 7
5d6 > 5
返回 true,因为 5d6 总是大于 5
d20+4 > 12
模拟 d20 系统技能值 4 与目标数字 12 的比较

通过在摇动周围放置括号并在前面加上乘数来生成一组摇动。

示例

6[3d6]
生成一组由摇动 3d6 创建的 6 个数字
4[d%]
生成一组由摇动百分比创建的 4 个数字

通过在 "d" 后指定骰子面数来摇动自定义骰子。

示例

d[1,2,2,3,3,4]
摇动一个具有自定义数字面的六面骰子
d[red,green,blue]
摇动一个具有彩色面的三面骰子

通过应用 "k" 后缀,仅保留满足特定条件的单个摇动中的骰子。

示例

5d6 keep > 4
摇动五个六面骰子,仅保留大于 4 的骰子,求和保留的骰子
5d6k>4
与上面相同
6d8 keep < 4
摇动六个八面骰子,仅保留小于 4 的骰子,求和保留的骰子
6d8k<4
与上面相同

仅保留摇出的最低或最高值骰子。

示例

4d6 highest 3
摇动 4d6,仅保留最高的 3 个骰子
4d6h3
与上面相同
2s20 lowest 1
摇动 2d20,仅保留最低的骰子
2d20l1
与上面相同

重新摇动不满足特定条件的骰子。

示例

3d6 reroll < 3
摇动 3d6,重新摇动任何小于 3 的骰子
3d6r<3
与上面相同
2d% reroll < 40
摇动 2d%,重新摇动任何小于 40 的骰子
2d%r<40
与上面相同

我们愚蠢地摇动 D&D 角色属性的方式。

示例

4d6r<3h3
掷4个骰子(每个骰子6面),如果骰子点数小于3,则重新掷该骰子,保留点数最高的3个骰子,计算保留骰子的点数总和。

使用“o”前缀来生成开放式骰子。

示例

4d6o=6
掷4个骰子。当任意一个骰子为6点时,重新掷该骰子并将结果加到该骰子上。计算所有骰子的总分。

一个愚蠢的例子,希望没人会用

3d6r<4o=6k>6
掷3个骰子。重新掷点数小于4的骰子。当任意一个骰子为6点时,重新掷并加上新的点数到原始点数上。仅计算大于6的点数的骰子总分。

未来增强

  • 更好的分组处理
  • 更好的自定义骰子处理
  • 变量替换(处理如:d20 + $str_bonus > $target 的掷骰子)
  • 范围违规异常(d6k<0)
  • 非文本输出方法