Ejemplo n.º 1
0
        protected void addCastles(BoardSide friend, CastleRuleParameter friendRule, BoardSide foe)
        {
            Debug.Assert(!InCheck(), "addCastles() called while InCheck");

            if (canOO(friend, foe, friendRule))
            {
#if DebugMoveColor
                PseudoCastles.Add(Move.WTM | friendRule.OO);
#else
                PseudoCastles.Add(friendRule.OO);
#endif
            }

            if (canOOO(friend, foe, friendRule))
            {
#if DebugMoveColor
                PseudoCastles.Add(Move.WTM | friendRule.OOO);
#else
                PseudoCastles.Add(friendRule.OOO);
#endif
            }
        }
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
        }