Randomize the deck of tiles

This commit is contained in:
2023-02-12 21:01:38 +01:00
parent ea6572dca2
commit 8943d1d898
7 changed files with 194 additions and 13 deletions

View File

@@ -1,5 +1,6 @@
use crate::board::Board;
use crate::tile::{Digit, Operator, Tile};
use crate::deck::{EmptyDeckError, RngDeck};
use crate::tile::{Digit, Tile};
#[derive(Default, Debug, Clone, PartialEq)]
pub struct Game {
@@ -31,12 +32,15 @@ impl Hand {
)
}
pub fn complete(&mut self) {
pub fn complete(&mut self, deck: &mut RngDeck) -> Result<(), EmptyDeckError> {
for _ in 0..self.count_missing_operators() {
self.tiles.push(Tile::Operator(Operator::Add));
self.tiles
.push(Tile::Operator(deck.rand_operator().ok_or(())?));
}
for n in 0..self.count_missing_numbers() {
self.tiles.push(Tile::Digit(Digit::new((n % 10) as u8)));
for _ in 0..self.count_missing_numbers() {
self.tiles
.push(Tile::Digit(Digit::new(deck.rand_digit().ok_or(())?)));
}
Ok(())
}
}