public static IEnumerable <BoardPosition> GetBishopMoves(BoardPosition pos, ChessBoard board)
        {
            List <BoardPosition> moves = new List <BoardPosition>();
            //while loop front-right
            int row_adder = -1;
            int col_adder = -1;

            for (int i = 0; i < 4; i++)
            {
                if (i == 1)
                {
                    col_adder = 1;
                }
                if (i == 2)
                {
                    row_adder = 1; col_adder = -1;
                }
                if (i == 3)
                {
                    col_adder = 1;
                }

                BoardPosition temp = new BoardPosition(pos.Row + row_adder, pos.Col + col_adder);
                while (ChessBoard.PositionInBounds(temp))
                {
                    moves.Add(temp);
                    if (!board.GetPieceAtPosition(temp).PieceType.Equals(ChessPieceType.Empty))
                    {
                        break;
                    }
                    temp = new BoardPosition(temp.Row + row_adder, temp.Col + col_adder);
                }
            }
            return((IEnumerable <BoardPosition>)moves);
        }
        public static IEnumerable <BoardPosition> GetMoves4Piece(BoardPosition pos, ChessBoard board)
        {
            ChessPiece piece = board.GetPieceAtPosition(pos);
            IEnumerable <BoardPosition> attack_positions = new List <BoardPosition>();

            if (piece.PieceType.Equals(ChessPieceType.Pawn))
            {
                return(GetPawnMoves(pos, board));
            }
            else if (piece.PieceType.Equals(ChessPieceType.Rook))
            {
                return(GetRookMoves(pos, board));
            }
            else if (piece.PieceType.Equals(ChessPieceType.Knight))
            {
                return(GetKnightMoves(pos, board));
            }
            else if (piece.PieceType.Equals(ChessPieceType.Bishop))
            {
                return(GetBishopMoves(pos, board));
            }
            else if (piece.PieceType.Equals(ChessPieceType.Queen))
            {
                return(GetQueenMoves(pos, board));
            }
            else if (piece.PieceType.Equals(ChessPieceType.King))
            {
                return(GetKingMoves(pos, board));
            }
            return(attack_positions);
        }
        public static IEnumerable <BoardPosition> GetRookMoves(BoardPosition pos, ChessBoard board)
        {
            List <BoardPosition> moves = new List <BoardPosition>();
            int row_adder = 1;
            int col_adder = 0;

            for (int i = 0; i < 4; i++)
            {
                if (i == 1)
                {
                    row_adder = -1;
                }
                if (i == 2)
                {
                    row_adder = 0; col_adder = 1;
                }
                if (i == 3)
                {
                    col_adder = -1;
                }
                BoardPosition temp = new BoardPosition(pos.Row + row_adder, pos.Col + col_adder);
                while (ChessBoard.PositionInBounds(temp))
                {
                    moves.Add(temp);
                    if (!board.GetPieceAtPosition(temp).PieceType.Equals(ChessPieceType.Empty))
                    {
                        break;
                    }
                    temp = new BoardPosition(temp.Row + row_adder, temp.Col + col_adder);
                }
            }
            //BoardPosition temp = new BoardPosition(pos.Row + 1, pos.Col);
            //while (ChessBoard.PositionInBounds(temp))
            //{
            //    moves.Add(temp);
            //    if (! board.GetPieceAtPosition(temp).PieceType.Equals(ChessPieceType.Empty))
            //        break;
            //    temp = new BoardPosition(temp.Row+1, temp.Col);
            //}
            ////while loop right
            //temp = new BoardPosition(pos.Row, pos.Col + 1);
            //while (ChessBoard.PositionInBounds(temp))
            //{
            //    moves.Add(temp);
            //    if (!board.GetPieceAtPosition(temp).PieceType.Equals(ChessPieceType.Empty))
            //        break;
            //    temp = new BoardPosition(temp.Row, temp.Col + 1);
            //}
            ////while loop back
            //temp = new BoardPosition(pos.Row - 1, pos.Col);
            //while (ChessBoard.PositionInBounds(temp))
            //{
            //    moves.Add(temp);
            //    if (!board.GetPieceAtPosition(temp).PieceType.Equals(ChessPieceType.Empty))
            //        break;
            //    temp = new BoardPosition(temp.Row - 1, temp.Col);
            //}
            ////while loop left
            //temp = new BoardPosition(pos.Row, pos.Col-1);
            //while (ChessBoard.PositionInBounds(temp))
            //{
            //    moves.Add(temp);
            //    if (!board.GetPieceAtPosition(temp).PieceType.Equals(ChessPieceType.Empty))
            //        break;
            //    temp = new BoardPosition(temp.Row, temp.Col-1);
            //}

            return((IEnumerable <BoardPosition>)moves);
        }