Giter Club home page Giter Club logo

luckbydice's Introduction

LuckByDice

CI Code Quality Codacy Badge Docs Status

Latest Stable Version PHP Versions Supported License Total Downloads Slack

Got Dice?

Run your dice notation using Docker:

$ docker run ouxsoft/luckbydice:latest bin/luckbydice d3,4d6+1,5d+1*2

CLI Test Example

Installation

Install using Composer:

$ composer require ouxsoft/luckbydice

Basic Usage

<?php

use Ouxsoft\LuckByDice\Factory\TurnFactory;

$turn = TurnFactory::getInstance();
$turn->setNotation('10d10,1d6+3*7,d%');
echo $turn->roll(); 

// we should be luckier with this next roll
$turn->setLuck(200);
echo $turn->roll();

About

LuckByDice is a PHP library for simulating dice rolls written in PHP. In addition to emulating standard dice rolls from dice notation, it can also emulate luck.

Rolls made with luck enabled have a natural ebb and flow to roll outcomes. Rolls made with higher luck are more likely to roll higher values. Luck is well suited for use with character's luck stat, which may feature unnatural modification.

Chart Test

This graph illustrates 10,000 consecutive 10d10 rolls to aid in statistical analysis. Notice how outcome impacts luck and vice versa.

Chart Test Example

Documentation

Author

Matthew Heroux.
See also the list of contributors who participated in this project.

Contributing

LuckByDice is open source software project. If you find a problem or want to discuss new features or improvements create an issue, and/or if possible create a pull request. For details, see CONTRIBUTING.md.

Acknowledgement

Thanks to Zachary Whitcomb-Paulson for dice notation expertise.

luckbydice's People

Contributors

codacy-badger avatar hxtree avatar

Watchers

 avatar  avatar

luckbydice's Issues

Dice notation improvements

  • Todo: Add d% as alias for d100
  • Todo: Add support for divide "/"
  • Todo: Add support for minus "-"
  • Todo: Add support for 3(d4+d8+10)
  • Todo: Add support for setSeparator(',') in dice notation
  • Todo: Add support for ensuring outcome does not exceed max roll.

Luck feature requests

The type of luck used should be able to be set, e.g.

$luck->setProfile()

(come up with better name for method)

This would load all the luck info used. There could be different rules. For example, using 30% and 70% for upper and lower boundaries. Or reward -90% with +2 luck and -10% with -2. etc.

The profile should feature method for rules increase and decrease values.

<?php
public function update(float $percent)
{
switch($percent)
case <=10: 
$luck = $luck +2; 
break;
case <=20: 
$luck--;
break;
case >=80: 
$luck++;
break;
case >=10: 
$luck = $luck + 2
break;
default:
break;
}

It should feature a min and max for luck as well.

private $min;
private $max;

And there should be a method to increase or decrease min and max.
$luck->setMax(int)
$luck->setMin()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.