Implement Search
This commit is contained in:
23
BitBoard.cpp
23
BitBoard.cpp
@@ -1,4 +1,3 @@
|
||||
#include <iostream>
|
||||
#include "BitBoard.hpp"
|
||||
|
||||
BitBoard::BitBoard(uint64_t v) {
|
||||
@@ -67,11 +66,12 @@ BitBoard BitBoard::castlingMoves(BitBoard kings, BitBoard rooks, BitBoard empty)
|
||||
|
||||
BitBoard BitBoard::bishopAttacks(BitBoard bishops, BitBoard empty) {
|
||||
BitBoard result = 0;
|
||||
BitBoard diag1 = bishops;
|
||||
BitBoard diag2 = bishops;
|
||||
empty ^= bishops;
|
||||
|
||||
for (int i = 0; i < 7; i++) {
|
||||
BitBoard diag1 = (bishops.northWest() | bishops.southEast() | bishops) & empty;
|
||||
BitBoard diag2 = (bishops.northEast() | bishops.southWest() | bishops) & empty;
|
||||
|
||||
for (int i = 0; i < 6; i++) {
|
||||
result |= (diag1 | diag2);
|
||||
diag1 = (diag1.northWest() | diag1.southEast()) & empty;
|
||||
diag2 = (diag2.northEast() | diag2.southWest()) & empty;
|
||||
@@ -82,17 +82,18 @@ BitBoard BitBoard::bishopAttacks(BitBoard bishops, BitBoard empty) {
|
||||
|
||||
BitBoard BitBoard::rookAttacks(BitBoard rooks, BitBoard empty) {
|
||||
BitBoard result = 0;
|
||||
BitBoard diag1 = rooks;
|
||||
BitBoard diag2 = rooks;
|
||||
empty ^= rooks;
|
||||
|
||||
for (int i = 0; i < 7; i++) {
|
||||
result |= (diag1 | diag2);
|
||||
diag1 = (diag1.north() | diag1.south()) & empty;
|
||||
diag2 = (diag2.east() | diag2.west()) & empty;
|
||||
BitBoard dir1 = (rooks.north() | rooks.south() | rooks) & empty;
|
||||
BitBoard dir2 = (rooks.east() | rooks.west() | rooks) & empty;
|
||||
|
||||
for (int i = 0; i < 6; i++) {
|
||||
result |= (dir1 | dir2);
|
||||
dir1 = (dir1.north() | dir1.south()) & empty;
|
||||
dir2 = (dir2.east() | dir2.west()) & empty;
|
||||
}
|
||||
|
||||
return (result | diag1.north() | diag1.south() | diag2.east() | diag2.west()) & ~rooks;
|
||||
return (result | dir1.north() | dir1.south() | dir2.east() | dir2.west()) & ~rooks;
|
||||
}
|
||||
|
||||
BitBoard BitBoard::queenAttacks(BitBoard queens, BitBoard empty) {
|
||||
|
Reference in New Issue
Block a user