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); }
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); }