Exemplo n.º 1
0
        public override bool IsSpecialMove(Square origin, Square destination)
        {
            if (origin.Color == GetEnPassantSquare(origin, destination).Color) return false;

            var occupierOfEnPassantPosition = GetEnPassantSquare(origin, destination).Occupier;

            return (origin.DiagonallyForwardTo(destination)
                    && origin.DistanceOfRanksIsOneTo(destination)
                    && destination.Color == PieceColor.Empty
                    && occupierOfEnPassantPosition.MoveCount == 1);
        }
Exemplo n.º 2
0
 private bool MovingSingleRankForward(Square origin, Square destination)
 {
     return (origin.ForwardTo(destination)
             && origin.DistanceOfRanksIsOneTo(destination)
             && destination.Color == PieceColor.Empty);
 }
Exemplo n.º 3
0
 private bool Attacking(Square origin, Square destination)
 {
     return (origin.Color != destination.Color
             && destination.Color != PieceColor.Empty
             && origin.DistanceOfRanksIsOneTo(destination)
             && origin.DiagonallyForwardTo(destination));
 }
Exemplo n.º 4
0
 private bool MovingOneSquareDiagonally(Square origin, Square destination)
 {
     return (origin.DistanceOfRanksIsOneTo(destination)
             && origin.DistanceOfFilesIsOneTo(destination));
 }
Exemplo n.º 5
0
 private bool MovingOneSquareForwardOrBackward(Square origin, Square destination)
 {
     return (origin.DistanceOfRanksIsOneTo(destination)
             && origin.DistanceOfFilesIsZeroTo(destination));
 }
Exemplo n.º 6
0
 private bool MovingOneRankAndTwoFiles(Square origin, Square destination)
 {
     return (origin.DistanceOfRanksIsOneTo(destination)
             && origin.DistanceOfFilesIsTwoTo(destination));
 }