5 个不稳定版本
使用旧的 Rust 2015
0.3.1 | 2019年6月15日 |
---|---|
0.3.0 | 2018年3月4日 |
0.2.0 | 2017年8月12日 |
0.1.1 | 2017年8月11日 |
0.1.0 | 2017年8月11日 |
#530 在 游戏
26KB
500 行
rfyl - 一个角色扮演游戏掷骰器。
一个接受骰子表示法的掷骰器,用 Rust 编写。不再维护。
支持输入
- 基本标准骰子表示法:
d8
,2d12
。 - 加法:
d4 + 2d6
。 - 减法:
d100 - 15
。 - 乘法:
d12 * 2
。 - 除法:
d100 / 15
。 (注意:小数值会被四舍五入到最接近的整数。) - 括号:
(d100 + d12) / 15
。 - 复杂骰子表示法:
1d4 + 2d6 * 3d2 / 4d8 + (2d6 + 3d8) - 16 * (1 / 1d4)
。 - 百分比骰子缩写:
d%
=d100
。 - 布尔骰子:
1d1
=0
或1
。
许可
lib.rs
:
RFYL 实现了在许多角色扮演游戏系统中使用的常见骰子表示法。
支持输入
- 基本标准骰子表示法:
d8
,2d12
。 - 加法:
d4 + 2d6
。 - 减法:
d100 - 15
。 - 乘法:
d12 * 2
。 - 除法:
d100 / 15
。 (注意:小数值会被四舍五入到最接近的整数。) - 括号:
(d100 + d12) / 15
。 - 复杂骰子表示法:
1d4 + 2d6 * 3d2 / 4d8 + (2d6 + 3d8) - 16 * (1 / 1d4)
。 - 百分比骰子缩写:
d%
=d100
。 - 布尔骰子:
1d1
=0
或1
。
示例
use rfyl::roll;
// This would actually probably come from user input, or be computed in some other way.
let requested_roll = String::from("(1d20 * 2) + (1d4 + 1) / 2");
// Rolling can fail, for instance if an illegal digit is supplied.
// Therefore, roll() returns a Result which must be unwrapped.
let roll = roll(requested_roll).unwrap();
// On a successful roll, roll() returns a DiceRolls struct which can be
// interrogated for its formula and result.
println!("{}: {}", roll.get_rolls_formula_string_as_infix(), roll.get_result());
// Should print "[[1d20 * 2] + [[1d4 + 1] * 2]]: 10" (for arbitrary values of 10).
请参阅包含的命令行程序(src/bin.rs),以获取更多关于如何使用 DiceRolls 结构体的示例。
依赖
~1.5MB
~23K SLoC