From 53f95c0fe4d0c8f19bec4e7816a488933ae13af1 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sun, 12 Jan 2025 16:38:43 +0100 Subject: [PATCH] display logs --- Cargo.lock | 106 +++++++++++++++++++++++++++++++++- client_cli/Cargo.toml | 1 + client_cli/src/main.rs | 1 + justfile | 12 ++-- store/Cargo.toml | 3 +- store/src/game.rs | 5 +- store/src/game_rules_moves.rs | 22 +++++-- 7 files changed, 130 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 916e234..8e5595a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -27,6 +27,55 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +dependencies = [ + "anstyle", + "windows-sys 0.59.0", +] + [[package]] name = "anyhow" version = "1.0.89" @@ -143,6 +192,7 @@ dependencies = [ "anyhow", "bincode", "bot", + "env_logger 0.11.6", "itertools", "pico-args", "pretty_assertions", @@ -161,6 +211,12 @@ dependencies = [ "store", ] +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + [[package]] name = "compact_str" version = "0.8.0" @@ -232,6 +288,16 @@ version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +[[package]] +name = "env_filter" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +dependencies = [ + "log", + "regex", +] + [[package]] name = "env_logger" version = "0.10.0" @@ -245,6 +311,19 @@ dependencies = [ "termcolor", ] +[[package]] +name = "env_logger" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -347,6 +426,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itertools" version = "0.13.0" @@ -386,9 +471,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" @@ -871,7 +956,7 @@ name = "trictrac-server" version = "0.1.0" dependencies = [ "bincode", - "env_logger", + "env_logger 0.10.0", "log", "pico-args", "renet", @@ -923,6 +1008,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "version_check" version = "0.9.4" @@ -984,6 +1075,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-targets" version = "0.48.5" diff --git a/client_cli/Cargo.toml b/client_cli/Cargo.toml index 1e98a21..4dcd86f 100644 --- a/client_cli/Cargo.toml +++ b/client_cli/Cargo.toml @@ -14,3 +14,4 @@ renet = "0.0.13" store = { path = "../store" } bot = { path = "../bot" } itertools = "0.13.0" +env_logger = "0.11.6" diff --git a/client_cli/src/main.rs b/client_cli/src/main.rs index ede5840..69b3700 100644 --- a/client_cli/src/main.rs +++ b/client_cli/src/main.rs @@ -25,6 +25,7 @@ ARGS: "; fn main() -> Result<()> { + env_logger::init(); let args = match parse_args() { Ok(v) => v, Err(e) => { diff --git a/justfile b/justfile index 077917b..5ca8d5c 100644 --- a/justfile +++ b/justfile @@ -6,11 +6,7 @@ doc: cargo doc --no-deps shell: devenv shell -startserver: - RUST_LOG=trictrac_server cargo run --bin trictrac-server -startclient1: - RUST_LOG=trictrac_client cargo run --bin=trictrac-client Titi -startclient2: - RUST_LOG=trictrac_client cargo run --bin=trictrac-client Titu -startclienttui: - RUST_LOG=trictrac_client cargo run --bin=client_tui Tutu +runcli: + RUST_LOG=info cargo run --bin=client_cli +runclibots: + RUST_LOG=info cargo run --bin=client_cli -- --bot dummy,dummy diff --git a/store/Cargo.toml b/store/Cargo.toml index b728263..e0e6195 100644 --- a/store/Cargo.toml +++ b/store/Cargo.toml @@ -7,8 +7,9 @@ edition = "2021" [dependencies] base64 = "0.21.7" +# provides macros for creating log messages to be used by a logger (for example env_logger) log = "0.4.20" merge = "0.1.0" rand = "0.8.5" -serde = { version = "1.0", features = ["derive"] } +serde = { version = "1.0", features = ["derive"] } transpose = "0.2.2" diff --git a/store/src/game.rs b/store/src/game.rs index cde7001..ffb8afc 100644 --- a/store/src/game.rs +++ b/store/src/game.rs @@ -491,8 +491,9 @@ impl GameState { p.dice_roll_count = 0; // reset bredouille p.can_bredouille = true; - // switch colors - p.color = p.color.opponent_color(); + // XXX : switch colors + // désactivé pour le moment car la vérification des mouvements échoue, cf. https://code.rhumbs.fr/henri/trictrac/issues/31 + // p.color = p.color.opponent_color(); }); // joueur actif = joueur ayant sorti ses dames ou est parti (donc deux jeux successifs) self.turn_stage = TurnStage::RollDice; diff --git a/store/src/game_rules_moves.rs b/store/src/game_rules_moves.rs index adc047e..378bf3e 100644 --- a/store/src/game_rules_moves.rs +++ b/store/src/game_rules_moves.rs @@ -3,6 +3,7 @@ use crate::board::{Board, CheckerMove, Field, EMPTY_MOVE}; use crate::dice::Dice; use crate::game::GameState; use crate::player::Color; +use log::info; use std::cmp; #[derive(std::cmp::PartialEq, Debug)] @@ -65,27 +66,34 @@ impl MoveRules { // Check moves possibles on the board // Check moves conforms to the dice // Check move is allowed by the rules (to desactivate when playing with schools) - self.moves_possible(moves) - && self.moves_follows_dices(moves) - && self.moves_allowed(moves).is_ok() + self.moves_possible(moves) && self.moves_follows_dices(moves) && { + let is_allowed = self.moves_allowed(moves); + if is_allowed.is_err() { + info!("Move not allowed : {:?}", is_allowed.unwrap_err()); + false + } else { + true + } + } + // && self.moves_allowed(moves).is_ok() } /// ---- moves_possibles : First of three checks for moves fn moves_possible(&self, moves: &(CheckerMove, CheckerMove)) -> bool { - println!("possible ???"); let color = &Color::White; if let Ok(chained_move) = moves.0.chain(moves.1) { // Check intermediary move and chained_move : "Tout d'une" if !self.board.passage_possible(color, &moves.0) || !self.board.move_possible(color, &chained_move) { + info!("Tout d'une : Move not physically possible"); return false; } } else if !self.board.move_possible(color, &moves.0) || !self.board.move_possible(color, &moves.1) { // Move is not physically possible - println!("no phys! {} {:?}", self.board, moves); + info!("Move not physically possible"); return false; } true @@ -103,10 +111,12 @@ impl MoveRules { let move1_dices = self.get_move_compatible_dices(move1); if move1_dices.is_empty() { + info!("Move does not follow dice"); return false; } let move2_dices = self.get_move_compatible_dices(move2); if move2_dices.is_empty() { + info!("Move does not follow dice"); return false; } if move1_dices.len() == 1 @@ -114,6 +124,7 @@ impl MoveRules { && move1_dices[0] == move2_dices[0] && dice1 != dice2 { + info!("Move does not follow dice"); return false; } @@ -1038,7 +1049,6 @@ mod tests { CheckerMove::new(8, 13).unwrap(), CheckerMove::new(13, 19).unwrap(), ); - println!("{:?}", state.moves_allowed(&moves)); assert!(state.moves_allowed(&moves).is_ok()); // s'il n'y a pas d'autre solution, on peut rompre