C語言圖形五子棋課程設計報告(共48頁)_第1頁
C語言圖形五子棋課程設計報告(共48頁)_第2頁
C語言圖形五子棋課程設計報告(共48頁)_第3頁
C語言圖形五子棋課程設計報告(共48頁)_第4頁
C語言圖形五子棋課程設計報告(共48頁)_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上北京師范大學 C語言課程設計報告 課題名稱: 游戲五子棋 指導教師: 尹乾 課題組員: 羅福莉 趙帥帥 何虹達 院系: 信息科學與技術 時間: 2014.3.15-2014.4.20 摘 要五子棋是一種兩人對弈的純策略型棋類游戲,應用C語言編寫程序可以在計算機上實現(xiàn)二人對弈五子棋功能。二人對弈五子棋程序由歡迎界面顯示、游戲界面生成、光標移動與落子、判斷勝負、悔棋功能、提供音效等子程序構成;程序中應用了結構體、數(shù)組、全局變量、按鍵處理和圖形編程等元素和語句。程序通過棋盤和棋子圖像生成、二人移子與落子和判斷勝負等功能的實現(xiàn),在計算機上實現(xiàn)了二人五子棋對弈。 目 錄摘 要2

2、第1章:需求分析31.1五子棋背景31.2 五子棋需求分析和流程設計4第2章:概要設計72.1 各類頭文件和全局變量72.2 畫面顯示模塊8第3章:詳細設計113.1 玩家操作模塊113.2音效提供模塊113.3 勝負判斷模塊12第4章:調(diào)試分析134.1 圖形模塊13 4.2 玩家操作模塊134.3 勝負判斷模塊14第5章:用戶手冊14第6章:小組分工15第7章:結論與心得16第8章 :源程序代碼16附錄一 Color命令的使用說明29 附錄二 ASCII 碼表29第1章:需求分析1.1五子棋背景傳統(tǒng)五子棋的與圍棋相同,分為黑白兩色,棋盤為18×18,棋子放置于棋盤線上。兩人對局,

3、各執(zhí)一色,輪流下一子,先將橫、豎或斜線的5個或5個以上同色棋子連成不間斷的一排者為勝。 因為傳統(tǒng)五子棋在落子后不能移動或拿掉,所以也可以用紙和筆來進行游戲。1.2 五子棋需求分析和流程設計本程序設計為人與人對弈,一方執(zhí)黑棋,一方執(zhí)白棋,輪流走棋,每方都試圖在游戲結束前讓自己的棋子五子相連,首先實現(xiàn)五子相連的一方獲勝。程序執(zhí)行過程中,要求棋盤、棋子時時可見,游戲界面有提示信息輪到何方下棋,人可以通過按鍵盤按鍵移動光標,再點擊enter鍵擺放棋子,并且每落一子都有系統(tǒng)聲音,創(chuàng)新之處是可以提供悔棋功能。1.2.1 程序需求分析根據(jù)功能需求,將程序分為畫面顯示、玩家操作、音效提供、勝負判斷五個模塊,以

4、下分析各模塊的需求。畫面顯示模塊:程序開始運行時,顯示制作者和給出歡迎及退出界面;游戲開始后要求生成18×18的棋盤圖像,并在棋盤上方顯示歡迎信息“歡迎play our五子棋”,棋盤下方游戲顯示應該輪到甲方或者乙方落子,棋盤左右顯示雙方操作方式,進行過程中,要求實時顯示棋盤上已落下的棋子,甲方為白球,乙方為白圈;分出勝負后,要求給出游戲結束畫面,并且詢問用戶是否需要繼續(xù)游戲。玩家操作模塊:程序開始時,需玩家確定選擇“人人對戰(zhàn)”后開始游戲;游戲過程中,兩個玩家通過不同的按鍵移動光標,選擇落子;游戲進行過程中,當前玩家下棋后,另一位玩家下棋前,當前玩家可以悔棋?;谄逄崾驹谄灞P右下方,為按

5、鍵“b”。游戲結束時,有玩家選擇是否開始新游戲。 音效提供模塊:玩家每落一子,系統(tǒng)提供音效一聲,增加下棋的趣味性。勝負判斷模塊:實時監(jiān)測棋盤上棋子,一旦某一色棋子出現(xiàn)五子連線,終止游戲程序,并著色連成一線的五子,棋盤下方彈出該色玩家勝出信息。1.2.2程序流程設計 根據(jù)程序需求分析結果,可以得出程序的總體結構圖如圖1,程序總體流程圖如圖2。五子棋游戲五子棋模塊二:玩家操作模塊三:音效提供模塊四:勝負判斷模塊一:畫面顯示 圖1 五子棋總體結構圖開始制作者展示進入菜單界面N人人對戰(zhàn)?退出游戲Y是否繼續(xù)新游戲?開始游戲ESCY確認退出?b悔棋甲方判斷NEnter甲方獲勝?退出游戲顯示甲方獲勝消息Y確

6、認退出?N乙方判斷ESCb悔棋YEnterN顯示乙方獲勝消息乙方獲勝?YN 圖2 程序總體流程圖第2章:概要設計2.1 各類頭文件和全局變量#include <stdio.h>#include<windows.h>#include <stdlib.h>#include<conio.h>/使用getch()函數(shù)int startchoice; /int winner; /int player; /Q200200= 0;/Q數(shù)組記錄旗子char button;/讀入鍵盤輸入的指令,如2.2 畫面顯示模塊畫面顯示模塊由歡迎界面,游戲棋盤界面,確認是否退

7、出對話框界面,以及感謝使用界面組成。 畫面顯示模塊函數(shù)如下:void Welcome() /歡迎界面void Draw() /繪畫游戲棋盤界面void Clean()/清除運動的軌跡void menu_choose(char press)/選擇是否退出游戲對話框void PutDown()/顯示落子函數(shù)void goto_xy(int x, int y) /光標移動函數(shù) 畫面效果圖如圖3,4,5,6。 圖3 歡迎界面圖 圖4 主菜單界面圖 圖5 游戲界面圖 圖6 確認退出對話框第3章:詳細設計3.1 玩家操作模塊棋子的移動與落子有鍵盤上按鍵控制,本程序選取甲乙雙方按鍵都為W、S、和回車鍵,“b

8、”,“ESC”,分別代表上移、下移、左移、右移光標和落子,悔棋,退出。在光標移動的過程中,光標按照玩家按鍵移動;在玩家按下落子按鍵后,程序自動調(diào)用棋子顯示子程序和判斷勝負子程序。當前玩家下棋后,另一位玩家下棋前,當前玩家可以悔棋?;谄逄崾驹谄灞P右下方,為按鍵“b”。甲乙的落子后,程序會為落子處的數(shù)組元素賦一個特定值(玩家甲的棋子賦為1,玩家乙的棋子賦為2),用于判定勝負和悔棋。玩家操作模塊主要由以下函數(shù)構成:void Record() /記錄棋子的情況void go_back(int x1,int y1)/悔棋函數(shù)void Play(char ch)/讀取鍵盤的操作 移動光標 下棋和悔棋操作3

9、.2音效提供模塊為了提高游戲的趣味性,我們?yōu)楸居螒蛱峁┝撕唵蜗到y(tǒng)音效。程序語句很簡單 printf("a");/'a'表示蜂鳴聲3.3 勝負判斷模塊勝負判斷模塊是程序的關鍵,該模塊的設計直接關系到程序的運行速率和運行結果的正確與否。本函數(shù)根據(jù)每次落子的位置,分別向上、下、左、右、左上、左下、右上、右下八個方向判斷是否有相同顏色的棋子連成五子,如果成立,游戲就結束,并顯示提示信息,否則繼續(xù)落子。以下簡析本程序流程:,由獲勝條件可以知,通過判斷行、列、斜邊、反斜邊方向上是否有連續(xù)的5個子即可得出是否獲勝結果。在游戲開始時,將棋盤初始化,即將棋盤抽象為一個18*1

10、8的數(shù)組,數(shù)組中每個元素數(shù)值設為0。甲方落子時,將數(shù)組內(nèi)相應坐標處元素賦值為2;乙方落子時,將數(shù)組內(nèi)相應坐標處元素賦值為1。通過循環(huán)掃描棋盤數(shù)組,經(jīng)掃描后,如發(fā)現(xiàn)在行、列、斜邊、反斜邊方向上有五個連續(xù)的2,甲方獲勝;如發(fā)現(xiàn)在行、列、斜邊、反斜邊方向上有五個連續(xù)的1,乙方獲勝。勝負判斷模塊主要由一個函數(shù)構成:int Judge() /判斷勝負函數(shù)第4章:調(diào)試分析4.1 圖形模塊1在圖形模塊中,因為是第一次使用,所以剛開始時對于棋盤創(chuàng)建的位置把握有些欠缺。解決方案:參考書本以及google,找出最合適的位置坐標。2. 在構建棋子時候,發(fā)現(xiàn)C語言中似乎對顏色的處理有些錯誤,當棋譜線的顏色為白色時,無

11、法構建黑色棋子,只能畫出白色棋子。解決方案:用白圈區(qū)別于白球,類似白子和黑子。4.2 玩家操作模塊1. 在玩家操作模塊中,出現(xiàn)的最大問題之一就是棋盤已經(jīng)有棋子的地方還可以覆蓋另一個棋子。解決方案:通過在PutDown()函數(shù)中添加if條件語句,判定如果所在位置對應的數(shù)組值不等于0時,不能落子。2. 另一個問題就是之前提到的,操作定位框的時候會將定位框移到棋盤之外造成溢出。解決方案: 通過if語句判定,如果操作框超出范圍則移動到對應相反位置,例如移動棋盤最上端,若繼續(xù)向上移動,則移動至棋盤最下端對應位置。3. 還有一個就是悔棋模塊中,通過將現(xiàn)有棋子覆蓋與棋盤底色相同的顏色來覆蓋后,棋譜線條部分也

12、會被覆蓋。解決方案:在go_back();即悔棋函數(shù)。用棋譜線來覆蓋棋子(例如: 等)。4.3 勝負判斷模塊1. 在勝負判斷中一直沒能想到好的辦法來數(shù)據(jù)化判斷哪方玩家獲得勝利。解決方案:通過參考書籍并加以優(yōu)化,得出將棋譜做成數(shù)組,定義甲方落下為1,乙方落下為2,初始為0,這樣即不會造成沖突,也很好的解決了判斷問題。2. 另一個問題在于一直不能優(yōu)化代碼做到不每次都掃描整個棋盤來判斷勝負。解決方案:至今尚未解決,嘗試過局部掃描,但失敗了。第5章:用戶手冊1.進入演示程序后,即顯示歡迎界面,幾秒后,按任何鍵進入菜單界面,再選擇人人對戰(zhàn)可以進入主界面開始游戲或者選擇退出鍵。2.棋子的移動與落子有鍵盤上

13、按鍵控制,本程序選取甲乙方都為、和回車鍵,分別代表上移、下移、左移、右移光標和落子。在光標移動的過程中,光標按照玩家按鍵移動;在玩家按下落子按鍵后,程序自動調(diào)用棋子顯示子程序和判斷勝負子程序。3. 在當前玩家按下落子按鍵后,程序自動調(diào)用棋子顯示子程序和判斷勝負子程序。當前玩家下棋后,另一位玩家下棋前,當前玩家可以悔棋?;谄逄崾驹谄灞P右下方,為按鍵“b”(即backspace)。4.游戲中Esc鍵可以直接退出游戲。5.游戲過程中,如果玩家1或者玩家2有一方獲得勝利后,程序自動將提示哪一方獲得了勝利,并可以選擇是否繼續(xù)新游戲。6.游戲結束且玩家選擇不再繼續(xù)后,顯示謝謝使用界面,再按任意鍵退出游戲。

14、第6章:小組分工組長:羅福莉組員:趙帥帥,何虹達具體分工:組員任務分工羅福莉報告書寫 程序調(diào)試 展示成果趙帥帥勝負判斷設計 主函數(shù)設計何虹達界面制作 程序調(diào)試第7章:結論與心得 通過對各子程序的設計與優(yōu)化,本程序完成了五子棋軟件的主體的設計與制作,基本達到了使用五子棋軟件的核心要求。然而程序還有一些不足之處,首先,程序的界面過于簡陋,其次,判斷勝后沒有顯示連成一線的棋子是哪些,用戶使用不便。最后就是程序法實現(xiàn)人機對戰(zhàn),缺乏可玩性。 第8章 :源程序代碼 /五子棋小游戲#include <stdio.h>#include<windows.h>#include <st

15、dlib.h>#include<conio.h>/使用getch()函數(shù)int startchoice,winner,player,Q200200= 0;/Q數(shù)組記錄旗子char button;/讀入鍵盤輸入的指令,如struct Point/點坐標的結構體 int x,y; point,game_xy;struct Piece/棋子的坐標記錄 struct Point coord; struct Piece *fore;struct Piece *head,*p,*ptr,*ptr1;void goto_xy(int x, int y) /光標移動函數(shù) COORD c; c

16、.X=2*x; c.Y=y; SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);void Init()/初始化函數(shù),將記錄棋子的數(shù)組初始化 for(int i=0; i<200; i+) for(int j=0; j<200; j+) Qij=0; startchoice=0;player=1; p=(struct Piece *)malloc(sizeof(struct Piece); head=p;void Welcome() /歡迎界面system("color 2F");/#inc

17、lude<windows.h> 2 背景綠色 F 字體亮白色 goto_xy(10,3); printf(""); goto_xy(17,1); printf("主菜單"); goto_xy(13,3); printf(" *人人對戰(zhàn)*"); goto_xy(13,4); printf(" *退出*"); point.x=12; point.y=3; goto_xy(0,0);void ShowWho()/顯示輪到哪一方下棋 goto_xy(17,22); if(player=0) printf(&qu

18、ot;輪到甲方落子"); else printf("輪到乙方落子"); goto_xy(point.x,point.y);void Draw() /繪畫游戲界面game_xy.x=10; game_xy.y=3; system("cls"); system("color 3F");/3 湖藍色 F 亮白色 goto_xy(15,1); printf("歡迎play our 五子棋!"); /*goto_xy(29,22); printf("重新開始 r");*/ goto_xy(1,2

19、2); printf("悔棋 b"); goto_xy(1,23); printf("退出 ESC");const int i=8;/const 定義的數(shù)據(jù)不可以被改變 而且修改數(shù)據(jù)比較方便 const int j=19;const int k=3; goto_xy(game_xy.x-i,game_xy.y+k);/輸出甲方的下棋方法 printf("甲方: "); goto_xy(game_xy.x-i,game_xy.y+k+2); printf("移動: 上 "); goto_xy(game_xy.x-i,

20、game_xy.y+k+4); printf(" 下 "); goto_xy(game_xy.x-i,game_xy.y+k+6); printf(" 左 "); goto_xy(game_xy.x-i,game_xy.y+k+8); printf(" 右 ");goto_xy(game_xy.x-i,game_xy.y+k+10);printf("落子: Enter");goto_xy(game_xy.x+j,game_xy.y+k);/輸出乙方的下棋方法 printf("乙方: "); go

21、to_xy(game_xy.x+j,game_xy.y+k+2); printf("移動: 上 "); goto_xy(game_xy.x+j,game_xy.y+k+4); printf(" 下 "); goto_xy(game_xy.x+j,game_xy.y+k+6); printf(" 左 "); goto_xy(game_xy.x+j,game_xy.y+k+8); printf(" 右 ");goto_xy(game_xy.x+j,game_xy.y+k+10);printf("落子: Ent

22、er"); for(int k1=0; k1<200; k1+)/初始化棋子記錄,在第二局時有明確的作用 for(int k2=0; k2<200; k2+) Qk1k2=0; for(int i=0; i<18; i+)/畫棋盤 if(i=0)/畫第一行 goto_xy(10,i+3); printf(""); if(i!=0&&i!=17)/畫出中間16行 goto_xy(10,i+3); printf(""); if(i=17)/畫最后一行 goto_xy(10,i+3); printf("&q

23、uot;); point.x=19; point.y=12; goto_xy(19,12);void Clean()/清除運動的軌跡 goto_xy(10,3); printf(" "); goto_xy(24,3); printf(" "); goto_xy(10,4); printf(" "); goto_xy(24,4); printf(" ");void menu_choose(char press)/選擇游戲還是退出if(press=72)/的ASCLL碼 if(point.y=3) point.y=4;

24、 else point.y=3; Clean(); goto_xy(10,point.y); printf(""); if(press=80)/的ASCLL碼 if(point.y=4)point.y=3; elsepoint.y=4; Clean(); goto_xy(10,point.y); printf(""); if(press=13)/ 13:回車鍵的ASCLL碼 startchoice=point.y-2;/startchoice 為1或2 void go_back(int x1,int y1)/悔棋函數(shù) goto_xy(x1,y1); if

25、(x1=10) if(y1=3) printf(""); else if(y1=20) printf(""); else printf(""); else if(x1=27) if(y1=3) printf(""); else if(y1=20) printf(""); else printf(""); else if(y1=3) printf(""); else if(y1=20) printf(""); else printf(&q

26、uot;"); Qpoint.xpoint.y=0;/在數(shù)組中將彈出的棋子對應的數(shù)據(jù)設為0 goto_xy(x1,y1);void Record() /記錄棋子的情況 p->coord.x=point.x; p->coord.y=point.y; ptr=p; p=(struct Piece *)malloc(sizeof(struct Piece); p->fore=ptr; ShowWho(); Qpoint.xpoint.y=player+1; if(player) player=0; return; player=1; goto_xy(point.x,poi

27、nt.y);void PutDown()/顯示落子函數(shù) if(Qpoint.xpoint.y=0)/先判斷該位置是否有棋子 if(player) printf(""); printf("a");/'a'表示蜂鳴聲 Record(); else printf(""); printf("a"); Record(); goto_xy(point.x,point.y); void Play(char ch)/鍵盤的操作 移動光標 下棋和悔棋操作 if(ch=72)/的ASCLL碼 光標上移 if(point

28、.y<=3)point.y=20; elsepoint.y-; goto_xy(point.x,point.y); if(ch=75)/的ASCLL碼 光標左移 if(point.x<=10)point.x=27; elsepoint.x-; goto_xy(point.x,point.y); if(ch=77)/的ASCLL碼 光標右移 if(point.x>=27)point.x=10; elsepoint.x+; goto_xy(point.x,point.y); if(ch=80)/的ASCLL碼 光標下移 if(point.y>=20)point.y=3; e

29、lsepoint.y+; goto_xy(point.x,point.y); if(ch=13)/回車鍵的ASCLL碼下棋 PutDown(); if(button='b'|button='B') /悔棋的操作 ptr1=p; if(p!=head) p=p->fore; free(ptr1); point.x=p->coord.x; point.y=p->coord.y; go_back(point.x,point.y); int Judge() int count=0; int pp=player=0?2:1;/三目運算 for(int c

30、=0; c<200; c+) for(int r=0; r<200; r+) if(Qrc!=pp) continue;/檢查列 int rr=r; int cc=c; while(-cc>=3 &&Qrrcc=pp)count+; cc=c; while(+cc<23 &&Qrrcc=pp)count+; cc=c; if(count>=4) return pp;/檢查行 count=0; while(-rr>=10 &&Qrrcc=pp)count+; rr=r; while(+rr<30 &

31、&Qrrcc=pp)count+; rr=r; if(count>=4) return pp;/檢查反斜邊 count=0; cc-; rr-; while(cc>=3|rr>=10) &&Qrrcc=pp) count+; cc-; rr-; rr=r; cc=c; cc+; rr+; while(cc<23|rr<30) &&Qrrcc=pp) count+; cc+; rr+; rr=r; cc=c; if(count+1>=5) return pp;/檢查正斜邊 count=0; cc+; rr-; while

32、(cc<23|rr>=10) &&Qrrcc=pp) count+; cc+; rr-; rr=r; cc=c; cc-; rr+; while(cc>=3|rr<30) &&Qrrcc=pp) count+; cc-; rr+; rr=r; cc=c; if(count+1>=5) return pp; count=0; return 0;int main(void)system("color 4E");printf("n 歡迎play五子棋!");goto_xy(15,3);printf(

33、"作者:小蘿莉");goto_xy(17,5);printf(" HE·Honda");goto_xy(17,7);printf(" ZSSB");Sleep(3000);system("cls"); while(1) Init();/初始化 int winner=0; Welcome();/歡迎界面 while(1)/讀取菜單選項 char choice=getch(); menu_choose(choice); if(startchoice!=0) break; if(startchoice=1)/選

34、擇人人對戰(zhàn) Draw(); goto_xy(17,22); printf("輪到甲方落子"); goto_xy(point.x,point.y); while(1) button=getch(); Play(button); /讀取鍵盤的操作 移動光標 下棋和悔棋操作 if(button=27)/ESC的ASCLL碼 if(MessageBox(NULL,TEXT("確定退出?"),TEXT(""),MB_ICONQUESTION|MB_OKCANCEL)=IDOK)system("cls");printf(&qu

35、ot;n謝謝使用!n");return 0; if(button=13)/回車鍵ASCLL碼按下后開始判斷輸贏 winner=Judge(); if(winner!=0) goto_xy(15,24); if(winner=2) printf("恭喜!甲方贏!n"); if(winner=1) printf("恭喜!乙方贏!n"); if(winner!=1&&winner!=2) continue; goto_xy(13,22); printf(" 繼續(xù)游戲?(Y/N): "); while(1) butt

36、on=getch(); if(button='n'|button='N'|button='y'|button='Y') break; if(button='n'|button='N')if(MessageBox(NULL,TEXT(" 確定退出?"),TEXT(""),MB_ICONQUESTION|MB_OKCANCEL)=IDOK)system("cls");printf("n謝謝使用!n");return 0; i

37、f(button='y'|button='Y') winner=0; system("cls"); break; if(startchoice=2) if(MessageBox(NULL,TEXT(" 確定退出?"),TEXT(""),MB_ICONQUESTION|MB_OKCANCEL)=IDOK)printf("nn謝謝使用!n");return 0; return 0; 附錄一 Color命令的使用說明顏色屬性由兩個十六進制數(shù)字指定 - 第一個為背景,第二個則為前景。每個數(shù)字

38、可以為以下任何值之一: 0 = 黑色 8 = 灰色 1 = 藍色 9 = 淡藍色 2 = 綠色 A = 淡綠色 3 = 湖藍色 B = 淡淺綠色 4 = 紅色 C = 淡紅色 5 = 紫色 D = 淡紫色 6 = 黃色 E = 淡黃色 7 = 白色 F = 亮白色附錄二 ASCII 碼表ASCII 碼使用指定的 7 位或 8 位二進制數(shù)組合來表示 128 或 256 種可能的字符。標準 ASCII 碼使用 7 位二進制數(shù)來表示所有的大寫和小寫字母,數(shù)字 0 到 9、標點符號,以及在美式英語中使用的特殊控制字符。目前許多基于x86的系統(tǒng)都支持使用擴展(或“高”)ASCII。擴展 ASCII 碼允

39、許將每個字符的第 8 位用于確定附加的 128 個特殊符號字符、外來語字母和圖形符號。值 8、9、10 和 13 分別轉換為退格、制表、換行和回車字符。它們并沒有特定的圖形顯示,但會依不同的應用程序,而對文本顯示有不同的影響控制字符二進制 十進制 十六進制 縮寫 解釋 0000 0000 0 00 NUL 空字符(Null) 0000 0001 1 01 SOH 標題開始 0000 0010 2 02 STX 正文開始 0000 0011 3 03 ETX 正文結束 0000 0100 4 04 EOT 傳輸結束 0000 0101 5 05 ENQ 請求 0000 0110 6 06 ACK 收到通知 0000 0111 7 07 BEL 響鈴 0000 1000 8 08 B

溫馨提示

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

評論

0/150

提交評論