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游戏

CC0 许可

26KB
500

rfyl - 一个角色扮演游戏掷骰器。

一个接受骰子表示法的掷骰器,用 Rust 编写。不再维护。

也可以在 crates.io 上找到.

支持输入

  • 基本标准骰子表示法:d82d12
  • 加法:d4 + 2d6
  • 减法:d100 - 15
  • 乘法:d12 * 2
  • 除法:d100 / 15。 (注意:小数值会被四舍五入到最接近的整数。)
  • 括号:(d100 + d12) / 15
  • 复杂骰子表示法:1d4 + 2d6 * 3d2 / 4d8 + (2d6 + 3d8) - 16 * (1 / 1d4)
  • 百分比骰子缩写:d% = d100
  • 布尔骰子:1d1 = 01

许可

rfyl 是公共领域软件,在创意共享0.0许可下提供。请参阅LICENSECOPYING 获取更多信息。


lib.rs:

RFYL 实现了在许多角色扮演游戏系统中使用的常见骰子表示法。

支持输入

  • 基本标准骰子表示法:d82d12
  • 加法:d4 + 2d6
  • 减法:d100 - 15
  • 乘法:d12 * 2
  • 除法:d100 / 15。 (注意:小数值会被四舍五入到最接近的整数。)
  • 括号:(d100 + d12) / 15
  • 复杂骰子表示法:1d4 + 2d6 * 3d2 / 4d8 + (2d6 + 3d8) - 16 * (1 / 1d4)
  • 百分比骰子缩写:d% = d100
  • 布尔骰子:1d1 = 01

示例

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