示例#1
0
 public static BitBoard GetAttacks(this Square square, EPieceType pieceType, BitBoard occupied = new BitBoard())
 {
     return(pieceType == EPieceType.Knight || pieceType == EPieceType.King
         ? PseudoAttacksBB[pieceType.AsInt(), square.AsInt()]
         : pieceType == EPieceType.Bishop
             ? square.BishopAttacks(occupied)
             : pieceType == EPieceType.Rook
                 ? square.RookAttacks(occupied)
                 : pieceType == EPieceType.Queen
                     ? square.QueenAttacks(occupied)
                     : Zero);
 }
示例#2
0
        public static BitBoard GetAttacks(this Square square, EPieceType pieceType, BitBoard occupied = new BitBoard())
        {
            switch (pieceType)
            {
            case EPieceType.Knight:
            case EPieceType.King:
                return(PseudoAttacksBB[pieceType.AsInt(), square.AsInt()]);

            case EPieceType.Bishop:
                return(square.BishopAttacks(occupied));

            case EPieceType.Rook:
                return(square.RookAttacks(occupied));

            case EPieceType.Queen:
                return(square.QueenAttacks(occupied));

            default:
                return(EmptyBitBoard);
            }
        }
示例#3
0
 public static BitBoard KingRing(this Square sq, Player side) => KingRingBB[side.Side, sq.AsInt()];
示例#4
0
 public static BitBoard Line(this Square s1, Square s2) => LineBB[s1.AsInt(), s2.AsInt()];
示例#5
0
 public static BitBoard BitboardBetween(this Square firstSquare, Square secondSquare) => BetweenBB[firstSquare.AsInt(), secondSquare.AsInt()];
示例#6
0
 public static BitBoard ForwardRanks(this Square @this, Player side) => ForwardRanksBB[side.Side, @this.AsInt()];
示例#7
0
 public static BitBoard PassedPawnFrontAttackSpan(this Square @this, Player side) => PassedPawnMaskBB[side.Side, @this.AsInt()];
示例#8
0
 public static BitBoard PawnAttackSpan(this Square @this, Player side) => PawnAttackSpanBB[side.Side, @this.AsInt()];
示例#9
0
 public static File File(this Square s) => s.AsInt() & 7;
示例#10
0
 public static ref BitBoard PseudoAttack(this Square @this, EPieceType pieceType) => ref PseudoAttacksBB[pieceType.AsInt(), @this.AsInt()];
示例#11
0
 public static BitBoard KingAttacks(this Square square) => PseudoAttacksBB[EPieceType.King.AsInt(), square.AsInt()];
示例#12
0
 public static Rank Rank(this Square s) => (ERank)(s.AsInt() >> 3);
示例#13
0
 internal static Square GetRookCastleTo(this Square square) => RookCastlesTo[square.AsInt()];
示例#14
0
 public static BitBoard BitBoardSquare(this Square sq) => BitBoards.BbSquares[sq.AsInt()];
示例#15
0
 public static string GetSquareString(this Square s) => SquareStrings[s.AsInt()];
示例#16
0
 public static byte Distance(this Square source, Square destination) => SquareDistance[source.AsInt(), destination.AsInt()];
示例#17
0
 public static BitBoard DistanceRing(this Square square, int length) => DistanceRingBB[square.AsInt(), length];
示例#18
0
 public static ref BitBoard PawnAttack(this Square @this, Player side) => ref PseudoAttacksBB[side.Side, @this.AsInt()];