def METHOD_NAME(self):
    """Returns a game board layout as a list of strings.
    Raises:
        BoardLayoutException: If the position is already occupied or is
            otherwise invalid.
    """
    board = [["-"] * self.size for _ in range(self.size)]
    for position in self.ship_positions:
        orientation = position.orientation
        row = position.row
        col = position.column
        text = position.text
        if orientation == "horizontal":
            for i in range(0, len(text)):
                if board[row][col + i] != "-":
                    raise BoardLayoutException(
                        "can not place ship at {}{}, space "
                        "is occupied with {}".format("ABCDEFGHIJ"[col], row, board[row][col])
                    )
                board[row][col + i] = text[i]
        elif orientation == "vertical":
            for i in range(0, len(text)):
                if board[row + i][col] != "-":
                    raise BoardLayoutException(
                        "can not place ship at {}{}, space "
                        "is occupied with {}".format("ABCDEFGHIJ"[col], row, board[row][col])
                    )
                board[row + i][col] = text[i]
        else:
            assert False, "invalid orientation: {}".format(orientation)
    return board