summaryrefslogtreecommitdiff
path: root/engine/src/main.rs
blob: d4bcc48dcd047cc0d75e4a45ffa8f1b64e887f4c (plain)
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,
			}),
		},
	);
}