示例#1
0
        private IEnumerable<BoardPosition> GetBoardPieces(IVirtualBoard board, BoardPosition piece, MainWindow.Surround direction)
        {
            Func<BoardPosition, BoardPosition> dir = p =>
            {
                switch (direction)
                {
                    case MainWindow.Surround.Top:
                        return board.TopOf(p);
                    case MainWindow.Surround.Right:
                        return board.RightOf(p);
                    case MainWindow.Surround.Bottom:
                        return board.BottomOf(p);
                    case MainWindow.Surround.Left:
                        return board.LeftOf(p);
                    default:
                        throw new ArgumentOutOfRangeException("direction");
                }
            };

            var borderingPiece = dir(piece);
            if (borderingPiece != null && borderingPiece.Piece.RootBoardPiece == piece.Piece.RootBoardPiece)
            {
                yield return borderingPiece;

                var borderingPiece2 = dir(borderingPiece);
                if (borderingPiece2 != null && borderingPiece2.Piece.RootBoardPiece == piece.Piece.RootBoardPiece)
                    yield return borderingPiece2;
            }
        }
示例#2
0
        private IEnumerable <BoardPosition> GetBoardPieces(IVirtualBoard board, BoardPosition piece, MainWindow.Surround direction)
        {
            Func <BoardPosition, BoardPosition> dir = p =>
            {
                switch (direction)
                {
                case MainWindow.Surround.Top:
                    return(board.TopOf(p));

                case MainWindow.Surround.Right:
                    return(board.RightOf(p));

                case MainWindow.Surround.Bottom:
                    return(board.BottomOf(p));

                case MainWindow.Surround.Left:
                    return(board.LeftOf(p));

                default:
                    throw new ArgumentOutOfRangeException("direction");
                }
            };

            var borderingPiece = dir(piece);

            if (borderingPiece != null && borderingPiece.Piece.RootBoardPiece == piece.Piece.RootBoardPiece)
            {
                yield return(borderingPiece);

                var borderingPiece2 = dir(borderingPiece);
                if (borderingPiece2 != null && borderingPiece2.Piece.RootBoardPiece == piece.Piece.RootBoardPiece)
                {
                    yield return(borderingPiece2);
                }
            }
        }