Fix winning stack bug
This commit is contained in:
parent
c2d97173f2
commit
7d95a71c5d
2 changed files with 30 additions and 17 deletions
23
src/game.rs
23
src/game.rs
|
|
@ -137,8 +137,7 @@ pub fn herzen(player: &[Box<dyn Player>], starting_player: usize, rng: &mut impl
|
|||
stack.push(played_card);
|
||||
}
|
||||
|
||||
let winner = (player.len()
|
||||
+ stack
|
||||
let (stack_winner, winning_card) = stack
|
||||
.iter()
|
||||
.enumerate()
|
||||
.max_by_key(|(_, &c)| {
|
||||
|
|
@ -148,20 +147,30 @@ pub fn herzen(player: &[Box<dyn Player>], starting_player: usize, rng: &mut impl
|
|||
0
|
||||
}
|
||||
})
|
||||
.unwrap()
|
||||
.0
|
||||
- round_starting_player)
|
||||
% player.len();
|
||||
.unwrap();
|
||||
|
||||
let winner = (stack_winner + round_starting_player) % player.len();
|
||||
|
||||
let cost = stack.iter().map(|c| c.cost()).sum::<u8>();
|
||||
|
||||
println!("## Player {winner} takes the stack {stack:?} with {cost} points.");
|
||||
println!(
|
||||
"## Player {winner} takes the stack {stack:?} with {winning_card:?}, {cost} points"
|
||||
);
|
||||
|
||||
points[winner] += cost;
|
||||
|
||||
round_starting_player = winner;
|
||||
}
|
||||
|
||||
let remainder = &full_deck[hand_size * player.len()..];
|
||||
let remainder_cost = remainder.iter().map(|c| c.cost()).sum::<u8>();
|
||||
|
||||
println!(
|
||||
"## Player {round_starting_player} takes the remaining cards {remainder:?}, {remainder_cost} points"
|
||||
);
|
||||
|
||||
points[round_starting_player] += remainder_cost;
|
||||
|
||||
println!("## Game ended. Points: {points:?}");
|
||||
|
||||
points
|
||||
|
|
|
|||
|
|
@ -122,9 +122,13 @@ mod player;
|
|||
// }
|
||||
|
||||
fn main() {
|
||||
let player: [Box<dyn Player>; 2] = [
|
||||
let player: Vec<Box<dyn Player>> = vec![
|
||||
Box::new(player::highest::Highest {}),
|
||||
Box::new(player::highest::Highest {}),
|
||||
Box::new(player::highest::Highest {}),
|
||||
Box::new(player::highest::Highest {}),
|
||||
Box::new(player::highest::Highest {}),
|
||||
Box::new(player::cli::Cli {}),
|
||||
];
|
||||
|
||||
let mut rng = SmallRng::from_entropy();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue