[Board] Implement piece and setPiece

This commit is contained in:
2022-12-21 00:25:10 +01:00
parent 414009fe6b
commit 6ab8bbe40f
2 changed files with 48 additions and 3 deletions

View File

@@ -3,17 +3,32 @@
#include <ostream>
#include <cassert>
#include <cmath>
#include <bitset>
#include <algorithm>
Board::Board() {
}
void Board::setPiece(const Square &square, const Piece::Optional &piece) {
(void) square;
(void) piece;
auto index = square.index();
for (auto &item : mPieceBBs) {
clearIndex(item, index);
}
setIndex(mPieceBBs[piece->typeVal() + piece->colorVal()], index);
}
Piece::Optional Board::piece(const Square &square) const {
(void) square;
int i = 0;
BitBoard mask = indexToBitBoard(square.index());
for (const auto &kPieceBb : mPieceBBs) {
if (kPieceBb & mask) {
return Piece(indexToColor(i), indexToType(i));
}
i++;
}
return std::nullopt;
}