Implement Search

This commit is contained in:
2022-12-23 18:34:34 +01:00
parent bcf4d66c49
commit 87adca7e66
15 changed files with 337 additions and 66 deletions

View File

@@ -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) {