Advertisement
Guest User

Untitled

a guest
May 24th, 2015
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. bool Board::is_check(Color c)
  2. {
  3. int king_pos = BitboardHelper::get_position(board_[c][KING]);
  4.  
  5. return is_check(king_pos, c);
  6. }
  7.  
  8. bool Board::is_check(int king_pos, Color c)
  9. {
  10. Color opponent = get_opponent_color(c);
  11.  
  12. return
  13. (is_a_valid_move(king_pos, KING, opponent, false, false)
  14. || is_a_valid_move(king_pos, QUEEN, opponent, false, false)
  15. || is_a_valid_move(king_pos, KNIGHTS, opponent, false, false)
  16. || is_a_valid_move(king_pos, ROOKS, opponent, false, false)
  17. || is_a_valid_move(king_pos, BISHOPS, opponent, false, false)
  18. || is_a_valid_move(king_pos, PAWNS, opponent, false, false)
  19. || is_a_valid_move(king_pos, PAWNS, opponent, false, true)
  20. || is_a_valid_move(king_pos, PAWNS, opponent, true, false));
  21. }
  22.  
  23. bool Board::is_checkmate(Color c)
  24. {
  25. if (!is_check(c))
  26. return false;
  27.  
  28. for (int m : BitboardHelper::get_positions(get_king_attacks(
  29. BitboardHelper::get_position(board_[c][KING]), c)))
  30. if (!is_check(m, c))
  31. return false;
  32.  
  33. return true;
  34. }
  35.  
  36. bool Board::is_a_valid_move_for(int move, Color c)
  37. {
  38. return
  39. (!is_a_valid_move(move, KING, c, false, false)
  40. && !is_a_valid_move(move, QUEEN, c, false, false)
  41. && !is_a_valid_move(move, KNIGHTS, c, false, false)
  42. && !is_a_valid_move(move, ROOKS, c, false, false)
  43. && !is_a_valid_move(move, BISHOPS, c, false, false)
  44. && !is_a_valid_move(move, PAWNS, c, false, false));
  45.  
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement