wip
This commit is contained in:
parent
b7525a9ee6
commit
d67b7a7c01
3 changed files with 36 additions and 1 deletions
|
|
@ -8,7 +8,7 @@ use log::{debug, error};
|
||||||
|
|
||||||
// use itertools::Itertools;
|
// use itertools::Itertools;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::collections::HashMap;
|
use std::collections::{HashMap, HashSet};
|
||||||
use std::hash::{Hash, Hasher};
|
use std::hash::{Hash, Hasher};
|
||||||
use std::{fmt, str};
|
use std::{fmt, str};
|
||||||
|
|
||||||
|
|
@ -143,6 +143,27 @@ impl GameState {
|
||||||
game
|
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) {
|
fn set_schools_enabled(&mut self, schools_enabled: bool) {
|
||||||
self.schools_enabled = schools_enabled;
|
self.schools_enabled = schools_enabled;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
pub fn to_bits_string(&self) -> String {
|
||||||
format!(
|
format!(
|
||||||
"{:0>4b}{:0>4b}{:b}{:b}",
|
"{:0>4b}{:0>4b}{:b}{:b}",
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,10 @@ impl TricTrac {
|
||||||
self.game_state.to_vec()
|
self.game_state.to_vec()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_observation_string(&self, player: PlayerId) -> String {
|
||||||
|
self.__str__()
|
||||||
|
}
|
||||||
|
|
||||||
/// Afficher l'état du jeu (pour le débogage)
|
/// Afficher l'état du jeu (pour le débogage)
|
||||||
fn __str__(&self) -> String {
|
fn __str__(&self) -> String {
|
||||||
format!("{}", self.game_state)
|
format!("{}", self.game_state)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue