Ejemplo n.º 1
0
        public bool IsLegalEpMove(int fromIndex)
        {
            if (EpIndex == 0)
            {
                // required for tt-moves
                return(false);
            }

            // do-move and hit
            Pieces[ColorToMoveInverse][Pawn] ^= Util.PowerLookup[EpIndex + ColorFactor8[ColorToMoveInverse]];

            // check if is in check
            var isInCheck = CheckUtil.IsInCheck(KingIndex[ColorToMove], ColorToMove, Pieces[ColorToMoveInverse],
                                                (Pieces[ColorToMove][All] ^ Util.PowerLookup[fromIndex] ^ Util.PowerLookup[EpIndex])
                                                | (Pieces[ColorToMoveInverse][All] ^ Util.PowerLookup[EpIndex + ColorFactor8[ColorToMoveInverse]]));

            // undo-move and hit
            Pieces[ColorToMoveInverse][Pawn] |= Util.PowerLookup[EpIndex + ColorFactor8[ColorToMoveInverse]];

            return(!isInCheck);
        }
Ejemplo n.º 2
0
 private bool IsLegalNonKingMove(int move)
 {
     return(!CheckUtil.IsInCheck(KingIndex[ColorToMove], ColorToMove, Pieces[ColorToMoveInverse],
                                 AllPieces ^ Util.PowerLookup[MoveUtil.GetFromIndex(move)] ^
                                 Util.PowerLookup[MoveUtil.GetToIndex(move)]));
 }
Ejemplo n.º 3
0
 private bool IsLegalKingMove(int move)
 {
     return(!CheckUtil.IsInCheckIncludingKing(MoveUtil.GetToIndex(move), ColorToMove, Pieces[ColorToMoveInverse],
                                              AllPieces ^ Util.PowerLookup[MoveUtil.GetFromIndex(move)]));
 }