定制 zero-config/d 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

zero-config/d

Composer 安装命令:

composer require zero-config/d

包简介

Dice rolling library

README 文档

README

D is a dice rolling library. It allows for implementations of dice rolling applications and logic.

See also zero-config/d-roll, an application implementing D.

Installation

composer require zero-config/d:^2.0

Entities

The library implements the following entities:

Entity Result Implements Role
D RoleInterface DieInterface Represents a single die.
Roll int RoleInterface Represents the outcome of a die roll.
Dice RoleIteratorInterface, DieInterface DiceInterface, DieIteratorInterface Represents multiple dice. It can roll for them at once or iterate over them.

The entity that represents a die is called D because die is a reserved keyword in the language and it matches with the shorthand name given to it by players all over the world.

Services

The library implements the following services:

Service Result Implements Role
Interpreter DiceInterface DiceInterpreterInterface Interpret user input into a set of dice.
RollIterator RollInterface RollIteratorInterface Iterate over rolls.

Factories

The library implements the following factories:

Factory Result Implements
DieFactory DieInterface, DiceInterface DieFactoryInterface, DiceFactoryInterface
RollFactory RollInterface RollFactoryInterface

Number generator

The number generator comes from the hylianshield/number-generator package by implementing its interface, the number generator can be swapped out.

Use case

You may want to use a different number generator, because the default number generator is not random enough to your taste. Let's see what is needed to create an implementation with a custom number generator:

<?php
use ZeroConfig\D\RollFactory;
use ZeroConfig\D\DieFactory;
use ZeroConfig\D\Interpreter;
use HylianShield\NumberGenerator\NumberGeneratorInterface;

/** @var NumberGeneratorInterface $myCustomNumberGenerator */
$interpreter = new Interpreter(
    new DieFactory(
        new RollFactory(),
        $myCustomNumberGenerator
    )    
);

$dice  = $interpreter->interpretDice('2d20+10');
$total = $dice->getModifier();

foreach ($dice->roll() as $roll) {
    $total += $roll->getValue();
}

echo $total;

This will result in a number between 11 and 50.

One could make this a bit more verbose by iterating over the dice:

<?php
/** @var \ZeroConfig\D\DiceInterface $dice */
foreach ($dice as $die) {
    echo sprintf(
        'd%d -> %d',
        $die->getNumberOfEyes(),
        $die->roll()->getValue()
    ) . PHP_EOL;
}
echo sprintf('+%d', $dice->getModifier());

This will output something like:

d20 -> 19
d20 -> 4
+10

Complex interpretations.

If you want to interpret multiple dice configurations at once and also have them grouped and sorted, the interpreter has an additional method, interpretList.

<?php
/** ZeroConfig\D\DiceInterpreterInterface $interpreter */
$list = $interpreter->interpretList('3d6', 'D20', '4+10', '4+8', '1 d4');

The list will contain the following structure:

20 => Dice => Die x1 (+0),
6  => Dice => Die x3 (+0),
4  => Dice => Die x3 (+8)

统计信息

  • 总下载量: 25
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 9
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2017-02-11

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固