ringmaster/dicecalc

dev-master 2016-07-07 21:52 UTC

This package is not auto-updated.

Last update: 2024-09-16 02:45:42 UTC


README

项目状态

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

如何使用

创建一个新的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)
  • 非文本输出方法