This commit is contained in:
Henri Bourcereau 2026-02-21 18:26:11 +01:00
parent d6df7af4fe
commit 223777346a
4 changed files with 21 additions and 8 deletions

View file

@ -144,7 +144,7 @@ impl GameState {
} }
pub fn mirror(&self) -> GameState { pub fn mirror(&self) -> GameState {
// let mirrored_active_player = if self.active_player_id == 1 { 2 } else { 1 }; let mirrored_active_player = if self.active_player_id == 1 { 2 } else { 1 };
let mut mirrored_players = HashMap::new(); let mut mirrored_players = HashMap::new();
if let Some(p2) = self.players.get(&2) { if let Some(p2) = self.players.get(&2) {
mirrored_players.insert(1, p2.mirror()); mirrored_players.insert(1, p2.mirror());
@ -164,7 +164,8 @@ impl GameState {
stage: self.stage, stage: self.stage,
turn_stage: self.turn_stage, turn_stage: self.turn_stage,
board: self.board.mirror(), board: self.board.mirror(),
active_player_id: self.active_player_id, active_player_id: mirrored_active_player,
//active_player_id: self.active_player_id,
players: mirrored_players, players: mirrored_players,
history: mirrored_history, history: mirrored_history,
dice: self.dice, dice: self.dice,
@ -571,6 +572,7 @@ impl GameState {
*moves *moves
}; };
if !rules.moves_follow_rules(&moves) { if !rules.moves_follow_rules(&moves) {
println!(">>> rules not followed ");
error!("rules not followed "); error!("rules not followed ");
return false; return false;
} }

View file

@ -63,6 +63,7 @@ impl MoveRules {
fn get_board_from_color(color: &Color, board: &Board) -> Board { fn get_board_from_color(color: &Color, board: &Board) -> Board {
if *color == Color::Black { if *color == Color::Black {
println!("get_board_from_color -> mirror of {}", board);
board.mirror() board.mirror()
} else { } else {
board.clone() board.clone()
@ -74,6 +75,7 @@ impl MoveRules {
moves: &(CheckerMove, CheckerMove), moves: &(CheckerMove, CheckerMove),
// ignored_rules: Vec<TricTracRule>, // ignored_rules: Vec<TricTracRule>,
) -> bool { ) -> bool {
println!("in moves_follow_rules");
// Check moves possibles on the board // Check moves possibles on the board
// Check moves conforms to the dice // Check moves conforms to the dice
// Check move is allowed by the rules (to desactivate when playing with schools) // Check move is allowed by the rules (to desactivate when playing with schools)
@ -81,7 +83,8 @@ impl MoveRules {
let is_allowed = self.moves_allowed(moves); let is_allowed = self.moves_allowed(moves);
// let is_allowed = self.moves_allowed(moves, ignored_rules); // let is_allowed = self.moves_allowed(moves, ignored_rules);
if is_allowed.is_err() { if is_allowed.is_err() {
info!("Move not allowed : {:?}", is_allowed.unwrap_err()); println!("Move not allowed : {:?}", is_allowed.unwrap_err());
// info!("Move not allowed : {:?}", is_allowed.unwrap_err());
false false
} else { } else {
true true
@ -99,6 +102,7 @@ impl MoveRules {
if let Ok((field_count, Some(field_color))) = self.board.get_field_checkers(move0_from) if let Ok((field_count, Some(field_color))) = self.board.get_field_checkers(move0_from)
{ {
if color != field_color || field_count < 2 { if color != field_color || field_count < 2 {
println!("Move not physically possible 1");
info!("Move not physically possible"); info!("Move not physically possible");
return false; return false;
} }
@ -110,6 +114,7 @@ impl MoveRules {
if !self.board.passage_possible(color, &moves.0) if !self.board.passage_possible(color, &moves.0)
|| !self.board.move_possible(color, &chained_move) || !self.board.move_possible(color, &chained_move)
{ {
println!("Tout d'une : Move not physically possible");
info!("Tout d'une : Move not physically possible"); info!("Tout d'une : Move not physically possible");
return false; return false;
} }
@ -117,6 +122,11 @@ impl MoveRules {
|| !self.board.move_possible(color, &moves.1) || !self.board.move_possible(color, &moves.1)
{ {
// Move is not physically possible // Move is not physically possible
println!("Move not physically possible 2");
println!(
"board: {}, color: {:?} move: {:?}",
self.board, color, moves
);
info!("Move not physically possible"); info!("Move not physically possible");
return false; return false;
} }

View file

@ -58,8 +58,8 @@ impl TricTrac {
get_valid_action_indices(&self.game_state) get_valid_action_indices(&self.game_state)
} else { } else {
let mirror = self.game_state.mirror(); let mirror = self.game_state.mirror();
println!("get validd actions for mirror"); println!("get valid actions for mirror");
println!("{}", mirror); println!("/////{}", mirror);
get_valid_action_indices(&mirror) get_valid_action_indices(&mirror)
} }
} else { } else {
@ -92,14 +92,13 @@ impl TricTrac {
if let Some(event) = if let Some(event) =
TrictracAction::from_action_index(action_idx).and_then(|a| a.to_event(&self.game_state)) TrictracAction::from_action_index(action_idx).and_then(|a| a.to_event(&self.game_state))
{ {
println!(">get event {:?}", event); println!("apply action on {:?} ", event);
let event = if self.game_state.active_player_id == 2 { let event = if self.game_state.active_player_id == 2 {
event.get_mirror(true) event.get_mirror(true)
} else { } else {
event event
}; };
println!("validating event {:?}", event); println!("validating event {:?} on state {}", event, self.game_state);
if self.game_state.validate(&event) { if self.game_state.validate(&event) {
println!("valid event"); println!("valid event");
self.game_state.consume(&event); self.game_state.consume(&event);

View file

@ -196,6 +196,7 @@ pub fn get_valid_actions(game_state: &GameState) -> Vec<TrictracAction> {
let player_color = game_state.player_color_by_id(&active_player_id); let player_color = game_state.player_color_by_id(&active_player_id);
if let Some(color) = player_color { if let Some(color) = player_color {
println!("in get_valid_actions, color = {:?}", color);
match game_state.turn_stage { match game_state.turn_stage {
TurnStage::RollDice => { TurnStage::RollDice => {
valid_actions.push(TrictracAction::Roll); valid_actions.push(TrictracAction::Roll);
@ -229,6 +230,7 @@ pub fn get_valid_actions(game_state: &GameState) -> Vec<TrictracAction> {
} }
for (move1, move2) in possible_moves { for (move1, move2) in possible_moves {
println!("adding moves {:?} {:?}", move1, move2);
valid_actions.push(checker_moves_to_trictrac_action( valid_actions.push(checker_moves_to_trictrac_action(
&move1, &move2, &color, game_state, &move1, &move2, &color, game_state,
)); ));