feat: determine winner
This commit is contained in:
parent
18bd87e68f
commit
5741a6894b
|
|
@ -201,10 +201,23 @@ impl App {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn display(&mut self) -> String {
|
pub fn display(&mut self) -> String {
|
||||||
|
let winner = self
|
||||||
|
.game
|
||||||
|
.state
|
||||||
|
.determine_winner()
|
||||||
|
.and_then(|id| self.game.state.players.get(&id));
|
||||||
|
let str_won: String = winner
|
||||||
|
.map(|p| {
|
||||||
|
let mut name = " winner: ".to_owned();
|
||||||
|
name.push_str(&p.name);
|
||||||
|
name
|
||||||
|
})
|
||||||
|
.unwrap_or("".to_owned());
|
||||||
let mut output = "-------------------------------".to_owned();
|
let mut output = "-------------------------------".to_owned();
|
||||||
output += format!(
|
output += format!(
|
||||||
"\n{:?} > {} > {:?}",
|
"\n{:?}{} > {} > {:?}",
|
||||||
self.game.state.stage,
|
self.game.state.stage,
|
||||||
|
str_won,
|
||||||
self.game
|
self.game
|
||||||
.state
|
.state
|
||||||
.who_plays()
|
.who_plays()
|
||||||
|
|
|
||||||
|
|
@ -433,7 +433,7 @@ impl GameState {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Go { player_id } => self.new_pick_up()
|
Go { player_id } => self.new_pick_up(),
|
||||||
Move { player_id, moves } => {
|
Move { player_id, moves } => {
|
||||||
let player = self.players.get(player_id).unwrap();
|
let player = self.players.get(player_id).unwrap();
|
||||||
self.board.move_checker(&player.color, moves.0).unwrap();
|
self.board.move_checker(&player.color, moves.0).unwrap();
|
||||||
|
|
@ -457,12 +457,11 @@ impl GameState {
|
||||||
self.players.iter_mut().map(|(id, p)| p.dice_roll_count = 0);
|
self.players.iter_mut().map(|(id, p)| p.dice_roll_count = 0);
|
||||||
// joueur actif = joueur ayant sorti ses dames (donc deux jeux successifs)
|
// joueur actif = joueur ayant sorti ses dames (donc deux jeux successifs)
|
||||||
self.turn_stage = TurnStage::RollDice;
|
self.turn_stage = TurnStage::RollDice;
|
||||||
|
|
||||||
// TODO:
|
// TODO:
|
||||||
// - échanger les couleurs
|
// - échanger les couleurs
|
||||||
// - remettre les dames des deux joueurs aux talons
|
// - remettre les dames des deux joueurs aux talons
|
||||||
// - jeton bredouille replaçé sur joueur actif (?)
|
// - jeton bredouille replaçé sur joueur actif (?)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_rollresult_points(&self, dice: &Dice) -> (u8, u8) {
|
fn get_rollresult_points(&self, dice: &Dice) -> (u8, u8) {
|
||||||
|
|
@ -473,7 +472,12 @@ impl GameState {
|
||||||
|
|
||||||
/// Determines if someone has won the game
|
/// Determines if someone has won the game
|
||||||
pub fn determine_winner(&self) -> Option<PlayerId> {
|
pub fn determine_winner(&self) -> Option<PlayerId> {
|
||||||
None
|
// A player has won if he has got 12 holes
|
||||||
|
self.players
|
||||||
|
.iter()
|
||||||
|
.filter(|(id, p)| p.holes > 11)
|
||||||
|
.map(|(id, p)| *id)
|
||||||
|
.next()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn inc_roll_count(&mut self, player_id: PlayerId) {
|
fn inc_roll_count(&mut self, player_id: PlayerId) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue