智能移動(dòng)終端應(yīng)用開發(fā)設(shè)計(jì)報(bào)告Android-歡樂連連看(共24頁)_第1頁
智能移動(dòng)終端應(yīng)用開發(fā)設(shè)計(jì)報(bào)告Android-歡樂連連看(共24頁)_第2頁
智能移動(dòng)終端應(yīng)用開發(fā)設(shè)計(jì)報(bào)告Android-歡樂連連看(共24頁)_第3頁
智能移動(dòng)終端應(yīng)用開發(fā)設(shè)計(jì)報(bào)告Android-歡樂連連看(共24頁)_第4頁
智能移動(dòng)終端應(yīng)用開發(fā)設(shè)計(jì)報(bào)告Android-歡樂連連看(共24頁)_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上XX學(xué)院智能移動(dòng)終端應(yīng)用開發(fā)設(shè)計(jì)報(bào)告(20XX/20XX學(xué)年第X學(xué)期)題 目 : 歡樂連連看 專 業(yè) : XXXXXX 小組成員 : 設(shè)計(jì)成績 : 20XX年XX月XX日1.需求分析1.1功能分析每次用戶選擇兩個(gè)圖形,如果圖形滿足一定條件(兩個(gè)圖形一樣,且這兩個(gè)圖形之間存在轉(zhuǎn)彎少于3的路徑),則兩個(gè)圖形都能消掉。給定任意具有相同圖形的兩個(gè)格子,我們需要尋找這兩個(gè)格子之間在轉(zhuǎn)彎最少的情況下,經(jīng)過格子數(shù)目最少的路徑。如果這個(gè)最優(yōu)路徑的轉(zhuǎn)彎數(shù)目少于3 ,則這兩個(gè)格子可以消去。將界面中相同的圖片消去,游戲限時(shí)1000秒,如果在規(guī)定的時(shí)間內(nèi)沒有完成,就會(huì)跳出對(duì)話框“時(shí)間耗盡了,

2、你輸了:(”的字樣。如果玩家贏了這局,則彈出“非常棒,你贏了!”在經(jīng)典的最短路問題中,我們需要求出經(jīng)過格子數(shù)目最少的路徑。而這里,要保證轉(zhuǎn)彎數(shù)目最少,需要把最短路問題的目標(biāo)函數(shù)修改為從一個(gè)點(diǎn)到另一個(gè)點(diǎn)的轉(zhuǎn)彎次數(shù)。雖然,目標(biāo)函數(shù)修改了,但算法的框架仍然可以保持不變。廣度優(yōu)先搜索是解決經(jīng)典最短路問題的一個(gè)思路。我們看看在新的目標(biāo)函數(shù)(轉(zhuǎn)彎數(shù)目最少)下,如何用廣度優(yōu)先搜索來解決圖形A(x1,y1)和圖形B(x2,y2)之間的最短路問題。1.2設(shè)計(jì)任務(wù) 1、明確軟件實(shí)用性,設(shè)計(jì)本次軟件; 2、深入學(xué)習(xí)和理解android開發(fā)平臺(tái),掌握android軟件開發(fā)機(jī)制和方法; 3、深入分析連連看軟件功能流程圖

3、; 4、應(yīng)用軟件工程思想,小組合作完成需求分析到代碼設(shè)計(jì)并完成測(cè)試; 5、按照格式要求撰寫設(shè)計(jì)報(bào)告。 2.設(shè)計(jì)正文2.1設(shè)計(jì)分析2.1.1連連看算法設(shè)計(jì)在檢驗(yàn)兩個(gè)方塊能否消掉的時(shí)候,我們要讓兩個(gè)方塊同時(shí)滿足兩個(gè)條件才行,就是兩者配對(duì)并且連線成功。分3種情況:(從下面的這三種情況,我們可以知道,需要三個(gè)檢測(cè),這三個(gè)檢測(cè)分別檢測(cè)一條直路經(jīng)。這樣就會(huì)有三條路經(jīng)。若這三條路經(jīng)上都是空按鈕,那么就剛好是三種直線(兩個(gè)轉(zhuǎn)彎點(diǎn))把兩個(gè)按鈕連接起來了。1) 相鄰 2) 若不相鄰的先在第一個(gè)按鈕的同行找一個(gè)空按鈕。1).找到后看第二個(gè)按鈕橫向到這個(gè)空按鈕所在的列是否有按鈕。2).沒有的話再看第一個(gè)按鈕到與它同行

4、的那個(gè)空按鈕之間是否有按鈕。3).沒有的話,再從與第一個(gè)按鈕同行的那個(gè)空按鈕豎向到與第二個(gè)按鈕的同行看是否有按鈕。沒有的話路經(jīng)就通了,可以消了. 3) 若2失敗后,再在第一個(gè)按鈕的同列找一個(gè)空按鈕。1).找到后看第二個(gè)按鈕豎向到這個(gè)空按鈕所在的行是否有按鈕 2).沒有的話,再看第一個(gè)按鈕到與它同列的那個(gè)空按鈕之間是否有按鈕。沒有的話,再從與第一個(gè)按鈕同列的那個(gè)空按鈕橫向到與第二個(gè)按鈕同列看是否有按鈕。沒有的話路經(jīng)就通了,可以消了。4) 若以上三步都失敗,說明這兩個(gè)按鈕不可以消去。2.2 類的實(shí)現(xiàn)方法2.2.1 成員變量成員變量也叫類的屬性,一般帶有訪問控制屬性的,而全局變量雖然也有類的屬性,但

5、全局變量嚴(yán)重影響了封裝和模塊化,一般的全局變量前面要加上static和 fina屬性其中,static使該變量任何類都可用(方法 ClassName.全局變量名) ,而 fina則使得變量不可更改,基本上算是常量了,這也在一定程度上防止對(duì)變量的非法修改。成員變量描述變量類型名稱文件FileFile文件區(qū)JtextareaTextarea菜單項(xiàng)JmenuitemMenuitem_copy菜單UmenuitemUmenuitem標(biāo)簽JlabelLabel_seek文件名StringSeel圖一 成員變量2.2.2 方法設(shè)計(jì)方法名稱為任何合乎語法的識(shí)別字,返回值類型是方法執(zhí)行結(jié)果返回給調(diào)用者的數(shù)據(jù)類

6、型,void表示沒有返回值,參數(shù)行(parameter list)是調(diào)用時(shí)給予的參數(shù)聲明,兩個(gè)以上的參數(shù)聲明以逗號(hào)隔開,若沒有參數(shù)則參數(shù)行為空白,調(diào)用時(shí)每一個(gè)參數(shù)對(duì)應(yīng)一個(gè)參數(shù)值(argument)大括號(hào)內(nèi)為方法本體,也稱為方法程序模塊(block),包含聲明(declarations)和語句(statements),聲明也可以摻雜在語句之間。一個(gè)方法不能聲明在另一個(gè)方法內(nèi)。方法名功能備注MyTextEditor創(chuàng)建文本編輯器構(gòu)造方法Dialog創(chuàng)建對(duì)話框addMenu添加菜單欄菜單項(xiàng)writeToFile向文本區(qū)寫文件readFromFile讀文件openDialog打開文件save

7、Dialog保存對(duì)話框actionPerformed事件處理itemStateChangedItemListener事件處理方法mouseClicked鼠標(biāo)處理事件接口方法mouseEvent鼠標(biāo)處理事件接口方法mouseReleased鼠標(biāo)處理事件接口方法mouseEntered鼠標(biāo)處理事件接口方法mouseExit鼠標(biāo)處理事件接口方法mouseDragged鼠標(biāo)處理事件接口方法Main程序開始運(yùn)行圖二 方法定義2.2.3 設(shè)計(jì)流程圖3測(cè)試分析3.1 程序運(yùn)行情況連連看游戲規(guī)則很簡單,就是點(diǎn)中兩個(gè)互相匹配并且可以通過不多于兩個(gè)折點(diǎn)的折線連在一起的方塊后,這兩個(gè)方塊就可以消掉。圖三 游戲開始界

8、面 圖四 游戲贏了的界面圖五 游戲時(shí)間耗盡時(shí)的界面3.2 測(cè)試計(jì)劃及分析3.2.1 最短路徑分析由于用戶每次只能消除一對(duì)圖形,即只會(huì)用到一個(gè)最短路徑,但由于實(shí)現(xiàn)并不知道用戶會(huì)選擇哪一對(duì)圖形,所以需要事先計(jì)算出所有可能的最短路徑并保存起來。此外,采用這種方法的話似乎每次用戶消去一對(duì)相同圖像之后都需要重新計(jì)算出當(dāng)前所有可能被連接的相同圖形之間最短路徑,這是因?yàn)楫?dāng)某些圖像被消去之后可能會(huì)產(chǎn)生很多新路徑,而我們又不能確定這些空出來的格子到底能夠影響哪些路徑,所以就只好都重新計(jì)算一遍。其缺點(diǎn)很明顯就是每次消去圖形動(dòng)作之后重新計(jì)算所有可能的最短路徑所需要消耗的時(shí)間;而該方法的優(yōu)點(diǎn)則是可以很快地判斷兩個(gè)相同

9、圖形之間是否存在滿足條件的最短路徑。如果用戶很厲害,每次都能選中可以消除的圖形對(duì),那么用這種方法浪費(fèi)的時(shí)間就會(huì)相當(dāng)可觀,畢竟用戶未選中的其他可以連接的圖形對(duì)之間的最短路徑都被浪費(fèi)掉了;而如果用戶很差勁,每輪選擇的次數(shù)都遠(yuǎn)遠(yuǎn)大于當(dāng)前可能的連接數(shù)量時(shí),該方法就會(huì)比書中正文提到的方法高效。但這種情況是比較少的,因?yàn)樵谡麄€(gè)游戲中用戶主要是會(huì)用眼睛“找”而不是頻繁的用鼠標(biāo)去“試”。所以總的來看,維護(hù)所有最短路徑的方法的效率相對(duì)比較低。3.2.2 檢驗(yàn)的先后順序在檢驗(yàn)兩個(gè)方塊能否消掉的時(shí)候,我們要讓兩個(gè)方塊同時(shí)滿足兩個(gè)條件才行,就是兩者配對(duì)并且連線成功。所以,這里應(yīng)該先檢驗(yàn)配對(duì),如果該條件不成立的話,就不

10、要再進(jìn)行連線檢查了,這樣可以避免很多不必要的復(fù)雜運(yùn)算。當(dāng)然,如果你在做這個(gè)游戲的時(shí)候,配對(duì)規(guī)則不夠如此簡單的話,那么就看哪個(gè)算起來麻煩就把它放在后面。3.2.3 程序代碼package com.automan;/畫出網(wǎng)格,并對(duì)應(yīng)的畫上分布好圖像import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Random;import com.automan.CtrlView.Point;import android.content.Context;import android.g

11、raphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.util.Log;import android.view.View;public class GameView extends View public

12、 final int row=10;public final int col=10;public float width;public float height;private int selY;private int selX;public boolean isLine=false;public int grid=new introwcol;private Rect selRect = new Rect();public int lineType=0;public final int V_LINE=1;public final int H_LINE=1;public final int ON

13、E_C_LINE=2;public final int TWO_C_LINE=3;public int much=0;Point p;public int imageType=new intR.drawable.aa,R.drawable.bb,R.drawable.cc,R.drawable.dd,R.drawable.ee,R.drawable.ff,R.drawable.gg,R.drawable.hh,R.drawable.ii,R.drawable.jj,R.drawable.kk,R.drawable.ll,R.drawable.mm,R.drawable.nn,R.drawabl

14、e.oo,R.drawable.pp;public Bitmap image;public List<Integer> type=new ArrayList<Integer>(); public GameView(Context context, AttributeSet attrs) super(context, attrs); this.setFocusable(true);this.setFocusableInTouchMode(true); public GameView(Context context, AttributeSet attrs, int defS

15、tyle) super(context, attrs, defStyle); this.setFocusable(true);this.setFocusableInTouchMode(true); public void reset()public void fillImage(Context context)int lth=imageType.length;image=new Bitmaplth;for(int i=0;i<lth;i+)Bitmap bitmap = Bitmap.createBitmap(int)width, (int)height, Bitmap.Config.A

16、RGB_8888);Drawable drw;Canvas canvas = new Canvas(bitmap);drw=context.getResources().getDrawable(imageTypei); drw.setBounds(1,1, 30, 30); drw.draw(canvas); imagei = bitmap; public void initType()Log.e("gametest","inittype");int size=(row-2)*(col-2);int count=size/imageType.length

17、;for(int j=0;j<imageType.length;j+)for(int i=0;i<count;i+)type.add(imageTypej);public void select(int x,int y)invalidate(selRect);selX =Math.min(Math.max(x,0),9);selY=Math.min(Math.max(y,0),9);getRect(selX,selY,selRect);invalidate(selRect);private void getRect(int x,int y,Rect rect)rect.set(in

18、t)(x*width),(int)( y*height), (int)(x*width+width),(int) (y*height+height);Overrideprotected void onDraw(Canvas canvas) Paint background= new Paint();background.setColor(Color.WHITE);canvas.drawRect(0, 0,getWidth(),getHeight(),background);Paint hilite= new Paint();hilite.setColor(getResources().getC

19、olor(R.color.hilite);Paint light= new Paint();light.setColor(getResources().getColor(R.color.light);for (int i=0;i<9;i+)canvas.drawLine(0, i * height,getWidth(),i * height,light);canvas.drawLine(0,i * height+1,getWidth(),i * height+1,hilite);canvas.drawLine(i * width,0,i * width,getHeight(),light

20、);canvas.drawLine(i * width+1,0,i * width+1,getHeight(),hilite);if(CtrlView.CURRENT_CH)Paint selected= new Paint();selected.setColor(getResources().getColor(R.color.puzzle_selected);canvas.drawRect(selRect, selected);for (int i=0;i<9;i+)for (int j=0;j<9;j+)if(gridij!=0)canvas.drawBitmap(imageA

21、rrays.binarySearch(imageType, gridij), i*width, j*height, null);if(isLine)Paint lineColor= new Paint();lineColor.setColor(Color.RED);switch(lineType)case V_LINE:canvas.drawLine(p0.x*width+width/2,p0.y*height+height/2,p1.x*width+width/2,p1.y*height+height/2, lineColor);break;case ONE_C_LINE:canvas.dr

22、awLine(p0.x*width+width/2,p0.y*height+height/2,p1.x*width+width/2,p1.y*height+height/2, lineColor);canvas.drawLine(p1.x*width+width/2,p1.y*height+height/2,p2.x*width+width/2,p2.y*height+height/2, lineColor);break;case TWO_C_LINE:canvas.drawLine(p0.x*width+width/2,p0.y*height+height/2,p1.x*width+widt

23、h/2,p1.y*height+height/2, lineColor);canvas.drawLine(p1.x*width+width/2,p1.y*height+height/2,p2.x*width+width/2,p2.y*height+height/2, lineColor);canvas.drawLine(p3.x*width+width/2,p3.y*height+height/2,p2.x*width+width/2,p2.y*height+height/2, lineColor);break;default:break;super.onDraw(canvas);Overri

24、deprotected void onSizeChanged(int w, int h, int oldw, int oldh) Log.e("gametest","sizechanged");width=w/row;height=h/col;/getRect(1,1,selRect);fillImage(this.getContext();super.onSizeChanged(w, h, oldw, oldh);public void initGrid()Log.e("gametest","initGrid")

25、;Random ad=new Random();for(int i=0;i<row;i+)for(int j=0;j<col;j+)if(i=0 | i=row-1 | j=0 | j=col-1)gridij=0;elseif(type!=null && type.size()>0)int index=ad.nextInt(type.size();gridij=type.get(index);type.remove(index);第二部分:package com.automan;import java.util.ArrayList;import java.u

26、til.LinkedList;import java.util.List;import java.util.Random;import android.content.Context;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.view.MotionEvent;public class CtrlView extends GameViewpublic final int GAMETIME=300;public final int UPTIME

27、=1;public int PROCESS_VALUE=300;public static boolean CURRENT_CH=false;public int CURRENT_TYPE=0;private Point C_POINT;private Point P_POINT;LinkedList<Line> li;public CtrlView(Context context, AttributeSet attrs) super(context, attrs); initType();initGrid();much=(row-2)*(col-2); public CtrlVi

28、ew(Context context, AttributeSet attrs, int defStyle) super(context, attrs, defStyle); initType();initGrid();much=(row-2)*(col-2); public boolean onTouchEvent(MotionEvent event) if (event.getAction()!=MotionEvent.ACTION_DOWN)return super.onTouchEvent(event);int selX=(int)(event.getX()/width);int sel

29、Y=(int)(event.getY()/height);if(gridselXselY=0)return true;elseif(CURRENT_CH=false)select(selX,selY);CURRENT_CH=true;P_POINT =new Point(selX,selY);elseC_POINT =new Point(selX,selY);lineType=0;if(checkLink(P_POINT,C_POINT)isLine=true;much=much-2;if(0<PROCESS_VALUE && (PROCESS_VALUE+UPTIME)

30、<GAMETIME)PROCESS_VALUE=PROCESS_VALUE+UPTIME;invalidate();mRedrawHandler.sleep(300);CURRENT_CH=false;return true;public void reset()CURRENT_CH=false;CURRENT_TYPE=0;C_POINT=null;P_POINT=null;lineType=0;isLine=false;Point p=null;initType();initGrid();much=(row-2)*(col-2);invalidate();public void re

31、arrange()CURRENT_CH=false;CURRENT_TYPE=0;C_POINT=null;P_POINT=null;lineType=0;isLine=false;Point p=null;List<Integer> temp=new ArrayList<Integer>();for(int i=0;i<row;i+)for(int j=0;j<col;j+)if(gridij!=0)temp.add(gridij);type.clear();Random ad=new Random();for(int i=0;i<temp.size

32、();i+)type.add(temp.get(i);temp.clear();temp=null;for(int i=0;i<row;i+)for(int j=0;j<col;j+)if(gridij!=0)int index=ad.nextInt(type.size();gridij=type.get(index);type.remove(index);invalidate();private RefreshHandler mRedrawHandler = new RefreshHandler(); class RefreshHandler extends Handler Ov

33、erride public void handleMessage(Message msg) isLine=false; gridP_POINT.xP_POINT.y=0;gridC_POINT.xC_POINT.y=0; CtrlView.this.invalidate(); public void sleep(long delayMillis) this.removeMessages(0);/移除信息隊(duì)列中最頂部的信息(從頂部取出信息) sendMessageDelayed(obtainMessage(0), delayMillis);/獲得頂部信息并延時(shí)發(fā)送 ;public class P

34、ointpublicint x;publicint y;public Point(int newx,int newy)this.x=newx;this.y=newy;public boolean equals(Point p)if(p.x=x && p.y=y)return true;elsereturn false;private boolean horizon(Point a, Point b) if(a.x = b.x && a.y = b.y) return false; int x_start = a.y <= b.y ? a.y : b.y;

35、int x_end = a.y <= b.y ? b.y : a.y; for(int x = x_start + 1; x < x_end; x+) if(grida.xx != 0) return false; p=new Pointa,b; lineType=H_LINE; return true; private boolean vertical(Point a, Point b) if(a.x = b.x && a.y = b.y) return false; int y_start = a.x <= b.x ? a.x : b.x; int y_e

36、nd = a.x <= b.x ? b.x : a.x; for(int y = y_start + 1; y < y_end; y+) if(gridya.y != 0) return false; p=new Pointa,b; lineType=V_LINE; return true; private boolean oneCorner(Point a, Point b) Point c = new Point(a.x, b.y); Point d = new Point(b.x, a.y); if(gridc.xc.y = 0) boolean method1 = hori

37、zon(a, c) && vertical(b, c); p=new Pointa,new Point(c.x,c.y),b; lineType=ONE_C_LINE; return method1; if(gridd.xd.y = 0) boolean method2 = vertical(a, d) && horizon(b, d); p=new Pointa,new Point(d.x,d.y),b; lineType=ONE_C_LINE; return method2; else return false; class Line public Poin

38、t a; public Point b; public int direct; public Line() public Line(int direct, Point a, Point b) this.direct = direct; this.a = a; this.b = b; private LinkedList<Line> scan(Point a, Point b) li = new LinkedList<Line>(); for(int y = a.y; y >= 0; y-) if(grida.xy = 0 && gridb.xy =

39、 0 && vertical(new Point(a.x, y), new Point(b.x, y) li.add(new Line(0, new Point(a.x, y), new Point(b.x, y); for(int y = a.y; y < row; y+) if(grida.xy =0 && gridb.xy =0 && vertical(new Point(a.x, y), new Point(b.x, y) li.add(new Line(0, new Point(a.x, y), new Point(b.x, y)

40、; for(int x = a.x; x >= 0; x-) if(gridxa.y = 0 && gridxb.y =0 && horizon(new Point(x, a.y), new Point(x, b.y) li.add(new Line(1, new Point(x, a.y), new Point(x, b.y); for(int x = a.x; x < col; x+) if(gridxa.y = 0 && gridxb.y = 0 && horizon(new Point(x, a.y), new

41、 Point(x, b.y) li.add(new Line(1, new Point(x, a.y), new Point(x, b.y); return li; private boolean twoCorner(Point a, Point b) li = scan(a, b); if(li.isEmpty() return false; for(int index = 0; index < li.size(); index+) Line line = (Line)li.get(index); if(line.direct = 1) if(vertical(a, line.a) &

42、amp;& vertical(b, line.b) p=new Pointa,line.a,line.b,b; lineType=TWO_C_LINE; return true; else if(horizon(a, line.a) && horizon(b, line.b) p=new Pointa,line.a,line.b,b; lineType=TWO_C_LINE; return true; return false; public boolean checkLink(Point a,Point b) if(grida.xa.y != gridb.xb.y)/

43、如果圖案不同,直接為false return false; if(a.x = b.x && horizon(a, b) return true; if(a.y = b.y && vertical(a, b) return true; if(oneCorner(a, b) return true; else return twoCorner(a, b); 第三部分:package com.automan;import android.app.Activity;import android.os.Bundle;import android.os.Handler;im

44、port android.os.Message;import android.view.Menu;import android.view.MenuItem;import android.widget.ProgressBar;import android.widget.Toast;public class ConnectGame extends Activity /* Called when the activity is first created. */private ProgressBar pb;private CtrlView cv;public static final int STA

45、RT_ID=Menu.FIRST;public static final int REARRARY_ID=Menu.FIRST+1;public static final int END_ID=REARRARY_ID+1; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); findViews(); mRedrawHandler.sleep(1000); private RefreshHandler

46、mRedrawHandler = new RefreshHandler(); class RefreshHandler extends Handler Override public void handleMessage(Message msg) run(); public void sleep(long delayMillis) this.removeMessages(0);/移除信息隊(duì)列中最頂部的信息(從頂部取出信息) sendMessageDelayed(obtainMessage(0), delayMillis);/獲得頂部信息并延時(shí)發(fā)送 ; public void run() if (cv.PROCESS_VALUE> 0 && cv.much!=0) cv.PROCESS_VALUE-; pb.setProgress(cv.PROCESS_VALUE); mRedrawHandler.sleep(1000); else

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論