Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool Board::is_check(Color c)
- {
- int king_pos = BitboardHelper::get_position(board_[c][KING]);
- return is_check(king_pos, c);
- }
- bool Board::is_check(int king_pos, Color c)
- {
- Color opponent = get_opponent_color(c);
- return
- (is_a_valid_move(king_pos, KING, opponent, false, false)
- || is_a_valid_move(king_pos, QUEEN, opponent, false, false)
- || is_a_valid_move(king_pos, KNIGHTS, opponent, false, false)
- || is_a_valid_move(king_pos, ROOKS, opponent, false, false)
- || is_a_valid_move(king_pos, BISHOPS, opponent, false, false)
- || is_a_valid_move(king_pos, PAWNS, opponent, false, false)
- || is_a_valid_move(king_pos, PAWNS, opponent, false, true)
- || is_a_valid_move(king_pos, PAWNS, opponent, true, false));
- }
- bool Board::is_checkmate(Color c)
- {
- if (!is_check(c))
- return false;
- for (int m : BitboardHelper::get_positions(get_king_attacks(
- BitboardHelper::get_position(board_[c][KING]), c)))
- if (!is_check(m, c))
- return false;
- return true;
- }
- bool Board::is_a_valid_move_for(int move, Color c)
- {
- return
- (!is_a_valid_move(move, KING, c, false, false)
- && !is_a_valid_move(move, QUEEN, c, false, false)
- && !is_a_valid_move(move, KNIGHTS, c, false, false)
- && !is_a_valid_move(move, ROOKS, c, false, false)
- && !is_a_valid_move(move, BISHOPS, c, false, false)
- && !is_a_valid_move(move, PAWNS, c, false, false));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement