ringmaster / dicecalc
DiceCalc
dev-master
2016-07-07 21:52 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-16 02:45:42 UTC
README
项目状态
如何使用
- 创建一个新的Calc类,并将骰子表达式传递给构造函数:
- $calc = new Calc($expression);
- 输出掷骰子的解释:
- echo $calc->infix();
- 输出掷骰子的结果:
- echo $calc();
骰子表达式
基本表达式是使用一个“d”后跟掷骰子的面数。
示例
- d6
- 掷一个六面骰子
- d20
- 掷一个二十面骰子
- d%
- 掷一个百分比(1-100)骰子
- df
- 掷一个fudge(-1,0,1)骰子
要掷多个相同面数的骰子,请在骰子类型前加上一个乘数。
示例
- 3d6
- 掷d6三次,求和结果
- 2d20
- 掷d20两次,求和结果
- 6df
- 掷六个fudge骰子,求和结果
基本数学运算可以作为表达式。
示例
- 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[红色,绿色,蓝色]
- 掷一个三面骰子,带有彩色面
通过应用“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个骰子,重新掷小于3的骰子,保留最高的3个骰子,计算保留骰子的总和
使用“o”前缀生成开放端点骰子。
示例
- 4d6o=6
- 掷4个骰子。当任何一个骰子停在6时,重新掷那个骰子并把这个结果加到那个骰子上。计算所有骰子的总和。
一个愚蠢的例子,希望没有人会用
- 3d6r<p;4o=6k&rtp;6
- 掷3个骰子。重新掷小于4的骰子。当任何一个骰子是6时,重新掷并把这个新值加到原始值上。计算大于6的骰子的总和。
未来增强
- 更好的分组处理
- 更好的自定义骰子处理
- 变量替换(处理像:d20 + $str_bonus > $target 这样的掷骰子)
- 范围违规异常(d6k<p;0)
- 非文本输出方法