From be57e25a48fa99ca74bc6552de63bbec47347934 Mon Sep 17 00:00:00 2001 From: ramollia <> Date: Thu, 4 Dec 2025 20:12:15 +0100 Subject: [PATCH] fixed getLegalMoves & getFlips --- .../game/games/reversi/BitboardReversi.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/game/src/main/java/org/toop/game/games/reversi/BitboardReversi.java b/game/src/main/java/org/toop/game/games/reversi/BitboardReversi.java index e702bfe..add6d87 100644 --- a/game/src/main/java/org/toop/game/games/reversi/BitboardReversi.java +++ b/game/src/main/java/org/toop/game/games/reversi/BitboardReversi.java @@ -26,21 +26,28 @@ public class BitboardReversi extends BitboardGame { setPlayerBitboard(0, (1L << (3 + 4 * 8)) | (1L << (4 + 3 * 8))); // White (player 1) - setPlayerBitboard(1, (1L << (3 + 3 * 8)) | (1L << (4 + 4 * 8))); } + setPlayerBitboard(1, (1L << (3 + 3 * 8)) | (1L << (4 + 4 * 8))); + } public long getLegalMoves2() { final long player = getPlayerBitboard(getCurrentPlayerIndex()); final long opponent = getPlayerBitboard(getNextPlayer()); long legalMoves = 0L; + + // north & south legalMoves |= computeMoves(player, opponent, 8, -1L); legalMoves |= computeMoves(player, opponent, -8, -1L); + + // east & west legalMoves |= computeMoves(player, opponent, 1, notAFile); legalMoves |= computeMoves(player, opponent, -1, notHFile); + + // north-east & north-west & south-east & south-west legalMoves |= computeMoves(player, opponent, 9, notAFile); legalMoves |= computeMoves(player, opponent, 7, notHFile); - legalMoves |= computeMoves(player, opponent, -7, notHFile); - legalMoves |= computeMoves(player, opponent, -9, notAFile); + legalMoves |= computeMoves(player, opponent, -7, notAFile); + legalMoves |= computeMoves(player, opponent, -9, notHFile); return legalMoves; } @@ -50,14 +57,20 @@ public class BitboardReversi extends BitboardGame { final long opponent = getPlayerBitboard(getNextPlayer()); long flips = 0L; + + // north & south flips |= computeFlips(move, player, opponent, 8, -1L); flips |= computeFlips(move, player, opponent, -8, -1L); + + // east & west flips |= computeFlips(move, player, opponent, 1, notAFile); flips |= computeFlips(move, player, opponent, -1, notHFile); + + // north-east & north-west & south-east & south-west flips |= computeFlips(move, player, opponent, 9, notAFile); flips |= computeFlips(move, player, opponent, 7, notHFile); - flips |= computeFlips(move, player, opponent, -7, notHFile); - flips |= computeFlips(move, player, opponent, -9, notAFile); + flips |= computeFlips(move, player, opponent, -7, notAFile); + flips |= computeFlips(move, player, opponent, -9, notHFile); return flips; }