#掷骰子 #滚动 #骰子 #骰子 #地下城 #随机

rollz

这是一个超级简单的Rust包,允许你...掷骰子!你还需要包里有什么呢?

2个版本

0.1.1 2021年4月11日
0.1.0 2021年4月10日

#355游戏

MIT 许可证

9KB
131

rollz 🎲

build badge codecov crates.io badge Documentation

rollz 是一个超级简单的Rust包,允许你...掷骰子!你还需要包里有什么呢?!

实际上,这个包是我为了理解Rust返回类型多态而进行的实验,而且我在做这个实验的时候,为什么不把它发布成一个包供大家享受呢!?

我不期望这个包对 真实项目™️ 特别有用,除非你可能正在实现一些与D&D或类似类型的桌面游戏有关的东西。

是的,这个包实现了标准的D&D骰子组: D4D6D8D10D12D20

安装

要安装库,请将以下行添加到您的 Cargo.toml

[dependencies]
rollz = "0"

或者,如果您有 cargo add,您可以运行以下命令

cargo add rollz@0

示例用法

这是使用 rollzD10 的方法

use rollz::prelude::*;
use rollz::D10;

fn main() {
    let d: D10 = roll();
    println!("You got a {}", d.val()); // You got a 2
}

或者你也可以一起掷多个骰子,为什么不呢?

use rollz::prelude::*;
use rollz::D6;

fn main() {
    let d: (D6, D6) = (roll(), roll());
    println!("You got {:?}", d); // You got (D6(4), D6(6))
}

更多用法示例可在 examples 文件夹中找到。

创建你自己的自定义骰子

以下是一个示例,如果你想构建一个自定义骰子

use rollz::prelude::*;

/// A roll of this guy will always give you 100!
/// Shush ... Don't tell anyone! 🤫
#[derive(Debug)]
struct Fake100(u8);

impl Rollable for Fake100 {
    fn roll() -> Fake100 {
        Fake100 { 0: 100 }
    }
    fn val(&self) -> u8 {
        self.0
    }
}

fn main() {
    println!("I bet I'll get a 100 this time!");
    let d: Fake100 = roll();
    println!("Look what I got: {}!", d.val())
}

贡献

每个人都非常欢迎为这个项目做出贡献。你可以通过 在GitHub上打开一个问题 来提交错误或提出改进建议。

许可证

MIT许可证 下授权。© Luciano Mammino。

依赖关系

~315KB