Код: Выделить всё
0000000
0000000
0000000
0000100
0000100
0110110
Код: Выделить всё
bool isWin(long bitboard) {
if (bitboard & (bitboard >> 6) & (bitboard >> 12) & (bitboard >> 18) != 0) return true; // / diagonal
if (bitboard & (bitboard >> 8) & (bitboard >> 16) & (bitboard >> 24) != 0) return true; // \ diagonal
if (bitboard & (bitboard >> 7) & (bitboard >> 14) & (bitboard >> 21) != 0) return true; // vertical
if (bitboard & (bitboard >> 1) & (bitboard >> 2) & (bitboard >> 3) != 0) return true; // horizontal
return false;
}
Я пытался это исправить следующим образом:
Код: Выделить всё
long bMask = 0b0000000_1110000_1110000_1110000_1110000_1110000;
if ((_board & (_board >> 7) & (_board >> 14) & (_board >> 21)) != 0) { return true; } // vertical
long hori = _board & (_board >> 1) & (_board >> 2) & (_board >> 3);
if (hori != 0 && (pMask > 8) & (_board >> 16) & (_board >> 24);
if (ddia != 0 && (pMask > 6) & (_board >> 12) & (_board >> 18);
if (udia != 0 && (pMask
Подробнее здесь: [url]https://stackoverflow.com/questions/78422203/how-can-i-fix-my-connect-four-check-method[/url]