diff --git a/perftree-cli/src/bin/perftree.rs b/perftree-cli/src/bin/perftree.rs index c8b2680..47a41c5 100644 --- a/perftree-cli/src/bin/perftree.rs +++ b/perftree-cli/src/bin/perftree.rs @@ -102,6 +102,20 @@ fn main() -> io::Result<()> { "exit" | "quit" => { break; } + "chess960" | "frc" => { + if let Some(chess960) = words.next() { + match chess960.parse() { + Ok(chess960) => { + state.set_chess960(chess960)?; + } + Err(e) => { + eprintln!("cannot parse given bool: {}", e); + } + } + } else { + eprintln!("missing argument, expected true or false"); + } + } other => { eprintln!("unknown command {:?}", other); } diff --git a/perftree/src/lib.rs b/perftree/src/lib.rs index 44b9eed..6bb2558 100644 --- a/perftree/src/lib.rs +++ b/perftree/src/lib.rs @@ -82,6 +82,13 @@ impl State { .perft(&self.fen, &self.moves, self.depth - self.moves.len())?, )) } + + pub fn set_chess960(&mut self, chess960: bool) -> io::Result<()> { + write!( + self.stockfish.out, + "setoption name UCI_Chess960 value {chess960}\n", + ) + } } #[derive(Debug, Clone)]