From d2b28aa31a84f43bf5c4f375357e0f013337cdaf Mon Sep 17 00:00:00 2001 From: Botahamec Date: Fri, 9 Jul 2021 17:31:15 -0400 Subject: here's what i have so far --- ai/src/lib.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 ai/src/lib.rs (limited to 'ai/src') diff --git a/ai/src/lib.rs b/ai/src/lib.rs new file mode 100644 index 0000000..4e22708 --- /dev/null +++ b/ai/src/lib.rs @@ -0,0 +1,27 @@ +pub use model::{CheckersBitBoard, Move, PieceColor, PossibleMoves}; + +const KING_WORTH: u32 = 2; + +fn eval_position(board: CheckersBitBoard) -> f32 { + let light_pieces = board.pieces_bits() & !board.color_bits(); + let dark_pieces = board.pieces_bits() & board.color_bits(); + + let light_peasants = light_pieces & !board.king_bits(); + let dark_peasants = dark_pieces & !board.king_bits(); + + let light_kings = light_pieces & board.king_bits(); + let dark_kings = dark_pieces & board.king_bits(); + + // if we assume the black player doesn't exist, how good is this for white? + let light_eval = + (light_peasants.count_ones() as f32) + ((light_kings.count_ones() * KING_WORTH) as f32); + let dark_eval = + (dark_peasants.count_ones() as f32) + ((dark_kings.count_ones() * KING_WORTH) as f32); + + // avoiding a divide by zero error + if dark_eval + light_eval != 0.0 { + light_eval / (dark_eval + light_eval) + } else { + 0.0 + } +} -- cgit v1.2.3