diff options
Diffstat (limited to 'src/moves.cpp')
| -rw-r--r-- | src/moves.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/moves.cpp b/src/moves.cpp index 5401e8b..d7df595 100644 --- a/src/moves.cpp +++ b/src/moves.cpp @@ -123,6 +123,36 @@ std::vector<Move> GetPseudoLegalMoves(Game *b) { return moves; } +bool IsSquareAttacked(Game *board, Position square, bool white) { + Game temp = *board; + + // Generate moves for the attacking side + temp.turn = white; + + auto moves = GetPseudoLegalMoves(&temp); + + for (const Move &move : moves) { + if (move.To == square) + return true; + } + + return false; +} +bool IsPieceTypeAttacked(Game *board, PieceType type, bool white) { + Game temp = *board; + + // Generate moves for the attacking side + temp.turn = white; + + auto moves = GetPseudoLegalMoves(&temp); + + for (const Move &move : moves) { + if (temp.pieces[PositionToIndex(move.To)].type == type) + return true; + } + + return false; +} std::vector<Move> GetLegalMoves(Game *b) { std::vector<Move> moves = GetPseudoLegalMoves(b); std::vector<Move> legalMove; |
