Beispiel #1
0
        public Bitboard GetMoveBoard(Square from, Bitboard friends, Bitboard enemies)
        {
            var allpieces = friends.And(enemies);
            var result = Bitboard.Empty.And(from.File, from.Rank);

            return result.Except(from, friends,
                from.RayTo.N.Intersect(allpieces).LowestSquare.RayTo.N,
                from.RayTo.E.Intersect(allpieces).LowestSquare.RayTo.E,
                from.RayTo.S.Intersect(allpieces).HighestSquare.RayTo.S,
                from.RayTo.W.Intersect(allpieces).HighestSquare.RayTo.W);
        }
Beispiel #2
0
        public Bitboard Get(Square from,
            Bitboard friends,
            Bitboard enemies
            )
        {
            var allpieces = friends.And(enemies);
            var result = Bitboard.Empty.And(from.DiagonalNW, from.DiagonalNE);

            return result.Except(from, friends,
                                 from.RayTo.NE.Intersect(allpieces).LowestSquare.RayTo.NE,
                                 from.RayTo.NW.Intersect(allpieces).LowestSquare.RayTo.NW,
                                 from.RayTo.SE.Intersect(allpieces).HighestSquare.RayTo.SE,
                                 from.RayTo.SW.Intersect(allpieces).HighestSquare.RayTo.SW);
        }