std::cout << std::endl;
if (m != MOVE_NONE)
{
+ Position p(*this);
string col = (color_of_piece_on(move_from(m)) == BLACK ? ".." : "");
- std::cout << "Move is: " << col << move_to_san(*this, m) << std::endl;
+ std::cout << "Move is: " << col << move_to_san(p, m) << std::endl;
}
for (Rank rank = RANK_8; rank >= RANK_1; rank--)
{
}
+///
+PieceType Position::captured_piece() const {
+ return st->capture;
+}
+
/// Position::see() is a static exchange evaluator: It tries to estimate the
/// material gain or loss resulting from a move. There are three versions of
/// this function: One which takes a destination square as input, one takes a
/// Position::is_draw() tests whether the position is drawn by material,
/// repetition, or the 50 moves rule. It does not detect stalemates, this
/// must be done by the search.
+// FIXME: Currently we are not handling 50 move rule correctly when in check
bool Position::is_draw() const {
return true;
// Draw by repetition?
- for (int i = 2; i < Min(Min(gamePly, st->rule50), st->pliesFromNull); i += 2)
+ for (int i = 4; i <= Min(Min(gamePly, st->rule50), st->pliesFromNull); i += 2)
if (history[gamePly - i] == st->key)
return true;