summaryrefslogtreecommitdiff
path: root/ai/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ai/src/lib.rs')
-rw-r--r--ai/src/lib.rs13
1 files changed, 10 insertions, 3 deletions
diff --git a/ai/src/lib.rs b/ai/src/lib.rs
index 583c50b..405c88d 100644
--- a/ai/src/lib.rs
+++ b/ai/src/lib.rs
@@ -26,7 +26,7 @@ fn eval_position(board: CheckersBitBoard) -> f32 {
}
}
-pub fn eval(depth: usize, board: CheckersBitBoard) -> f32 {
+pub fn eval(depth: usize, mut alpha: f32, beta: f32, board: CheckersBitBoard) -> f32 {
if depth == 0 {
eval_position(board)
} else {
@@ -35,14 +35,21 @@ pub fn eval(depth: usize, board: CheckersBitBoard) -> f32 {
for current_move in PossibleMoves::moves(board) {
let board = unsafe { current_move.apply_to(board) };
let current_eval = if board.turn() != turn {
- 1.0 - eval(depth - 1, board)
+ 1.0 - eval(depth - 1, 1.0 - beta, 1.0 - alpha, board)
} else {
- eval(depth - 1, board)
+ eval(depth - 1, alpha, beta, board)
};
+ if current_eval >= beta {
+ return beta;
+ }
+
if best_eval < current_eval {
best_eval = current_eval;
}
+ if alpha < best_eval {
+ alpha = best_eval;
+ }
}
best_eval