Beispiel #1
0
        public static MoveSummary CanRookMove(Board board, Square from, Square to)
        {
            //throw new NotImplementedException("CanRookMove");
            var piece       = board[from];
            var isSameColor = board[from].Color == board[to].Color;
            var isCapturing = board[to].IsNone() ?
                              false :
                              !isSameColor;
            var isMovePossible =
                !isSameColor &&
                Checker.CanMoveLineary(
                    MoveProperty.IsHorizontalLine(from, to) ||
                    MoveProperty.IsVerticalLine(from, to),
                    board, from, to);

            var isWhite = piece.Color.IsWhite();
            var startQueensideSquare = isWhite ?
                                       WhiteCastlingSquares.QueensideRookStartSquare :
                                       BlackCastlingSquares.QueensideRookStartSquare;

            var startKingsideSquare = isWhite ?
                                      WhiteCastlingSquares.KingsideRookStartSquare :
                                      BlackCastlingSquares.KingsideRookStartSquare;

            var isQueensideRookMoving =
                from == startQueensideSquare;
            var isKingsideRookMoving =
                from == startKingsideSquare;

            return(MoveSummaryBuilder.RookSummary(
                       isCapturing, isMovePossible,
                       isQueensideRookMoving, isKingsideRookMoving, to));
        }
Beispiel #2
0
        public static MoveSummary CanQueenMove(Board board, Square from, Square to)
        {
            var isSameColor = board[from].Color == board[to].Color;
            var isCapturing = board[to].IsNone() ?
                              false :
                              !isSameColor;

            var isMovePossible =
                !isSameColor &&
                Checker.CanMoveLineary(
                    MoveProperty.IsHorizontalLine(from, to) ||
                    MoveProperty.IsVerticalLine(from, to) ||
                    MoveProperty.IsDiagonalLine(from, to),
                    board, from, to);

            return(MoveSummaryBuilder.DefaultMoveSummary(isCapturing, isMovePossible, to));
        }