granam / dice-rolls
可配置骰子滚动
6.1.0
2021-03-23 15:35 UTC
Requires
- php: >=7.3
- granam/integer: ^7.0
Requires (Dev)
- granam/exceptions-hierarchy: ^5.0
- granam/test-with-mockery: ^2.0
- mockery/mockery: ~1.2
- phpunit/phpunit: ~9.0
- roave/security-advisories: dev-master
README
让我们来掷骰子吧!
<?php use Granam\DiceRolls\Templates\Rollers\Roller1d6; use Granam\DiceRolls\Templates\Rollers\Roller2d6DrdPlus; $roller1d6 = new Roller1d6(); $rolledValue = $roller1d6->roll(); if ($rolledValue === 6) { echo 'Hurray! You win!'; } else { echo 'Try harder'; } $roller2d6Granam = new Roller2d6DrdPlus(); while (($roll = $roller2d6Granam->roll()) && $roll->getValue() <= 12) { echo 'Still no bonus :( ...'; } echo 'There it is! Bonus roll comes, with final value of ' . $roll->getValue() . ' Rolls were quite dramatic, consider by yourself: '; foreach ($roll->getDiceRolls() as $diceRoll) { echo 'Rolled number ' . $diceRoll->getRolledNumber() . ', evaluated as value ' . $diceRoll->getValue(); }
有大量的预定义骰子和滚动的模板,如1d4、1d6、1d10。您可以通过CustomDice
类混合这些以及您自己创建的任何其他模板。
只需考虑您的需求并检查模板。您的需求可能已经被它们满足了。
自定义骰子和滚动
可能存在需要疯狂组合的情况。比如说,一个1d5的骰子滚动和三个1d74的骰子滚动。
这很简单。难点只是找到一种方法来
<?php use Granam\DiceRolls\Templates\Dices\CustomDice; use Granam\Integer\IntegerObject; use Granam\DiceRolls\Templates\Dices\Dices; use Granam\DiceRolls\Roller; use Granam\DiceRolls\Templates\Evaluators\OneToOneEvaluator; use Granam\DiceRolls\Templates\RollOn\NoRollOn; $dice1d5 = new CustomDice(new IntegerObject(1) /* minimum of the dice */, new IntegerObject(5) /* maximum of the dice */); $dice1d74 = new CustomDice(new IntegerObject(1) /* minimum of the dice */, new IntegerObject(74) /* maximum of the dice */); $diceCombo = new Dices([$dice1d5, $dice1d74, $dice1d74, $dice1d74]); $roller = new Roller( $diceCombo, new IntegerObject(1) /* roll with them all just once */, new OneToOneEvaluator() /* "what you roll is what you get" */, new NoRollOn() /* no bonus roll at all */, new NoRollOn() /* no malus roll at all */ ); // here it is! $roller->roll();
安装
- order composer 添加新的需求
composer require drd/dice-roll