Ejemplo n.º 1
0
        protected void clearPseudoMaterialMoveLists(List <Move> moves)
        {
            moves.Clear();
            clearPseudoCaptures();

            PseudoEPCapture.Clear();
            PseudoQueenPromotion.Clear();
            PseudoUnderPromotion.Clear();
            PseudoQueenPromotionCapture.Clear();
            PseudoUnderPromotionCapture.Clear();

            PseudoCaptures.Clear();
        }
Ejemplo n.º 2
0
        //
        //[Warning]Duplicate Moves can result in a number of strange, difficult to debug side-effects.
        //
        protected void clearPseudoMoveLists(List <Move> moves, Boolean bSwap) // ~32 MHz
        {
            moves.Clear();
            clearPseudoCaptures();
            clearPseudoMoves();

            PseudoCastles.Clear();
            PseudoEPCapture.Clear();
            PseudoQueenPromotion.Clear();
            PseudoUnderPromotion.Clear();
            PseudoQueenPromotionCapture.Clear();
            PseudoUnderPromotionCapture.Clear();
            PseudoCaptures.Clear();

            if (bSwap)
            {
                PseudoBadCaptures.Clear();
                PseudoGoodCaptures.Clear();
            }
#if !UseMoveSort
            SiftedMoves.Clear();        // See sortMoves()
#endif
        }
Ejemplo n.º 3
0
        protected void addPawnCapture(Int32 nFrom, Int32 nTo, Boolean bAbove, Boolean bPromote, Boolean bEnPassant)
        {
#if DebugSquares
            Debug.Assert(getPieceIndex(nFrom) == vP6, "Piece not a Pawn");
            Debug.Assert((nTo & uSquareMask) == nTo, "To Overflow");
#endif
            var capture = bEnPassant ? Piece.EP : Piece.Capture;
            var move    = captureMove(capture) | PawnMove | fromToMove(nFrom, nTo);
#if DebugMoveColor
            if (WTM())
            {
                move |= Move.WTM;
            }
#endif
            if (bPromote)
            {
                foreach (var p in Promotions)
                {
                    var moves = p == Piece.Q ?
                                PseudoQueenPromotionCapture : PseudoUnderPromotionCapture;
                    moves.Add(promotionMove(p) | move);
                }
            }
            else if (bEnPassant)
            {
#if DebugSquares
                Debug.Assert(getPieceIndex(nTo) == vPieceNull, "Passed Square not Empty");
#endif
                PseudoEPCapture.Add(move);
            }
            else
            {
                var moves = bAbove ? PseudoPawnAboveCapture : PseudoPawnBelowCapture;
                moves.Add(move);
            }
        }