This commit is contained in:
Henri Bourcereau 2026-02-19 17:34:17 +01:00
parent b7525a9ee6
commit d67b7a7c01
3 changed files with 36 additions and 1 deletions

View file

@ -8,7 +8,7 @@ use log::{debug, error};
// use itertools::Itertools;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::collections::{HashMap, HashSet};
use std::hash::{Hash, Hasher};
use std::{fmt, str};
@ -143,6 +143,27 @@ impl GameState {
game
}
pub fn mirror(&self) -> GameState {
let mirrored_active_player = if self.active_player_id == 1 { 0 } else { 1 };
let mut mirrored_players = HashMap::new();
mirrored_players.insert(1, self.players.get(&2).unwrap().mirror());
mirrored_players.insert(2, self.players.get(&1).unwrap().mirror());
GameState {
stage: self.stage,
turn_stage: self.turn_stage,
board: self.board.mirror(),
active_player_id: mirrored_active_player,
players: mirrored_players,
history: Vec::new(),
dice: self.dice,
dice_points: self.dice_points,
dice_moves: (CheckerMove::default(), CheckerMove::default()),
dice_jans: PossibleJans::default(),
roll_first: self.roll_first,
schools_enabled: self.schools_enabled,
}
}
fn set_schools_enabled(&mut self, schools_enabled: bool) {
self.schools_enabled = schools_enabled;
}

View file

@ -48,6 +48,16 @@ impl Player {
}
}
pub fn mirror(&self) -> Self {
let mut player = self.clone();
player.color = if self.color == Color::White {
Color::Black
} else {
Color::White
};
player
}
pub fn to_bits_string(&self) -> String {
format!(
"{:0>4b}{:0>4b}{:b}{:b}",

View file

@ -117,6 +117,10 @@ impl TricTrac {
self.game_state.to_vec()
}
fn get_observation_string(&self, player: PlayerId) -> String {
self.__str__()
}
/// Afficher l'état du jeu (pour le débogage)
fn __str__(&self) -> String {
format!("{}", self.game_state)