porthou/dicebag

从标准骰子表示法创建骰子掷骰结果

1.0.0 2022-02-14 10:28 UTC

This package is auto-updated.

Last update: 2024-09-14 16:29:33 UTC


README

Build Status

从标准骰子表示法创建骰子掷骰结果

简单示例

<?php
use DiceBag\DiceBag;

$diceBag = DiceBag::factory('4d6dl1');

echo $diceBag;

安装

先决条件

DiceBag 需要 PHP 7.1 或更高版本。

通过 Composer 安装

通过 composer 安装很简单,只需在命令行中执行以下命令

composer require porthou/dicebag

使用 DiceBag

DiceBag 被设计成允许您以尽可能少的配置创建结果,同时尽可能随机。默认情况下,它将使用 PHP7 的默认 CSRNG 生成,通过 random_int

如果需要自定义 RNG,则可以将其作为第二个参数传递给 DiceBag::factory() 方法。这将传递给任何需要 RNG 的实例。

<?php
use DiceBag\DiceBag;
use DiceBag\Randomization\MersenneTwister;

$randomizationEngine = new MersenneTwister();

$diceBag = DiceBag::factory('10f', $randomizationEngine);

骰子类型

有 3 种“骰子”类型

标准骰子 NdX

此操作掷 N 个标准数值骰子,每个骰子有 X 个面。如果未指定 N,则默认为 1

示例
  • d6 投掷一个 6 面骰子。
  • 4d6 投掷 4 个 6 面骰子。
  • d20 投掷一个 20 面骰子。

命运骰子 NdF

此操作掷 N 个命运(也称为模糊)骰子。如果未指定 N,则默认为 1。命运骰子可以掷 -1、0 或 1。

示例
  • f 投掷一个命运骰子。
  • 4f 投掷 4 个命运骰子。

固定修正项 X

固定修正项与其他骰子格式结合使用时最有用。它们添加(或减去)一个固定值

示例
  • 2d6+10 投掷 2 个 6 面骰子并将 10 添加到结果中。

骰子池修正项

骰子池修正项用于更改骰子池的结果。

保留最高 khX

此操作保留骰子池中的最高 X 个结果。

示例
  • 4d6kh3 投掷 4 个 d6 并保留最高的 3 个。

丢弃最低 dlX

此操作丢弃骰子池中的最低 X 个结果。

示例
  • 4d6dl1 投掷 4 个 d6 并丢弃最低的结果。

保留最低 klX

此操作保留骰子池中的最低 X 个结果。

示例
  • 4d6kl1 投掷 4 个 d6 并保留最低的结果。

丢弃最高 dhX

此操作丢弃骰子池中的最高 X 个结果。

示例
  • 4d6dh1 投掷 4 个 d6 并丢弃最高的结果。

爆炸骰子 !cN

爆炸骰子在掷出最大值时将额外的骰子添加到池中。这些额外的骰子也可以爆炸。

如果只指定 N,则骰子将在指定的值上爆炸。

c 是一个条件,可以是 <> 或未指定。当与 N 一起指定时,骰子将在值大于或等于或小于或等于指定值时爆炸。

示例
  • 4d6! 投掷 4 个 d6,并将任何结果为 6 的结果添加到池中。
  • 4d6!1 投掷 4 个 d6,并将任何结果为 1 的结果添加到池中。
  • 4d6!>5 投掷 4 个 d6,并将任何结果为 5 或更大的结果添加到池中。
  • 4d6!<2 投掷 4 个 d6,并将任何结果为 2 或更小的结果添加到池中。