sergej-kurakin / diceroller
骰子摇动器,PSR 兼容的分支,源自 https://github.com/ringmaster/dicecalc
2.0.0
2016-05-29 07:44 UTC
Requires
- php: >=5.4
Requires (Dev)
- friendsofphp/php-cs-fixer: @stable
- jakub-onderka/php-parallel-lint: ^0.9.2
- pdepend/pdepend: @stable
- phploc/phploc: @stable
- phpmd/phpmd: @stable
- phpunit/phpunit: @stable
- sebastian/phpcpd: @stable
- sebastian/phpdcd: @stable
- squizlabs/php_codesniffer: @stable
This package is not auto-updated.
Last update: 2024-09-28 16:21:00 UTC
README
项目状态
如何使用
- 创建一个新的 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)
- 非文本输出方法