C语言图形五子棋课程设计报告.docx_第1页
C语言图形五子棋课程设计报告.docx_第2页
C语言图形五子棋课程设计报告.docx_第3页
C语言图形五子棋课程设计报告.docx_第4页
C语言图形五子棋课程设计报告.docx_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言课程设计报告-五子棋39南昌航空大学软件学院102032班 陈琦帆C语言课程设计报告五子棋院系:软件学院专业:软件工程班级:102032学号:10203230指导老师:王星摘 要五子棋是一种两人对弈的纯策略型棋类游戏,应用C语言编写程序可以在计算机上实现二人对弈五子棋功能。二人对弈五子棋程序由图像生成、光标移动与落子、判断胜负和系统帮助等子程序构成;程序中应用了结构体、数组、全局变量、按键处理和图形编程等元素和语句。程序通过棋盘和棋子图像生成、二人移子与落子和判断胜负等功能的实现,在计算机上实现了二人五子棋对弈。Abstract Gobang is a traditional checker-type game in which the lining up of five pieces in a straight line scores victory. And C language can accomplish a 2-player gobang on computers. This 2-player gobang program contains 4 main sections, they are, graphics, movement and selection, victory judgment and helping system. Several elements and sentences of C programming language such as structural element, array, global variables, press processing and Graphics Programming are also applied in the program. With the accomplishment of the three main subprograms, namely, checker board and pieces construction, players step-selection and victory judgment, a whole program of gobang is established and gobang is available on computers.目 录一、需求分析4二、概要设计6三、详细设计9四、调试分析23五、用户手册24六、测试数据25七、附录26第1章:需求分析1.1五子棋背景传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为1515,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 因为传统五子棋在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。1.2 程序设计本程序设计为人与人对弈,一方执黑棋,一方执白棋,轮流走棋,每方都试图在游戏结束前让自己的棋子五子相连,首先实现五子相连的一方获胜。程序执行过程中,要求棋盘、棋子时时可见,并且人可以通过按键盘按键移动光标,摆放棋子。1.2.1 程序需求分析根据功能需求,将程序分为图形显示、玩家控制、胜负判断和玩家计分四个模块,以下分析各模块的需求。图形显示模块:程序开始运行时,给出欢迎及帮助界面;游戏开始后要求生成1919的棋盘图像,并在棋盘上方提示当前落子方棋子颜色,游戏进行过程中,要求实时显示棋盘上已落下的棋子;分出胜负后,要求给出游戏结束画面。玩家控制模块:程序开始时,需玩家确定而后开始游戏;游戏过程中,两个玩家通过不同的按键移动光标,选择落子;游戏结束时,有玩家选择是否开始新棋局。胜负判断模块:实时监测棋盘上棋子,一旦某一色棋子出现五子连线,终止游戏程序,并着色连成一线的五子,弹出该色玩家胜出界面。玩家计分模块:一方玩家再胜利后通过对文件的操作进行计分,并输出于计分板上。1.2.2程序流程设计根据程序需求分析结果,可以得出程序的总体结构图如图1,程序总体流程图如图2。图1第2章:概要设计2.1.1 各类头文件,变量及宏定义#includestdio.h#include Conio.h#include graphics.h#include #include#define closegr closegraph/*定义1号玩家的操作键键码*/#define W 0x1177/*上移-W*/#define S 0x1f73/*下移-S*/#define A 0x1e61/*左移-A*/#define D 0x2064/*右移-D*/#define SP 0x3920/*落子-空格键*/*定义2号玩家的操作键键码*/ #define UP 0x4800/*上移-方向键up*/#define DOWN 0x5000/*下移-方向键down*/#define LEFT 0x4b00/*左移-方向键left*/#define RIGHT 0x4d00/*右移-方向键right*/#define ENTER 0x1c0d/*落子-回车键Enter*/#define ESC 0x011b/*退出*/#define Y 0x1579/*YES*/#define N 0x316e/*NO*/#define BACK 0xe08 /*悔棋*/#define DEL 0x5300 /*删除比分*/2.1.2 全局变量int ch,dh,del;/*文件操作计分变量*/int k,i,j,n,t;/*控制变量*/int a2020;/*棋盘数组*/2.2 图形模块棋盘的显示由游戏开始与结束部分控制,棋子以及棋子定位框的显示与保留由玩家操控部分决定,本章只列写棋盘与棋子的显示程序。图形模块主要由以下函数组成:initgr();/*图形界面初始化函数*/Welcome();/*欢迎界面*/Help();/*帮助界面*/board();/*画棋盘*/white();/*画白棋子*/black();/*画黑棋子*/bye();/*结束界面*/green();/*连珠时着色相应棋子*/show();drawmat();/*显示中文的点阵图函数,以及产生动态变色效果*/border();/*棋子定位框函数*/delborder();/*删除当前位置棋子定位框函数*/p1turn();/*轮到1p时在左边边框画出白棋以及输出white turn以提示1p进行操作*/p2turn();/*轮到2p时在右边边框画出黑棋以及输出black turn以提示2p进行操作*/p1del();/*轮到2p时去除p1turn();函数的效果*/p2del();/*轮到1p时去除p2turn();函数的效果*/2.3 玩家操作模块棋子的移动与落子有键盘上按键控制,本程序选取1P按键为W、S、A、D和空格键,2P按键为、和回车键,分别代表上移、下移、左移、右移光标和落子。在光标移动的过程中,光标按照玩家按键移动;在玩家按下落子按键后,程序自动调用棋子显示子程序和判断胜负子程序。1P、2P的落子后,程序会为落子处的数组元素赋一个特定值,用于判定胜负。玩家操作模块主要由以下函数构成:P1move();/*玩家1移动函数*/P2move();/*玩家2移动函数*/Back();/*悔棋函数*/2.4 胜负判断模块胜负判断模块是程序的关键,该模块的设计直接关系到程序的运行速率和运行结果的正确与否。本函数根据每次落子的位置,分别向上、下、左、右、左上、左下、右上、右下八个方向判断是否有相同颜色的棋子连成五子,如果成立,游戏就结束,并显示提示信息,否则继续落子。以下简析本程序流程:,由获胜条件可以知,通过判断上、下、左、右、斜上、斜下八个方向上是否有连续的5个子即可得出是否获胜结果。在游戏开始时,将棋盘初始化,即将棋盘抽象为一个19*19的数组,数组中每个元素数值设为6。1P落子时,将数组内相应坐标处元素赋值为0;2P落子时,将数组内相应坐标处元素赋值为1。通过循环扫描棋盘数组,如果 上、下、左、右、斜上、斜下八个方向某5个连续的子所对应的数组中元素之和等于5时,1P获胜;当上、下、左、右、斜上、斜下八个方向某5个连续的子所对应的数组中元素之和等于0时,2P获胜。胜负判断模块主要由以下几个函数构成:Win();/*主要函数,判断胜负*/P1win();/*p1胜利时调用,用于告知p1玩家胜利及询问是否继续*/P1win();/*p2胜利时调用,用于告知p2玩家胜利及询问是否继续*/restart();/*询问是否重新开始新的一局比赛的函数*/initialization();/*初始化棋盘对应数组所有值为6*/2.5玩家计分模块为了能使1p和2p更直观更便捷地看到双方对战的比分,所以做了此计分模块,因为分数不能因为重新调用main()函数就丢失了,所以采用对文件的操作,通过文件来记录双方的比分,这里对score1.txt和score2.txt文件进行操作,用来计1p和2p的分数。玩家计分模块主要由以下几个函数构成:Point();/*整合所有文件操作的模块*/ p1_point_input();/*1p计分文件读取*/ p1_point_input2();/*1p计分文件写入*/ p1_point_output();/*1p计分文件输出*/ p2_point_input();/*2p计分文件读取*/ p2_point_input2();/*2p计分文件写入*/ p2_point_output();/*2p计分文件输出*/delscore1() ; /*删除当前1p分数*/delscore2(); /*删除当前2p分数*/2.6 各模块之间调用关系如下第3章:详细设计3.1 图形模块initgr() /* BGI初始化 */ int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */ registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */ initgraph(&gd, &gm, ); welcome() /*欢迎界面*/ initgr() ;/*初始化*/clearviewport();/*清屏*/ setcolor(2); /*设置颜色*/ settextstyle(0,0,6); /*样式*/ outtextxy(180,180,Welcome);/*位置以及内容*/ settextstyle(0,0,2); /*文本样式*/ outtextxy(240,420,press any key to continue);/*位置以及内容*/ getch();/*press any key to continue*/ help() /*帮助界面,基本操作同welcome();函数*/ initgr(); clearviewport(); setcolor(2); settextstyle(0,0,2); outtextxy(60,100,P1 move; W S A D ); outtextxy(60,120, set : space ); outtextxy(60,180,P2 move: up down left right ); outtextxy(60,200, set: Enter); outtextxy(60,240,You can press Backspace to pull back!) ; outtextxy(60,280,When you want to quit the game,); outtextxy(60,300,press Esc.); outtextxy(220,440,press any key to continue); getch(); bye() /*say bye!,实现功能同上*/ initgr(); clearviewport(); setcolor(4) ; settextstyle(0,0,6); outtextxy(130,180,Thank you!); settextstyle(0,0,2); outtextxy(240,420,press any key to quit); getch(); board()/*画棋盘*/ setcolor(14); /*线色*/ setfillstyle(1,6); /*样式*/ bar(120,50,520,450); /*棋盘底*/ for(k=0;k21 ;k+) line(120+20*k,50,120+20*k,450) ; /*竖线*/ line(120,50+20*k,520,50+20*k) ; /*横线*/ setfillstyle(1,9) ; bar(540,200,620,300); /*1p2p两边框*/ bar(20,200,100,300); setcolor(2); settextstyle(3,0,4); outtextxy(50,210,1p); outtextxy(570,210,2p); delay(50000); show(); /*显示动态变色效果的标题*/ moveto(320,250); /*初始化中心位置*/ border();/*画定位框*/ p1turn();/*p1开始落子,游戏开始*/ white() /*画白棋*/setcolor(15);setfillstyle(1,15);circle(getx(),gety(),9);floodfill(getx(),gety(),15);black() /*画黑棋*/setcolor(0);setfillstyle(1,0);circle(getx(),gety(),9);floodfill(getx(),gety(),0);green() /*用粉色着色连珠时的棋子*/setcolor(13);setfillstyle(1,13);circle(getx(),gety(),9);floodfill(getx(),gety(),13);p1turn()/*画左边边框内白棋子*/setcolor(15);setfillstyle(1,15);circle(60,250,9);floodfill(60,250,15); settextstyle(3,0,4);outtextxy(20,280,white turn); p2turn() /*右边边框内黑色棋子*/setcolor(0);setfillstyle(1,0);circle(580,250,9);floodfill(580,250,0);settextstyle(3,0,4);outtextxy(540,280,black turn); p1del()/*不是1turn时候抹去左边边框内棋子*/ setfillstyle(1,9) ;floodfill(60,250,9);setcolor(9);settextstyle(3,0,4);outtextxy(20,280,white turn);p2del()/*不是2turn时候抹去右边边框内棋子*/setfillstyle(1,9);floodfill(580,250,9) ;setcolor(9);settextstyle(3,0,4);outtextxy(540,280,black turn);border() /*画定位框*/ setcolor(14); line(getx()-8,gety()-9,getx()-3,gety()-9); /*通过画线函数画出定位框*/ line(getx()+8,gety()-9,getx()+3,gety()-9); line(getx()-8,gety()-9,getx()-8,gety()-4); line(getx()+8,gety()-9,getx()+8,gety()-4); line(getx()-8,gety()+9,getx()-3,gety()+9); line(getx()+8,gety()+9,getx()+3,gety()+9); line(getx()-8,gety()+9,getx()-8,gety()+4); line(getx()+8,gety()+9,getx()+8,gety()+4);delborder() /*除去定位框*/ setcolor(6); /*本质在于颜色覆盖*/ line(getx()-8,gety()-9,getx()-3,gety()-9); line(getx()+8,gety()-9,getx()+3,gety()-9); line(getx()-8,gety()-9,getx()-8,gety()-4); line(getx()+8,gety()-9,getx()+8,gety()-4); line(getx()-8,gety()+9,getx()-3,gety()+9); line(getx()+8,gety()+9,getx()+3,gety()+9); line(getx()-8,gety()+9,getx()-8,gety()+4); line(getx()+8,gety()+9,getx()+8,gety()+4);drawmat(char *mat,int matsize,int x,int y,int color)/*点阵图所用标准输出方式*/ int i,j,k,m; m=(matsize-1)/8+1; for(j=0;jmatsize;j+) for(i=0;im;i+) for(k=0;kk) putpixel(x+i*8+k,y+j,color);show() /*动态点阵图中文闪烁效果*/ for(n=0;n3;n+) delay(10000); drawmat(wu32K,32,240,0,3);/*输出点阵图的“五”字*/ delay(10000); drawmat(zi32K,32,290,0,3); delay(10000); drawmat(qi32K,32,340,0,3); delay(10000); drawmat(wu32K,32,240,0,2); delay(10000); drawmat(zi32K,32,290,0,2); delay(10000); drawmat(qi32K,32,340,0,2); 3.2 玩家操作模块p1move() /*玩家1操作*/switch(bioskey(0) /*bioskey函数对键盘操作*/ case W: /*上移*/ if(gety()90)所有if语句作用在于如果落子即将溢出边框,让其改变位置到另一端,例如移动棋盘最上端,若继续向上移动,则移动至棋盘最下端对应位置 delborder();moveto(getx(),430); delborder();moverel(0,-20);border();p1move(); case A: /*左移*/ if(getx()410) delborder();moveto(getx(),70); delborder();moverel(0,20);border();p1move(); case D: /*右移*/ if(getx()480) delborder();moveto(140,gety(); delborder();moverel(20,0);border();p1move(); case SP: /*落子*/ if(agetx()gety()!=6)/*判定如果棋盘此处无子才能下,否则重新调用p1move函数*/ p1move();delborder(); /*去除定位框*/white();/*画棋子*/agetx()gety()=1;/*将所在位置对应的数组点赋值为1*/win(); /*判断胜负*/border(); /*在新的位置画出定位框*/对左右两边提示框操作,提示轮到2p进行操作,并调用p2move()函数p1del();p2turn();p2move(); case ESC: / *结束游戏*/ bye();closegraph(); exit(0); case BACK : /*悔棋操作*/ back();p1del();p2turn();p2move(); default: p1move(); P2move(); 函数与p1move();函数基本作用相同p2move() /*玩家2操作*/switch(bioskey(0) case UP: if(gety()90) delborder();moveto(getx(),430); delborder();moverel(0,-20);border();p2move(); case LEFT: if(getx()410) delborder();moveto(getx(),70);delborder();moverel(0,20);border();p2move(); case RIGHT: if(getx()480) delborder();moveto(140,gety();delborder();moverel(20,0);border();p2move(); case ENTER: if(agetx()gety()!=6) p2move();delborder();black();agetx()gety()=0;win();border();p2del();p1turn();p1move(); default: p2move(); case ESC: bye();closegraph(); exit(0); case BACK : back();p2del();p1turn();p1move(); back()/*悔棋功能*/setcolor(6);setfillstyle(1,6);circle(getx(),gety(),9);floodfill(getx(),gety(),6); /*通过将现有棋子覆盖与棋盘底色相同的颜色来实现*/setcolor(14) ;line(getx()-9,gety(),getx()+9,gety() ;因为覆盖棋盘颜色后对应的棋谱线条颜色被覆盖,所以通过画线函数补回被覆盖负分的线色line(getx(),gety()-9,getx(),gety()+9) ; 3.3胜负判断模块win()/*胜负判断主程序*/ for(i=120;i540;i=i+20) for(j=50;j470;j=j+20)/*通过循环扫描整个棋盘判定胜负*/ if(aij+ai+20j+ai+40j+ai+60j+ai+80j=5)|(aij+aij+20+aij+40+aij+60+aij+80=5)| (aij+ai+20j+20+ai+40j+40+ai+60j+60+ai+80j+80=5)|(aij+80+ai+20j+60+ai+40j+40+ai+60j+20+ai+80j=5)/*如果棋盘上任何位置数组对应的值之和为5,则白方5子连珠*/ if(aij+ai+20j+ai+40j+ai+60j+ai+80j=5)如果五子连珠,扫描是哪一个方向有连珠,并将连珠的5个字进行动态着色,以便玩家双方识别。 moveto(i,j); green();delay(10000);moveto(i+20,j);green(); delay(10000);moveto(i+40,j);green();delay(10000);moveto(i+60,j);green();delay(10000);moveto(i+80,j);green();delay(10000); else if(aij+aij+20+aij+40+aij+60+aij+80=5) moveto(i,j); green();delay(10000);moveto(i,j+20);green(); delay(10000);moveto(i,j+40);green();delay(10000);moveto(i,j+60);green();delay(10000);moveto(i,j+80);green();delay(10000); else if(aij+ai+20j+20+ai+40j+40+ai+60j+60+ai+80j+80=5) moveto(i,j); green();delay(10000);moveto(i+20,j+20);green(); delay(10000);moveto(i+40,j+40);green();delay(10000);moveto(i+60,j+60);green();delay(10000);moveto(i+80,j+80);green();delay(10000); else if(aij+80+ai+20j+60+ai+40j+40+ai+60j+20+ai+80j=5) moveto(i,j+80); green();delay(10000);moveto(i+20,j+60);green(); delay(10000);moveto(i+40,j+40);green();delay(10000);moveto(i+60,j+20);green();delay(10000);moveto(i+80,j);green();delay(10000); delscore1();p1_point_input2();p1_point_output() ; p1win(); 此处判定如果棋盘上任何位置数组对应的值之和为0,则黑方5子连珠 if(aij+ai+20j+ai+40j+ai+60j+ai+80j=0)|(aij+aij+20+aij+40+aij+60+aij+80=0)| (aij+ai+20j+20+ai+40j+40+ai+60j+60+ai+80j+80=0)|(aij+80+ai+20j+60+ai+40j+40+ai+60j+20+ai+80j=0) if(aij+ai+20j+ai+40j+ai+60j+ai+80j=0) moveto(i,j); green();delay(10000);moveto(i+20,j);green(); delay(10000);moveto(i+40,j);green();delay(10000);moveto(i+60,j);green();delay(10000);moveto(i+80,j);green();delay(10000); else if(aij+aij+20+aij+40+aij+60+aij+80=0) moveto(i,j); green();delay(10000);moveto(i,j+20);green(); delay(10000);moveto(i,j+40);green();delay(10000);moveto(i,j+60);green();delay(10000);moveto(i,j+80);green();delay(10000); else if(aij+ai+20j+20+ai+40j+40+ai+60j+60+ai+80j+80=0) moveto(i,j); green();delay(10000);moveto(i+20,j+20);green(); delay(10000);moveto(i+40,j+40);green();delay(10000);moveto(i+60,j+60);green();delay(10000);moveto(i+80,j+80);green();delay(10000); 此处依旧是五子连珠后的着色模块。 else if(aij+80+ai+20j+60+ai+40j+40+ai+60j+20+ai+80j=0) moveto(i,j+80); green();delay(10000);moveto(i+20,j+60);green(); delay(10000);moveto(i+40,j+40);green();delay(10000);moveto(i+60,j+20);green();delay(10000);moveto(i+80,j);green();delay(10000); delscore2(); p2_point_input2();p2_point_output() ;p2win(); p1win()setcolor(15) ;settextstyle(0,0,2);outtextxy(10,110,1p win);此处2个函数用于1p或2p获胜后的告知以及询问是否开始新的一局,调用restart();函数以继续或退出。outtextxy(240,460,Restart?(Y/N);restart();p2win()setcolor(15) ;settextstyle(0,0,2); outtextxy(535,110,2p win); outtextxy(240,460,Restart?(Y/N); restart();restart()通过对键盘的操作,提取Y或N以确定是否开始新的一局。switch(bioskey(0)case Y: main();case N: bye();closegraph(); exit(0); default:restart(); initialization() for(i=120;i540;i+) for(j=50;j470;j+) /*循环初始化棋盘对应的数组所在位置值为6*/ aij=6; 3.4 文件操作模块point() /*用于整合所有计分的函数,方便操作*/之所以做这么多函数来实现文件操作的计分,是因为我发现C语言中对文件操作似乎存在bug,如果放在一个函数中经常出现文件无法正常读取,无法正常写入等现象,即使拆分成如此多函数,也依旧偶尔会出现以上提到的一些小bug。p1_point_input();p1_point_output() ;p2_point_input();p2_point_output() ;p1_point_input() /*1p计分文件读取*/ FILE *fp; fp=fopen(score1.txt,r);首先打开文件,然后取出里面的数字赋值于ch变量,再用另一个函数打开文件并对ch进行自增操作,最后将ch写入文件。 ch=getw(fp); fclose(fp);p1_point_input2() /*1p计分文件输入*/ FILE *fp; fp=fopen(score1.txt,r+); ch=ch+1; putw(ch,fp); fclose(fp); p1_point_output() /*1p计分输出*/ int i=0; char sh,score10;通过再次打开文件,循环扫描,输出文件中的数值并设置其样式。 FILE *fp; fp=fopen(score1.txt, r); for(; (sh=fgetc(fp)!=EOF; ) scorei+=sh; scorei=0; setcolor(12); settextstyle(3,0,4); outtextxy(40,320,score); outtextxy(55,340,score); fclose(fp); p2_point_input() 玩家2的计分模块,和玩家1的相同,就不再重复介绍了。 FILE *fp; fp=fopen(score2.txt,r); dh=getw(fp); fclose(fp);p2_point_input2() FILE *fp; fp=fopen(score2.txt,r+); dh=dh+1; putw(dh,fp); fclose(fp); p2_point_output() int i=0; char fh,score10; FILE *fp; fp=fopen(score2.txt, r); for(; (fh=fgetc(fp)!=EOF; ) scorei+=fh; scorei=0; setcolor(12); settextstyle(3,0,4); outtextxy(560,320,score); outtextxy(575,340,score); fclose(fp);delscore1() /*删除当前1p分数*/ int i=0; char sh,score10; FILE *fp; fp=fopen(score1.txt, r); for(; (sh=fgetc(fp)!=EOF; ) scorei+=sh; scorei=0; setcolor(0); settextstyle(3,0,4); outtextxy(40,320,score); outtextxy(55,340,score);依旧通过循环读取文件内比分,然后通过颜色覆盖从而达到分数改变功能,这么操作十分复杂,体现了C语言图形编程下的不完善性。 fclose(fp);delscore2() /*删除当前2p分数*/ int i=0; char fh,score10; FILE *fp; fp=fopen(score2.txt, r); for(; (fh=fgetc(fp)!=EOF; ) scorei+=fh; scorei=0; setcolor(0); settextstyle(3,0,4); outtextxy(560,320,score); outtextxy(575,340,score);3.5函数大致调用关系图注:因为函数过多且调用关系过于复杂,没办法把所有函数的调用关系用图表达,所以只能将大致的关系图表示出来。第4章:调试分析主要遇到的问题已经在详细分析里说道,这里主要列举一些遇到的一些小问题。4.1 图形模块1在图形模块中,因为是第一次使用,所以刚开始时对于棋盘创建的位置把握有些欠缺。解决方案:参考书本以及其他资料,找出最合适的位置坐标。2. 在构建棋子时候,发现C语言中似乎对颜色的处理有些错误,当棋谱线的颜色为白色时,无法构建黑色棋子,只能画出白色棋子。解决方案:经过不断尝试,确认bug存在后,改变棋谱线颜色为淡黄色,之后能够

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论