Ejemplo n.º 1
0
        internal static void AddRookMoves(Position position, List <Move> allMoves)
        {
            Board    board      = position.Board;
            Side     sideToMove = position.SideToMove;
            Bitboard rooks      = board[sideToMove, Piece.Rook];

            int[] rookSources = rooks.Serialize();
            for (int i = 0; i < rookSources.Length; i++)
            {
                Square   from    = (Square)rookSources[i];
                Bitboard attacks = SlidingPieceMoves.RookAttacks(from, board.OccupiedSquares);
                AddMovesFromAttacks(attacks, from, sideToMove, board, allMoves);
            }
        }
Ejemplo n.º 2
0
        internal static void AddQueenMoves(Position position, List <Move> allMoves)
        {
            Board    board      = position.Board;
            Side     sideToMove = position.SideToMove;
            Bitboard queens     = board[sideToMove, Piece.Queen];

            int[] queenSources = queens.Serialize();
            for (int i = 0; i < queenSources.Length; i++)
            {
                Square   from    = (Square)queenSources[i];
                Bitboard attacks = SlidingPieceMoves.QueenAttacks(from, board.OccupiedSquares);
                AddMovesFromAttacks(attacks, from, sideToMove, board, allMoves);
            }
        }
Ejemplo n.º 3
0
        internal static void AddBishopMoves(Position position, List <Move> allMoves)
        {
            Board    board      = position.Board;
            Side     sideToMove = position.SideToMove;
            Bitboard bishops    = board[sideToMove, Piece.Bishop];

            int[] bishopSources = bishops.Serialize();
            for (int i = 0; i < bishopSources.Length; i++)
            {
                Square   from    = (Square)bishopSources[i];
                Bitboard attacks = SlidingPieceMoves.BishopAttacks(from, board.OccupiedSquares);
                AddMovesFromAttacks(attacks, from, sideToMove, board, allMoves);
            }
        }