w5n/dicen

Parse complex dice rolls from strings.

0.3 2020-12-08 23:55 UTC

This package is not auto-updated.

Last update: 2024-04-25 12:28:25 UTC


README

Parser for dice rolls.

Instalation

composer install w5n/dicen

Usage

use W5n\Dicen\DefaultRandomGenerator;
use W5n\Dicen\DiceEngine;
use W5n\Dicen\DiceParser;

$parser          = new DiceParser();
$randomGenerator = new DefaultRandomGenerator();
$engine          = new DiceEngine($parser, $randomGenerator);

// Dice mode
$engine->roll('5d4+3');

// Math mode
$engine->roll('120+10*33-45');

// Mixed mode
$engine->roll('2d6-4+45-2d10+8');


// Invalid roll throws exception
try {
    $engine->roll('invalid');
} catch (\Exception $ex) {
    //...
}

// Syntax tree
$ast = $parser->parse('2d6+25-1d4-1');

TO-DO

  • Use a custom exception
  • Exploding Dices
  • Keep or Drop some highest/lowest dices
  • Show roll details

References