From f57af4d203fd86a35f088786ba06531539c2190b Mon Sep 17 00:00:00 2001 From: fsmosca Date: Mon, 5 Apr 2021 13:31:21 +0800 Subject: [PATCH] Update position.cpp * Add is_fifty_move_draw() and is_three_fold_repetition for gensfen() --- src/position.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/position.cpp b/src/position.cpp index 934c1403..1b5ff222 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -1180,6 +1180,22 @@ bool Position::is_draw(int ply) const { } +/// Position::is_fifty_move_draw() returns true if a game can be claimed +/// by a fifty-move draw rule. + +bool Position::is_fifty_move_draw() const { + + return (st->rule50 > 99 && (!checkers() || MoveList(*this).size())); +} + + +/// Position::is_three_fold_repetition() returns true if there is 3-fold repetition. +bool Position::is_three_fold_repetition() const { + + return st->repetition < 0; +} + + // Position::has_repeated() tests whether there has been at least one repetition // of positions since the last capture or pawn move.