An open API service indexing awesome lists of open source software.

https://github.com/abrahum/diro

a dice expr parse lib
https://github.com/abrahum/diro

Last synced: about 1 month ago
JSON representation

a dice expr parse lib

Awesome Lists containing this project

README

        

## Diro

一个骰子表达式解析 lib 。

### To-Do List

表达式解析:
- [x] 四则运算以及幂运算
- [x] 基本骰子表达式( xDy )
- [x] COC 规则(BPKQ)
- [x] 无限规则
- [x] 双重十字规则
- [x] Fate 规则

解析结果解释运行:
- [x] 投掷并运算结果
- [x] 输出表达式字符串
- [x] S 表达式输出
- [x] 格式化输出中间执行过程

Diro-py:
- [x] 解析表达式
- [x] 解释计算结果
- [ ] ~~格式化输出中间执行过程~~

### 表达式规则

最基本的骰子表达式为 xDy, x 表示骰子个数, y 为骰子面数, 二者的取值范围为 u16。

骰子表达式大小写不敏感,不允许存在空格间隔。

COC 扩展规则可以在基础骰子表达式前后添加额外参数,可接受的参数有:

- b: 奖励骰
- p: 惩罚骰
- k: 取大骰
- q: 取小骰

奖励骰与惩罚骰仅对 D100 有效,取数骰仅在多个骰子时有效(当取数大于骰子数时,会在表达式解析阶段报错)。

额外参数可选跟随一个无符号数字表示骰子个数,当存在多个同类型额外参数,骰子个数为叠加计算结果。

例子:
- `b2bd100p` : 奖励骰个数为 2+1-1=2 的 D100 骰子
- `k2d6` : 将会在解析阶段报错,数字默认左结合,正确的写法应为 `2d6k`

### 相关项目

[OneDice](https://github.com/OlivOS-Team/onedice): Today, we stand as one. (with some distance 2333)