feat: add grab_range method to Handful
This commit is contained in:
@@ -1,14 +1,33 @@
|
||||
use crate::*;
|
||||
use std::ops::*;
|
||||
|
||||
fn roll_sides(sides: u16) -> i32 {
|
||||
let mut rng = rand::rng();
|
||||
rng.random_range(1..=sides) as i32
|
||||
}
|
||||
|
||||
fn roll_range(range: RangeInclusive<i32>) -> i32 {
|
||||
let mut rng = rand::rng();
|
||||
rng.random_range(range)
|
||||
}
|
||||
|
||||
impl Die {
|
||||
pub fn roll(&self) -> i32 {
|
||||
match self {
|
||||
Die::Sides(sides) => roll_sides(*sides),
|
||||
Die::Range(range) => roll_range(range.clone()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
#[test]
|
||||
fn check_roll_range() {
|
||||
let die = Die::Range(5..=5);
|
||||
for _ in 1..=1000 {
|
||||
assert_eq!(die.roll(), 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use crate::*;
|
||||
use std::ops::*;
|
||||
|
||||
impl Handful {
|
||||
pub fn grab(dice_num: u16, sides: u16) -> Self {
|
||||
@@ -8,4 +9,11 @@ impl Handful {
|
||||
}
|
||||
Self { dice }
|
||||
}
|
||||
pub fn grab_range(dice_num: u16, range: RangeInclusive<i32>) -> Self {
|
||||
let mut dice = Vec::<Die>::new();
|
||||
for _ in 1..=dice_num {
|
||||
dice.push(Die::Range(range.clone()));
|
||||
}
|
||||
Self { dice }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user