Randomize the deck of tiles
This commit is contained in:
@@ -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(())
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user