[Board] Implement piece and setPiece
This commit is contained in:
21
Board.cpp
21
Board.cpp
@@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user