bug fixes
This commit is contained in:
parent
22af164a95
commit
706e33a12f
|
@ -1,4 +0,0 @@
|
|||
startup time=1609744772805409109
|
||||
runtime time=10083706
|
||||
startup time=1609744984945886640
|
||||
runtime time=10097224
|
|
@ -16,7 +16,7 @@ pub enum Tile {
|
|||
pub struct GameMove (pub usize, pub Tile, pub usize);
|
||||
impl Default for GameMove {
|
||||
fn default() -> Self {
|
||||
GameMove(0, Tile::Blue, 0)
|
||||
GameMove(0, Tile::Blue, 1)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -348,6 +348,9 @@ impl Game {
|
|||
}
|
||||
else if self.market.contains(&game_move.1) {
|
||||
let target = &mut board.patterns[game_move.2 - 1];
|
||||
if target.first().is_some() && target[0] != game_move.1 {
|
||||
return Err("That pattern line already contains a different color")
|
||||
}
|
||||
let empty = game_move.2 - target.len();
|
||||
|
||||
if empty == 0 {
|
||||
|
@ -400,6 +403,9 @@ impl Game {
|
|||
},
|
||||
1..=9 => {
|
||||
let target = &mut board.patterns[game_move.2 - 1];
|
||||
if target.first().is_some() && target[0] != game_move.1 {
|
||||
return Err("That pattern line already contains a different color")
|
||||
}
|
||||
let empty = game_move.2 - target.len();
|
||||
if hand.len() <= empty {
|
||||
target.append(&mut hand);
|
||||
|
|
25
src/main.rs
25
src/main.rs
|
@ -2,23 +2,30 @@ mod azul;
|
|||
use azul::*;
|
||||
|
||||
fn main() -> Result<(), &'static str> {
|
||||
for _ in 0..10000 {
|
||||
run()?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn run() -> Result<(), &'static str> {
|
||||
|
||||
let mut game = Game::new(2)?;
|
||||
game.fill()?;
|
||||
|
||||
let mut all_err = false;
|
||||
while !all_err {
|
||||
println!("{:#?}", game);
|
||||
//println!("{:#?}", game);
|
||||
all_err = true;
|
||||
let mut game_move:Option<GameMove> = Some(GameMove::default());
|
||||
while let Some(mut i) = game_move {
|
||||
match game.do_move(i) {
|
||||
Err(e) => {
|
||||
println!("{:?}: {}", i, e);
|
||||
//println!("{:?}: {}", i, e);
|
||||
game_move = i.next();
|
||||
},
|
||||
Ok(g) => {
|
||||
println!("{:?}", i);
|
||||
//println!("{:?}", i);
|
||||
game = g;
|
||||
all_err = false;
|
||||
break;
|
||||
|
@ -26,9 +33,6 @@ fn main() -> Result<(), &'static str>{
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
let game2 = game.do_move(GameMove(1, Tile::Red, 1))?;
|
||||
println!("{:#?}", game2);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -60,14 +64,15 @@ impl Iterator for GameMove {
|
|||
};
|
||||
let tile = match _tile {
|
||||
None => {
|
||||
pattern += 1;
|
||||
match pattern {
|
||||
6 => pattern = 0,
|
||||
0 => return None,
|
||||
_ => pattern = pattern + 1
|
||||
};
|
||||
Tile::Blue
|
||||
},
|
||||
Some(x) => x
|
||||
};
|
||||
if pattern > 6 {
|
||||
return None
|
||||
}
|
||||
|
||||
Some(GameMove(factory, tile, pattern))
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue