use std::num::NonZeroU8;
use engine::{ActualLimit, Engine, EvaluationSettings, Frontend};
use mimalloc::MiMalloc;
use model::CheckersBitBoard;
#[global_allocator]
static ALLOCATOR: MiMalloc = MiMalloc;
const DEPTH: u8 = 19;
struct BasicFrontend;
impl Frontend for BasicFrontend {
fn debug(&self, msg: &str) {
println!("{msg}");
}
fn report_best_move(&self, best_move: model::Move) {
println!("{best_move}");
}
}
fn main() {
let engine = Box::leak(Box::new(Engine::new(1_000_000, &BasicFrontend)));
let (_, best) = engine.evaluate(
None,
EvaluationSettings {
restrict_moves: None,
ponder: false,
clock: engine::Clock::Unlimited,
search_until: engine::SearchLimit::Limited(ActualLimit {
nodes: None,
depth: Some(NonZeroU8::new(DEPTH).unwrap()),
time: None,
}),
},
);
engine.set_position(CheckersBitBoard::new(
4294967295,
2206409603,
3005432691,
model::PieceColor::Light,
));
engine.evaluate(
None,
EvaluationSettings {
restrict_moves: None,
ponder: false,
clock: engine::Clock::Unlimited,
search_until: engine::SearchLimit::Limited(ActualLimit {
nodes: None,
depth: Some(NonZeroU8::new(DEPTH).unwrap()),
time: None,
}),
},
);
}
|