2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  基于Android系統(tǒng)的連連看</p><p><b>  引言</b></p><p><b>  編寫目的</b></p><p>  本文檔用于說明手機(jī)連連看游戲開發(fā)的詳細(xì)過程,使了解軟件的內(nèi)部結(jié)構(gòu),從而對連連看有更深入的了解,便于后期的維護(hù)和更改工作。</p><p>

2、<b>  背景說明</b></p><p>  待開發(fā)軟件系統(tǒng)的名稱:基于Android系統(tǒng)的連連看游戲設(shè)計</p><p>  本項(xiàng)目提出者:長春大學(xué)軟件學(xué)院</p><p><b>  開發(fā)者:劉博群</b></p><p><b>  用戶:暫無</b></p&g

3、t;<p>  項(xiàng)目開發(fā)環(huán)境:eclipse、Android系統(tǒng)平臺</p><p><b>  定義</b></p><p>  Android連連看詳細(xì)設(shè)計</p><p><b>  參加資料</b></p><p>  《Android開發(fā)指南》</p><

4、p><b>  程序系統(tǒng)的結(jié)構(gòu)</b></p><p>  連連看游戲結(jié)構(gòu)如下:</p><p><b>  主要有四大類:</b></p><p>  Class GameView ///游戲視類,處理游戲中的情況,包括界面生成,算法,一部分消息響應(yīng)</p><p>  Class

5、GameActivity ///用于處理游戲中的消息提示</p><p>  Class StartActivity ///用于菜單的設(shè)計</p><p>  Class SetActivity ///用于菜單中游戲難度的設(shè)定</p><p><b>  菜單設(shè)計說明</b></p><p>  3.1

6、、 程序描述</p><p>  主要功能:用于為玩家提供操作提示,便于玩家了解游戲的規(guī)則</p><p>  可擴(kuò)展性:能夠適應(yīng)應(yīng)用要求的變化和修改,遇有靈活的可擴(kuò)展性</p><p><b>  3.2、 功能</b></p><p>  主要有開始游戲,游戲設(shè)置,游戲規(guī)則,關(guān)于游戲,退出游戲等幾個選項(xiàng)</

7、p><p><b>  性能</b></p><p>  當(dāng)用戶選擇菜單時,系統(tǒng)能夠快速反應(yīng),以滿足用戶的需求</p><p><b>  輸入項(xiàng)</b></p><p><b>  用戶點(diǎn)擊按鈕</b></p><p><b>  輸出項(xiàng)<

8、/b></p><p><b>  五個菜單選項(xiàng)</b></p><p><b>  算法</b></p><p>  //定義菜單類,接口為OnClickListener,用于接收用戶的單擊消息</p><p>  Public class StartActivity extends Act

9、ivity implements View.OnClickListener</p><p>  //設(shè)計5個按鈕用于接收按鈕消息</p><p>  private Button btnStart;</p><p>  private Button btnSet;</p><p>  private Button btnRole;</p

10、><p>  private Button btnAbout;</p><p>  private Button btnExit;</p><p>  //在OnCreate函數(shù)中將它們初始化:</p><p><b>  //獲取按鈕</b></p><p>  btnStart=(Button)f

11、indViewById(R.id. btnStart);</p><p>  btnSet =(Button)findViewById(R.id. btnSet);</p><p>  btnRole =(Button)findViewById(R.id. btnRole);</p><p>  btnAbout =(Button)findViewById(R.id

12、. btnAbout);</p><p>  btnExit =(Button)findViewById(R.id. btnExit);</p><p><b>  //注冊點(diǎn)擊事件</b></p><p>  btnStart.setOnClickListener(this);</p><p>  btnSet.set

13、OnClickListener(this);</p><p>  btnRole.setOnClickListener(this);</p><p>  btnAbout.setOnClickListener(this);</p><p>  btnExit.setOnClickListener(this);</p><p>  在OnCli

14、ck函數(shù)中對響應(yīng)進(jìn)行處理:</p><p>  setContentView(new Game View(this));//進(jìn)入游戲,游戲在Game View 類中進(jìn)行了封裝</p><p><b>  //說明游戲規(guī)則</b></p><p>  New AlertDialog.Builder(this).setMessage(“1.將相同的

15、兩張圖片用三根以內(nèi)的直線連在 一起就可以消除\n" + "2. 每消除一次圖片,都會使可用時間增加\n" + "3. 每隔一段時 間,當(dāng)前的界面中的圖片會進(jìn)行重排列\(zhòng)n" + "4. 在規(guī)定的時間里, 當(dāng)所有的圖片都消除時, 即為勝利\n" + "5. 規(guī)定的時間內(nèi)有圖片未消去,即為失敗\n") .setPositiveButton("確定", null).show(); //結(jié)束游戲 結(jié)束游戲 this.finis

16、h(); //進(jìn)行游戲設(shè)置,設(shè)置游戲的難度,調(diào)用了 SetActivity 類 進(jìn)行游戲設(shè)置, 進(jìn)行游戲設(shè)置 設(shè)置游戲的難度, intent.setClass(this, SetActivity.class);</p><p><b>  接口</b></p><p><b>  API函數(shù)</b></p><p><

17、;b>  限制條件</b></p><p><b>  無明顯限制條件</b></p><p><b>  界面設(shè)計說明</b></p><p><b>  4.1、程序描述</b></p><p>  主要功能:用于為玩家提供可視化的游戲界面,增加了游戲的可

18、玩性</p><p>  可擴(kuò)展性:能夠適應(yīng)應(yīng)用要求的變化和修改,具有靈活的可擴(kuò)充性</p><p><b>  4.2、功能</b></p><p>  生成游戲界面,生成進(jìn)度條。如下圖:</p><p><b>  4.3、 性能</b></p><p>  能夠快速的

19、隨機(jī)生成符合用戶需求的界面</p><p><b>  4.4、 輸入項(xiàng)</b></p><p><b>  無輸入</b></p><p><b>  4.5、 輸出項(xiàng)</b></p><p><b>  游戲界面</b></p>&l

20、t;p><b>  4.6、 算法</b></p><p><b>  //定義游戲視圖類</b></p><p>  public class GameView extends View </p><p><b>  //存儲素材圖片</b></p><p>  pu

21、blic int[] imageType</p><p>  //保存所有小格子中的圖片</p><p>  public int[][] grid = new int[row][col]; </p><p>  //初始化加載圖片的類型</p><p>  public void initType() {</p><p&

22、gt;  //總共要加載的圖片</p><p>  int size = (row-2)*(col-2); //64</p><p>  //每類圖片加載的次數(shù)(張數(shù)) 要為偶數(shù)</p><p>  int count=size/imageType.length; //imageType.length=16</p><p>  for(int

23、 i=0; i<imageType.length; i++){</p><p>  for(int j=0; j<count;j++){</p><p>  type.add(imageType[i]); </p><p><b>  }</b></p><p><b>  }</b>&

24、lt;/p><p><b>  }</b></p><p>  //初始化網(wǎng)格的設(shè)計</p><p>  private void initGrid() { </p><p>  Random r = new Random();</p><p>  for(int i=0; i<row;i++)

25、{</p><p>  for(int j=0; j<col;j++){</p><p>  if(i==0 || i==row-1 || j==0 ||j==col-1){</p><p>  grid[i][j]=0; //四周不設(shè)置圖片</p><p><b>  }else{ </b></p>

26、<p>  Int index=r.nextInt(type.size());</p><p>  grid[i][j]=type.get(index);</p><p>  type.remove(index);</p><p><b>  }</b></p><p><b>  }</b&

27、gt;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //設(shè)置位圖的大小</b></p><p>  private void ititmBitmap(Context context) {</p>&l

28、t;p>  int typeLength=imageType.length;</p><p>  image=new Bitmap[typeLength];</p><p><b>  //重新繪制</b></p><p>  for(int i=0;i<typeLength;i++){ //創(chuàng)建一個 Bitmap 的對象</

29、p><p>  Bitmap bitmap=Bitmap.createBitmap((int)width, (int)height, Bitmap.Config.ARGB_8888);</p><p>  //對 Bitmap 進(jìn)行繪制 </p><p>  Canvas canvas = new Canvas(bitmap);</p><p>

30、  Drawable dwr = context.getResources().getDrawable(imageType[i]);</p><p>  dwr.setBounds(1, 1, 30, 30);</p><p>  dwr.draw(canvas); </p><p>  image[i]=bitmap;</p><p>&l

31、t;b>  }</b></p><p><b>  }</b></p><p>  //在 OnDraw 函數(shù)中畫出框格,每次進(jìn)行重繪操作</p><p><b>  //設(shè)置背景顏色:</b></p><p>  Paint backGround = new Paint(); &

32、lt;/p><p>  backGround.setColor(Color.WHITE);</p><p><b>  //畫一個矩形</b></p><p>  canvas.drawRect(0, 0, getWidth(), getHeight(), backGround);</p><p>  //設(shè)置網(wǎng)格線條的顏色

33、</p><p>  Paint higth= new Paint();</p><p>  higth.setColor(Color.BLUE);</p><p><b>  //畫網(wǎng)格</b></p><p>  for(int i=0;i<10;i++){</p><p><b&

34、gt;  //畫橫線、縱線</b></p><p>  canvas.drawLine(0, height*i, getWidth(), height*i, higth);</p><p>  canvas.drawLine(width*i, 0, width*i, getHeight(), higth);</p><p><b>  }<

35、;/b></p><p>  //畫 image 圖片</p><p>  boolean test=true; //檢測圖片是否消除完</p><p>  for(int i=0;i<row;i++){</p><p>  for(int j=0;j<col;j++){</p><p>  if(g

36、rid[i][j]!=0){</p><p>  canvas.drawBitmap(image[Arrays.binarySearch(imageType, grid[i][j])],</p><p>  i*width, j*height, null);</p><p>  test=false; ////還有圖片,說明未贏</p><p&g

37、t;<b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p><b>  4.7、 接口</b></p><p><b>  API函數(shù)</b></p>

38、<p><b>  限制條件</b></p><p><b>  無明顯限制條件</b></p><p><b>  主要算法設(shè)計說明</b></p><p><b>  5.1、程序描述</b></p><p>  主要功能:完成圖片的消除功能

39、,消除時畫線功能,重新排列功能</p><p>  可擴(kuò)展性:能夠適應(yīng)應(yīng)用要求的變化和修改,具有靈活的可擴(kuò)充性</p><p><b>  5.2、功能</b></p><p>  完成連連看游戲的核心算法</p><p><b>  5.3、性能</b></p><p> 

40、 能夠快速判斷兩個圖片是否能夠消除,并能在消除時進(jìn)行畫線操作,隔一段時間,能夠打亂順序進(jìn)行重新排列</p><p><b>  5.4、輸入項(xiàng)</b></p><p><b>  用戶點(diǎn)擊,時間條</b></p><p><b>  5.5、輸出項(xiàng)</b></p><p>&l

41、t;b>  消除匹配圖片</b></p><p><b>  5.6、算法</b></p><p>  5.6.1、圖片的連接判斷</p><p>  對于選中的兩個方塊的銷毀,它們必須符合下面 3 個條件:</p><p>  1、選中的兩個方塊圖案相同</p><p>  2

42、、選中的兩個方塊之間沒有障礙物阻礙的情況下,可以用若干個垂直的直線線段連接起來</p><p>  3、這些將它們連接起來的直線線段的折點(diǎn)不超過兩個(連接線由 x 軸和 y 軸的平 行線組成)</p><p>  我們進(jìn)行分情況分析:</p><p>  無拐點(diǎn)、一個拐點(diǎn)、兩個拐點(diǎn),設(shè)置 flag 進(jìn)行標(biāo)記這三種情況</p><p>  以下

43、是相關(guān)代碼: //獲得一個點(diǎn)可向上下左右走的范圍</p><p>  public int[] extend(Point a){</p><p><b>  int i;</b></p><p>  int[] aLoc = new int[4]; </p><p><b>  //向上</b>&l

44、t;/p><p>  for(i=a.y-1;i>=0 && grid[a.x][i]==0;i--){</p><p><b>  }</b></p><p>  aLoc[0]=i+1; </p><p><b>  //向下</b></p><p> 

45、 for(i=a.y+1;i<row && grid[a.x][i]==0;i++){</p><p><b>  }</b></p><p>  aLoc[1]=i-1; </p><p><b>  //向左</b></p><p>  for(i=a.x-1;i>=

46、0 && grid[i][a.y]==0;i--){</p><p><b>  }</b></p><p>  aLoc[2]=i+1; </p><p><b>  //向右</b></p><p>  for(i=a.x+1;i<col && grid[i

47、][a.y]==0;i++){</p><p><b>  }</b></p><p>  aLoc[3]=i-1;</p><p>  return aLoc; }</p><p>  //用于判斷水平方向是否連通</p><p>  private boolean horizon(Point

48、a, Point b){</p><p>  if(a.x == b.x && a.y == b.y) //如果點(diǎn)擊的是同一個圖案,直接返回 false</p><p>  return false;</p><p>  int x_start = a.x <= b.x ? a.x : b.x;</p><p>  in

49、t x_end = a.x <= b.x ? b.x : a.x;</p><p>  for(int x = x_start + 1; x < x_end; x++)//只要一個不是-1,直接返回 false</p><p>  if(grid[x][a.y] != 0){</p><p>  return false;</p><

50、p><b>  }</b></p><p>  return true;</p><p><b>  }</b></p><p>  //用于判斷垂直方向是否連通</p><p>  private boolean vertical(Point a, Point b){</p>

51、<p>  if(a.x == b.x && a.y == b.y)</p><p>  return false;</p><p>  int y_start = a.y <= b.y ? a.y : b.y;</p><p>  int y_end = a.y <= b.y ? b.y : a.y;</p>&

52、lt;p>  for(int y = y_start + 1; y < y_end; y++)</p><p>  if(grid[a.x][y] != 0) </p><p>  return false;</p><p>  return true;</p><p><b>  }</b></p&g

53、t;<p>  //只有一個拐點(diǎn)的情況</p><p>  private boolean oneCorner(Point a, Point b){</p><p>  Point c = new Point(a.x, b.y);</p><p>  Point d = new Point(b.x, a.y);</p><p>

54、  if(grid[c.x][c.y] == 0){</p><p>  boolean method1 = horizon(b, c) && vertical(a, c);</p><p>  if(method1){ </p><p>  corner=new Point(c.x, c.y);</p><p><b&

55、gt;  }</b></p><p>  return method1;</p><p><b>  }</b></p><p>  if(grid[d.x][d.y] == 0){</p><p>  boolean method2 = horizon(a, d) && vertical(b

56、, d);</p><p>  if(method2){</p><p>  corner=new Point(d.x, d.y);</p><p><b>  }</b></p><p>  return method2;</p><p><b>  }else{</b>&

57、lt;/p><p>  return false;</p><p><b>  }</b></p><p><b>  }</b></p><p>  //有兩個拐點(diǎn)的情況</p><p>  private boolean twoCorner(Point a, Point b)

58、</p><p><b>  {</b></p><p>  ll = scan(a, b);</p><p>  if(ll.isEmpty())</p><p>  return false;</p><p>  for(int index = 0; index < ll.size();

59、 index++){</p><p>  Line line = (Line)ll.get(index);</p><p>  if(line.direct == 1){</p><p>  if(horizon(a, line.a) && horizon(b, line.b)){</p><p>  corner=new P

60、oint(line.a);</p><p>  corner2=new Point(line.b);</p><p>  return true;</p><p><b>  }</b></p><p><b>  }else{</b></p><p>  if(vertic

61、al(a, line.a) && vertical(b, line.b)){</p><p>  corner=new Point(line.a);</p><p>  corner2=new Point(line.b);</p><p>  return true;</p><p><b>  }</b>

62、;</p><p><b>  }</b></p><p><b>  }</b></p><p>  return false;</p><p><b>  }</b></p><p>  //上面設(shè)計了一個類來判斷兩個拐點(diǎn)的情況</p>

63、<p>  //類的定義,構(gòu)造函數(shù)如下</p><p>  class Line{</p><p>  public Point a;</p><p>  public Point b;</p><p>  public int direct;</p><p>  public Line(){</p&

64、gt;<p>  a = new Point();</p><p>  b = new Point();</p><p><b>  }</b></p><p>  public Line(int direct, Point a, Point b){</p><p>  this.direct = dire

65、ct;</p><p>  this.a = a;</p><p>  this.b = b;</p><p><b>  }</b></p><p><b>  }</b></p><p>  //對兩個拐點(diǎn)的情況進(jìn)行掃描,將掃描線放入 Line 類型的數(shù)組中</p&

66、gt;<p>  private LinkedList scan(Point a, Point b){</p><p>  ll = new LinkedList<Line>();</p><p>  //Point c = new Point(a.x, b.y);</p><p>  //Point d = new Point(b.x,

67、a.y);</p><p>  for(int y = a.y; y >= 0; y--)</p><p>  if(grid[a.x][y] == 0 && grid[b.x][y] == 0 && horizon(new Point(a.x, y), new Point(b.x, y)))</p><p>  ll.add(

68、new Line(0, new Point(a.x, y), new Point(b.x, y)));</p><p>  for(int y = a.y; y < row; y++)</p><p>  if(grid[a.x][y] == 0 && grid[b.x][y] == 0 && horizon(new Point(a.x, y), ne

69、w Point(b.x, y)))</p><p>  ll.add(new Line(0, new Point(a.x, y), new Point(b.x, y)));</p><p>  for(int x = a.x; x >= 0; x--)</p><p>  if(grid[x][a.y] == 0 && grid[x][b.y]

70、 == 0 && vertical(new Point(x, a.y), new Point(x, b.y)))</p><p>  ll.add(new Line(1, new Point(x, a.y), new Point(x, b.y)));</p><p>  for(int x = a.x; x < col; x++)</p><p&g

71、t;  if(grid[x][a.y] == 0 && grid[x][b.y] == 0 && vertical(new Point(x, a.y), new Point(x, b.y)))</p><p>  ll.add(new Line(1, new Point(x, a.y), new Point(x, b.y)));</p><p>  retu

72、rn ll;</p><p><b>  }</b></p><p>  //最后做總體判斷,flag 表示拐點(diǎn)的數(shù)目</p><p>  public boolean checkLink(Point a,Point b){</p><p>  if(grid[a.x][a.y] != grid[b.x][b.y])//

73、如果圖案不同,直接為 false</p><p>  return false;</p><p>  if(a.y == b.y && horizon(a, b)){</p><p><b>  flag=0;</b></p><p>  return true;</p><p>

74、<b>  }</b></p><p>  if(a.x == b.x && vertical(a, b)){</p><p>  flag=0; return true;</p><p><b>  }</b></p><p>  if(oneCorner(a, b)){</

75、p><p><b>  flag=1;</b></p><p>  return true;</p><p><b>  }</b></p><p>  if(twoCorner(a, b)){</p><p><b>  flag=2;</b></p

76、><p>  return true;</p><p><b>  }else{</b></p><p>  return false;</p><p><b>  }</b></p><p><b>  }</b></p><p>

77、  5.6.2、圖片消除的畫線</p><p>  根據(jù) flag 的值分情況分析:</p><p>  Flag=0 時,從起點(diǎn)到終點(diǎn)畫一條線即可</p><p>  Flag=1 時,從起點(diǎn)到拐點(diǎn),從拐點(diǎn)到終點(diǎn)畫兩條線</p><p>  Flag=2 時,從起點(diǎn)到拐點(diǎn),從拐點(diǎn)到拐點(diǎn),從拐點(diǎn)到終點(diǎn)畫三條線</p><p

78、>  在做連接判斷時就將路徑保存下來</p><p>  //畫線操作寫在 OnDraw 函數(shù)中,corner、corner2 保存拐點(diǎn)坐標(biāo) 函數(shù)中</p><p>  //每次都 sleep(50)后重繪</p><p>  switch(flag){</p><p><b>  case 0:</b></

79、p><p>  canvas.drawLine(width*(former.x + 0.5f), height*(former.y+0.5f), width*(current.x+ 0.5f), height*(current.y + 0.5f), p);</p><p><b>  flag=-1;</b></p><p>  SystemClo

80、ck.sleep(50);</p><p>  invalidate();</p><p><b>  break;</b></p><p><b>  case 1:</b></p><p>  canvas.drawLine(width*(former.x + 0.5f), height*(fo

81、rmer.y+0.5f), width*(corner.x+ 0.5f), height*(corner.y + 0.5f), p);</p><p>  canvas.drawLine(width*(corner.x + 0.5f), height*(corner.y+0.5f), width*(current.x+ 0.5f), height*(current.y + 0.5f), p);</p>

82、<p><b>  flag=-1;</b></p><p>  SystemClock.sleep(50);</p><p>  invalidate();</p><p><b>  break;</b></p><p><b>  case 2:</b>&l

83、t;/p><p>  canvas.drawLine(width*(former.x + 0.5f), height*(former.y+0.5f), width*(corner.x + 0.5f), height*(corner.y + 0.5f), p);</p><p>  canvas.drawLine(width*(corner.x + 0.5f), height*(corner.y

84、+0.5f), width*(corner2.x+ 0.5f), height*(corner2.y + 0.5f), p);</p><p>  canvas.drawLine(width*(corner2.x + 0.5f), height*(corner2.y+0.5f), width*(current.x+ 0.5f), height*(current.y + 0.5f), p);</p>

85、<p><b>  flag=-1;</b></p><p>  SystemClock.sleep(50);</p><p>  invalidate();</p><p><b>  break;</b></p><p><b>  default:</b><

86、;/p><p><b>  break;</b></p><p><b>  }</b></p><p>  5.6.3、重新排列</p><p>  隔一段時間后,將原有的排列隨機(jī)打亂,進(jìn)行重新排列</p><p>  //對當(dāng)前界面中的圖片進(jìn)行重新排列</p>

87、<p>  public void reDraw(){</p><p>  Random r = new Random();</p><p>  type= new ArrayList<Integer>();</p><p>  for(int i=0;i<row; i++){</p><p>  for(int

88、j=0; j <col;j++){</p><p>  if(grid[i][j]!=0){</p><p>  type.add(grid[i][j]);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>

89、;  }</b></p><p>  for(int i=0;i<row; i++){</p><p>  for(int j=0; j <col;j++){</p><p>  if(grid[i][j]!=0){</p><p>  int index = r.nextInt(type.size());</p

90、><p>  grid[i][j] = type.get(index);</p><p>  type.remove(index);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b><

91、;/p><p>  former_i=former_j=0;</p><p>  former.x=former.y=0;</p><p>  invalidate();</p><p><b>  }</b></p><p>  //重新排列界面中的圖片</p><p>  

92、private void reStart() {</p><p>  GameActivity.refresh=true;</p><p>  initType();</p><p>  initGrid();</p><p>  invalidate();</p><p><b>  }</b>

93、</p><p><b>  5.7、接口</b></p><p><b>  API函數(shù)</b></p><p><b>  5.8、限制條件</b></p><p><b>  無明顯限制條件</b></p><p>  5.9

溫馨提示

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

評論

0/150

提交評論