From 9644bb7aeede0635b2544192bef1069c1ad06f7d Mon Sep 17 00:00:00 2001 From: Mike White Date: Sun, 19 Sep 2021 12:21:59 -0400 Subject: Fixed bug that allowed double jumps for other pieces --- model/src/board.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'model/src/board.rs') diff --git a/model/src/board.rs b/model/src/board.rs index a6eba23..e110575 100644 --- a/model/src/board.rs +++ b/model/src/board.rs @@ -541,7 +541,7 @@ impl CheckersBitBoard { const KING_MASK: u32 = 0b00100000100000100000000000001000; if (is_king || (((1 << value) & KING_MASK) == 0)) - && PossibleMoves::has_jumps(board.flip_turn()) + && PossibleMoves::has_jumps_at(board.flip_turn(), (value + 14) & 31) { board.flip_turn() } else { @@ -574,7 +574,7 @@ impl CheckersBitBoard { const KING_MASK: u32 = 0b00100000100000100000000000001000; if (is_king || (((1 << value) & KING_MASK) == 0)) - && PossibleMoves::has_jumps(board.flip_turn()) + && PossibleMoves::has_jumps_at(board.flip_turn(), (value + 2) & 31) { board.flip_turn() } else { @@ -607,7 +607,7 @@ impl CheckersBitBoard { const KING_MASK: u32 = 0b00000100000100000100000100000000; if (is_king || (((1 << value) & KING_MASK) == 0)) - && PossibleMoves::has_jumps(board.flip_turn()) + && PossibleMoves::has_jumps_at(board.flip_turn(), value.wrapping_sub(2) & 31) { board.flip_turn() } else { @@ -639,9 +639,8 @@ impl CheckersBitBoard { .clear_piece(value.wrapping_sub(7) & 31); const KING_MASK: u32 = 0b00000100000100000100000100000000; - // TODO double jump should only apply to the piece that just moved if (is_king || (((1 << value) & KING_MASK) == 0)) - && PossibleMoves::has_jumps(board.flip_turn()) + && PossibleMoves::has_jumps_at(board.flip_turn(), value.wrapping_sub(14) & 31) { board.flip_turn() } else { -- cgit v1.2.3