summaryrefslogtreecommitdiff
path: root/model/src/board.rs
diff options
context:
space:
mode:
authorMike White <botahamec@outlook.com>2021-09-19 12:21:59 -0400
committerMike White <botahamec@outlook.com>2021-09-19 12:21:59 -0400
commit9644bb7aeede0635b2544192bef1069c1ad06f7d (patch)
tree18038cc28801a53439c91aabcc79934f53438264 /model/src/board.rs
parent20b6a686b8b67b2d9ceda4875c179c0e693689af (diff)
Fixed bug that allowed double jumps for other pieces
Diffstat (limited to 'model/src/board.rs')
-rw-r--r--model/src/board.rs9
1 files changed, 4 insertions, 5 deletions
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 {