Files
chess_dragon/engine/src/lib.rs
T
2026-08-24 23:19:51 -04:00

70 lines
1.6 KiB
Rust

pub mod mcts;
mod net;
pub mod train;
use chess::Game;
pub const DEFAULT_MAX_DEPTH: u16 = 6;
pub const DEFAULT_PLAYER_TIME_REMAINING_MS: u64 = 120_000; // 2 minutes
pub const DEFAULT_PLAYER_INCREMENT_MS: u64 = 0;
pub struct Engine {
pub game: Game,
pub search_settings: SearchSettings,
}
pub struct SearchSettings {
pub wtime: u64,
pub btime: u64,
pub winc: u64,
pub binc: u64,
pub movetime: Option<u64>,
pub max_depth: Option<u16>,
pub max_nodes: Option<usize>,
}
impl Default for SearchSettings {
fn default() -> Self {
SearchSettings::new(None, None, None, None, None, None, None)
}
}
impl SearchSettings {
pub fn new(
wtime: Option<u64>,
btime: Option<u64>,
winc: Option<u64>,
binc: Option<u64>,
movetime: Option<u64>,
max_depth: Option<u16>,
max_nodes: Option<usize>,
) -> Self {
SearchSettings {
wtime: wtime.unwrap_or(DEFAULT_PLAYER_TIME_REMAINING_MS),
btime: btime.unwrap_or(DEFAULT_PLAYER_TIME_REMAINING_MS),
winc: winc.unwrap_or(DEFAULT_PLAYER_INCREMENT_MS),
binc: binc.unwrap_or(DEFAULT_PLAYER_INCREMENT_MS),
movetime,
max_depth,
max_nodes,
}
}
}
impl Default for Engine {
fn default() -> Self {
Engine::new(None)
}
}
impl Engine {
pub fn new(search_settings: Option<SearchSettings>) -> Self {
Engine {
game: Game::new(),
search_settings: search_settings.unwrap_or(SearchSettings::default()),
}
}
pub fn go(&mut self) {}
}