基于VC++的五子棋程序设计与实现_第1页
基于VC++的五子棋程序设计与实现_第2页
基于VC++的五子棋程序设计与实现_第3页
基于VC++的五子棋程序设计与实现_第4页
基于VC++的五子棋程序设计与实现_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

毕业论文(设计)题目:基于VC++的五子棋程序设计与实现学部:专业班级:学号:学生姓名:指导教师姓名:指导教师职称:年月日摘要C++语言是一种面向对象的语言,尽管在当前,可视化语言发展迅速,普及很快,但C++语言作为一种基础的语言,它的有时依然存在,甚至有时它是不可替代的,特别是和硬件接口技术相联系的软件。五子棋游戏是一种简单大众的游戏,自计算机实现以来,深受广大电脑玩家的喜爱,现在流行的五子棋游戏软件大多缺乏美观的界面,和容易的操作方法,电脑的AI值也不是很高。本文通过C++语言在计算机图形方面的编程,设计了五子棋游戏软件,使该软件具有还算美观和操作简单的界面,在人机对战时,分为低级,中级和专家级,加大对游戏的乐趣,当然也可以实行人人对战。本游戏是以C++语言作为开发工具,采用搜索算法设计最优落子点开发的游戏软件。本文就是介绍五子棋软件设计的全过程。关键字C++语言面向对象最优落子AbstractC++languageisanobject-orientedlanguage,althoughinthecurrent,visuallanguagedevelopedrapidly,spreadquickly,buttheC++languageasabasiclanguage,itissometimesstillexists,andsometimesitisirreplaceable,especiallywithhardwareinterfacetechnologyassociatedsoftware.Volkswagenbackgammongameisasimplegame,sincethecomputertorealize,themajorityofPCgamerslove,nowpopularbackgammongamesoftwarelacksmostbeautifulinterface,andeasymethodofoperation,AIvalueofthecomputerisnotveryhigh.Inthispaper,C++programminglanguageincomputergraphics,designabackgammongamesoftware,sothatthesoftwarehastheappearanceandoperationisfairlysimpleinterface,theman-machinewar,dividedintolow,intermediateandexpertlevel,increasethegamefun,ofcourse,canalsobeimplementedforallwar.ThisgameisbasedonC++languageasadevelopmenttool,thesearchalgorithmdesignoptimalpointdevelopedgamesoftware.Thisarticleistointroducethewholeprocessofbackgammonsoftwaredesign.KeywordC++languageObject-orientedtheoptimal

initial目录TOC\o"1-3"\h\u78261绪论 6246931.1五子棋的简介 681651.2VisualC++的介绍 7249521.3开发环境及运行环境 7121681.3.1开发环境 755451.3.2运行环境 762132系统分析 8162962.1系统调研 844262.2可行性分析 811992.3

技术可行性分析 9293273软件架构 1035753.1棋盘类 1053993.1.1主要成员变量 1067473.2主要成员函数说明 1016883.2.1清空棋盘 10107403.2.2绘制棋子 10130763.2.3左键消息 11316903.2.4绘制棋盘 11318333.2.5对方落子完毕 1155773.2.6胜负的判断 11139713.3游戏模式类 1145043.3.1主要成员变量 11313093.3.2主要成员函数 12320153.4资源编辑 13326603.5消息说明 15213313.5.1落子消息 1548913.5.2声音消息 15317193.5.3提示消息 15321403.5.4悔棋消息 15264163.5.5输赢消息 15139413.5.6再次开局消息 16236224主要算法 17182784.1判断胜负 17271334.2人机对弈算法 17105604.2.1获胜组合 18157604.2.2落子后处理 18295274.2.3查找棋盘空位 18186774.2.4落子打分 18231454.2.5防守策略 1873194.2.6选取最佳落子 19107815软件实现 1977515.1游戏运行 19247766补充说明 2373577结论 2432037致谢 241绪论1.1五子棋的简介五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(FiveinaRow的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。五子棋的娱乐性强、规则简单、易学、流行性广,普通人不需长时间专门训练即可自如行棋,因此极受大众喜欢。五子棋规则为:第一:五子棋行棋时,黑棋先下第一子,由天元开始,后白棋在黑棋周围的交叉点的落子。接着黑方再以天元中心的25个交叉点的范围内落盘面的第三子,之后黑白双方相互顺序子。第二:最先在棋盘线交点横向,纵向,斜向形成已方的五个棋子连续的一方为胜。第三:出现禁手对方指出后将判负,其中包括两个或两个以上的活三,活四,长连均称之为禁手。第四:禁手只对黑棋有效,白棋无禁手。第五:黑方禁手形成时,白方需立即指出,黑方将被判负。若白方未发现黑方禁手存在而继续应子,其后指出黑方禁手不能判黑方负。第六:黑方连五与禁手同时形成,因黑方已连成五即黑方已获胜,故禁手规则失效。第七:在对局中,在盘上落下的子又拿起来,此动作称为拔子,若拔子将被判为负。第八:在对局中棋子掉落在棋盘上将被判负。若推子或蹭子,以盘面第一落点为准。用手将棋子推正不算违犯规则。第九:在对局中,一方自行中止比赛如:中途退场,将被判负。第十:在对局中对方宣布认输,本局获胜。第十一:超过比赛规定所用时间限制,将被判为负:正式比赛期间,迟到时间超过比赛容许时间将被判负。第十二:如下至最终一子仍不分胜负则定为平局。第十三:中盘期间双方同意和局提议,判定为平局。1.2VisualC++的介绍VisualC++6.0,简称VC或者VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。VisualC++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用有很大的局限性,只适用于Windows2000、WindowsXP和WindowsNT4.0。所以实际中,更多的是以VisualC++6.0为平台。VisualC++6.0由Microsoft开发,它不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。Microsoft的主力软件产品。VisualC++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows2000,WindowsXP和WindowsNT4.0。所以实际中,更多的是以VisualC++6.0为平台。VisualC++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。1.3开发环境及运行环境1.3.1开发环境Intel®Pentium®42.0GHz,512M内存,80G硬盘;Microsoft®Windows™2000Professional;Microsoft®VisualC++6.0;Microsoft®DeveloperNetworkforVisualStudio.NET98;VisualAssistX10.1.1301.01.3.2运行环境Intel®Pentium®2及以上处理器,32M以上内存,4G以上硬盘;Microsoft®Windows™9X/NT操作系统;800*600或以上的屏幕分辨率2系统分析2.1系统调研正式开发五子棋游戏之前进行调研是非常必要的,其必要性主要表现在以下几个方面。(1)明确用户的要求,以根据调查结果进行可行性分析,确认系统的开发是否可行。(2)提出新系统的人员并不都是系统研究人员,有些人对于其功能和处理数据的方法没有明确的认识。它们只是根据自己业务工作的需要提出了要求,系统开发人员要对此进行详细的调查和分析,确认用户的要求可以通过现有的计算机技术实现,保证开发的管理信息系统的功能与用户提出的要求相吻合。总之,必要对现行系统进行详细的调查,明确用户需求,保证开发的新系统的功能与用户的要求相吻合,避免耗费大量的人力、物力、财力,新系统的开发却失败的悲剧发生。2.2可行性分析可行性分析是在用户的要求和系统调研的基础上进行的,对新系统的开发从社会、技术、经济、管理等方面进行分析,并得出新系统的开发工作可行、不可行、需要修改、追加投资、暂缓开发、分步实施等方案和结论,最后完成可行性分析。可行性分析一般可定义为:可行性分析是在建设的前期对工程项目的一种考察和鉴定,对拟议中的项目进行全面与综合的技术、经济能力的调查,判断它是否可行。可行性分析阶段的主要工作包括以下几个方面:(1)新系统目标可行性分析:分析新系统的目标是否符合企业的现状和发展的需要。(2)社会可行性分析:社会可行性分析主要是指管理信息系统的开发是否符合国家法律政策,是否,能够与社会大系统实现良好的对接。(3)技术可行性分析:技术可行性分析是根据新系统的目标来衡量是否具备所需要的技术,包括系统开发人员数量和水平,硬件方面,软件方面及其它应用技术。

(4)经济可行性分析

经济可行性分析主要是对开发新系统所投入的资金与系统投入使用后所带来的经济效益进行比较,确认新系统是否会给企业带来一定的经济效益。(5)管理可行性分析:管理可行性分析主要是分析企业现行的管理体制和企业领导是否具有现代化的管理意识和管理水平。2.3

技术可行性分析技术可行性分析主要包括四个方面:目前有关的技术能否支持所开发的新系统;新系统开发人员的数量和水平,即人力资源;硬件和软件资源。(1)技术支持:首先根据新系统的目标,考虑目前有关的技术能否支持所开发的新系统。这里讨论的技术必须是已经普遍使用的,而不是待研究的或正在研究的。对于本系统,本人是采用C++编写的。而在开发五子棋的过程运用到了,图形的绘制(主要是对棋子的绘制,棋盘的绘制的)。还有C++种对声音的播放方式(主要是用于下棋的时候的落子声音,悔棋时的声音,赢棋时的声音,输棋的声音)。文件的保存和载入(主要用于对棋盘信息的储存和打开)。(2)硬件资源:开发管理信息系统所需的硬件资源包含以下两个方面:系统开发人员在管理信息系统的开发过程中所需要的计算机设备及其有关的外部设备;管理信息系统开发成功投入使用后,使用单位所应具备的计算机设备及其有关的外围设备。对硬件资源进行可行性分析时主要考虑计算机的主机内存、类型、功能、联网能力、安全保护措施以及输入/输出设备,外存储器和联网数据通信设备的配置、功能、效率等指标是否符合系统方案设计要求,同时还要考虑计算机的性能/价格比。本系统对计算机的要求不高,一般的硬件配置都能运行此系统。3软件架构3.1棋盘类整个架构的核心部分。封装了棋盘的各种可能用到的功能,如初始化、判断胜负等。用户操作主界面,主界面与棋盘类进行交互来完成对游戏的操作。3.1.1主要成员变量(1)棋盘等待由于在玩家落子后需要等待对方落子,例如:黑子先下,白字就处于等待状态,这时白子是不能落子的。还有就是悔棋,直接发出悔棋信息就能悔棋了。(2)棋盘数据这是一个15*15的二位数组,用来保存当前棋盘的落子数据。其中对于每个成员来说,0表示落黑子,1表示落白子,-1表示无子。(3)游戏模式指针这个游戏类的对象指针是可行类的核心内容。它所指向的对象实体决定了可行在执行一件事情时候的不同行为,具体的内容请参见“游戏模式”一节。(4)网络连接用来表示当前网络连接的情况,在网络对弈游戏模式下客户端连接服务器的时候用来判断是否连接成功;事实上,它也是区分当前游戏模式的唯一标志。3.2主要成员函数说明3.2.1清空棋盘在每一局游戏开始的时候都需要调用这个函数将棋盘清空,也就是棋盘的初始化工作。在这个函数中,主要发生了这么几件事情:(1)将数据中的每一个落子位置为无子状态(-1)。(2)按照传入的参数设置棋盘等待标志wait,以供先、后手的不同情况之用。(3)使用delete将came的指针所指向的原有游戏模式对象从堆上删除。3.2.2绘制棋子这无疑是很重要的一个函数,它根据参数给定的坐标和颜色绘制棋子。绘制的详细过程如下:(1)将给定的棋盘坐标换算为绘图的像素坐标。(2)根据坐标绘制棋子位图。(3)如果先前曾下过棋子,则将上一个绘制棋子上的最后落子指示矩形擦除。(4)在刚绘制完成的棋子四周绘制最后落子指示矩形。3.2.3左键消息作为棋盘唯一响应的左键消息,也需要做工作:(1)如果棋盘等待标志wait为true,则直接发出警告声音并返回,即禁止落子。(2)如果点击时的鼠标坐标在合法坐标(0,

0)~(14,

14)之外,亦禁止落子。(3)如果走的步数大于1步,方才允许悔棋。(4)进行胜利判断,如胜利则修改UI状态并增加胜利数的统计。(5)如未胜利,则向对方发送已经落子的消息。(6)落子完毕,将Wait标志置为TRUE,开始等待对方回应。3.2.4绘制棋盘每当图像消息触发时,都需要对棋盘进行重绘。在图像上作为响应绘制消息的消息处理函数使用了双缓冲技术,减少了多次绘图可能导致的图像闪烁问题。这个函数主要完成了以下工作:(1)装载棋盘位图并进行绘制。(2)根据棋盘数据绘制棋子。(3)绘制最后落子指示矩形。3.2.5对方落子完毕在对方落子之后,仍然需要做一些判断工作,这些工作与左键消息中的类似,在此不再赘述。3.2.6胜负的判断这是游戏中一个极其重要的算法,用来判断当前棋盘的形势是哪一方获胜。3.3游戏模式类这个类负责对游戏模式进行管理,以及在不同的游戏模式下对不同的用户行为进行不同的响应。由于并不需要CGame本身进行响应,所以将其设计为了一个纯虚类。3.3.1主要成员变量(1)棋盘指针由于在游戏中需要对棋盘以及棋盘的父窗口——主对话框进行操作及UI状态设置,故为CGame类设置了这个成员。(2)落子步骤一个好的棋类程序必须要考虑到的功能就是它的悔棋功能,所以需要为游戏类设置一个落子步骤的列表。由于人机对弈和网络对弈中都需要这个功能,故将这个成员直接设置到基类CGame中。3.3.2主要成员函数(1)悔棋操作在不同的游戏模式下,悔棋的行为是不一样的。人机对弈模式下,计算机是完全允许玩家悔棋的,但是出于对程序负荷的考虑,只允许玩家悔棋当前的两步棋(计算机一步,玩家一步)。双人对弈模式下,悔棋的过程为:首先由玩家向对方说出悔棋请求(悔棋消息),然后由对方决定是否允许玩家悔棋,在玩家得到对方的响应消息(允许或者拒绝)之后,才进行悔棋与否的操作。(2)初始化操作对于不同的游戏模式而言,也就有不同的初始化方式。对于人机对弈模式而言,初始化操作包括以下几个步骤:设置主界面计算机玩家的姓名;初始化所有的获胜组合;如果是计算机先走,则占据天元(棋盘正中央)的位置。发送落子消息在玩家落子结束后,要向对方发送自己落子的消息。对于不同的游戏模式,发送的目标也不同:对于人机对弈游戏模式,将直接把落子的信息(坐标、颜色)发送给相应的计算函数;对于双人对弈游戏模式,将把落子消息发送给套接字,并由套接字转发给对方。(4)胜利后的处理这个成员函数主要针对双人对弈模式。在玩家赢得棋局后,这个函数仍然会调用将玩家所下的制胜落子步骤发送给对方玩家,然后由游戏端来判定自己失败。3.4资源编辑由于我们这个程序出现的关于资源编辑的内容太多,我们具体介绍如下:见下图3-1和图3-2,我们需要添加的有:图3-1图3-1黑子图3-2图3-2白子说明:

由于下棋时我们必须把鼠标热点设置在中间,点击下图(图3-3)最右边按扭,然后把鼠标移动到图像中你想设置为热点的地方,按下鼠标左键。图3-3图3-3热点说明:

由于我们的图标支持256色,按下下图(图3-4)最右边按扭,选择Device里面显示的选项。图3-4图3-4黑子像素说明:

工具栏一般都是根据菜单选项而产生的,它的ID一般都能从菜单的ID中找到。3.5消息说明网络间传递的消息,都遵循以下一个结构体的形式:我们这用SY来表示消息的id。纵轴用x,横轴用y,x、y表示落子的坐标。Color表示落子的颜色。SSY随着SY的不同而不同。3.5.1落子消息表明对方落下了一个棋子,其中x、y和color成员有效SSY成员无效。在人机对弈游戏模式下,亦会模拟发送此消息以达到程序模块一般化的效果。3.5.2声音消息你可以选着你想要的,有声或者无声。建议有声,因为有声音将会提示,如果你快输时,会发出一个响声的。而且有声音更加的增加了游戏的乐趣。3.5.3提示消息当你想不到你下一步下那个位置的时候,你可以选择提示选项,它将会为你提示出下一步该如何去落子。3.5.4悔棋消息表示你想悔棋,那么你就直接发出消息,直接悔棋一步,而不能悔棋两步,还有就是,重新下了第二步后,可以重新悔棋,不过还是只能悔棋一步。3.5.5输赢消息你赢了,就是显示你赢,而你输,就显示你输了。其中,还有你共下了多少步而输或赢了对手,反之一样。当然也提供了,悔棋多少步的信息出来。还有你的评语消息。3.5.6再次开局消息表示你想再开一局,那你就直接发出消息,然后再开一局。当然,你可以选着人机对战或者双人对战。当你选着人机对战时,你还可以选着你想要的机器的智能,你选着的级别越高,智能也就越高。4主要算法五子棋游戏中,有相当的篇幅是算法的部分。无论是人机对弈,还是网络对弈,都需要合理算法的支持,本节中将详细介绍五子棋中使用的算法。4.1判断胜负五子棋的胜负,在于判断棋盘上是否有一个点,从这个点开始的右、下、右下、左下四个方向是否有连续的五个同色棋子出现,如图4-1所示。图4-1判断胜负方向这个算法也就是CTable的Win成员函数。从设计的思想上,需要它接受一个棋子颜色的参数,然后返回一个布尔值,这个值来指示是否胜利。流程图如下图4-2:开始黑子下子开始黑子下子白子下子是否有五子相连白子下子是否有五子相连结束是否否图4-2判断胜负流程图由于这个算法所遵循的搜索顺序是从左到右、自上而下,因此在每次循环的时候,都有一些坐标无需纳入考虑范围。例如对于横向判断而言,由于右边界所限,因而所有横坐标大于等于11的点,都构不成达到五子连的条件,所以横坐标的循环上界也就定为11,这样也就提高了搜索的速度。4.2人机对弈算法人机对弈算法完全按照CGame基类定义的接口标准,封装在了COneGame派生类之中。下面将对这个算法进行详细地介绍。4.2.1获胜组合获胜组合是一个三维数组,它记录了所有取胜的情况。也就是说,参考于CTable::Win中的情况,对于每一个落子坐标,获胜的组合一共有

15

*

11

*

2

+

11

*

11

*

2

=

572种。

而对于每个坐标的获胜组合,应该设置一个[15][15][572]大小的三维数组。

在拥有了这些获胜组合之后,就可以参照每个坐标的572种组合给自己的局面和玩家的局面进行打分,也就是根据当前盘面中某一方所拥有的获胜组合多少进行权值的估算,给出最有利于自己的一步落子坐标。

由于是双方对弈,所以游戏的双方都需要一份获胜组合,也就是:电脑获胜组玩家获胜组合

在每次游戏初始化的时候,需要将每个坐标下可能的获胜组合都置为true。

在初始化的时候,将每个棋子数置为0。4.2.2落子后处理每当一方落子后,都需要作如下处理:

如果己方此坐标的获胜组合仍为true,且仍有可能在此获胜组合处添加棋子,则将此获胜组合添加棋子数加1;如果对方此坐标的获胜组合仍为true,则将对方此坐标的获胜组合置为false,并将对方此获胜组合添加棋子数置为-1(不可能靠此组合获胜)。4.2.3查找棋盘空位在计算机落子之前,需要查找棋盘的空位,所以需要一个SearchBlank成员函数完成此项工作,此函数需要进行不重复的查找,也就是说,对已查找过的空位进行标记,并返回找到空位的坐标。4.2.4落子打分找到空位后,需要对这个点的落子进行打分,这个分数也就是这个坐标重要性的体现。考虑到攻守两方面的需要,所以将玩家落子给的分数置为负值。4.2.5防守策略落子的考虑不单单要从进攻考虑,还要从防守考虑。这一细节的实现其实就是让计算机从玩家棋盘布局分析战况,然后找出对玩家最有利的落子位置。4.2.6选取最佳落子它的实现原理是:在四个方向上,各自计算那个方向上棋子的状态,我们的思路是利用原来定义的白棋为1,黑棋为-1,的思想,让同个方向上的五个棋子的值相加,取绝对值并赋值给为这个方向定义的局部变量。

为什么要用五个棋子的值相加呢?因为,如果几个棋子是同色的,无论黑白,它的绝对值必然大,而对于几个棋子中有黑棋和白棋的,其值必然相加而抵消变小。所以我们可以利用这种方法来寻找旁边有多个同色棋子的空位置。

在每一个棋盘位置,计算以它为起点的四个方向(上、下、右下、左下),再比较这四个方向中哪个值最大,然后在这个方向上寻找落棋点。5软件实现5.1游戏运行(1)游戏开始自主选择是人机对战亦或是人人对战,还有先手问题,你先或是计算机先,音效是开活关。如下图5-1所示图5-1五子棋开始界面(2)游戏界面如下图5-2所示为于计算机对弈,你先下图5-2五子棋界面(3)游戏的工具栏-上有所需要的选项游戏难度选择可在游戏【G】上选择,新开局,英雄榜等等选项。如下图5-3所示。图5-3五子棋游戏工具栏(4)悔棋在选项上可以选择悔棋选项如下图5-4。图5-4选项(5)游戏结束例如下图5-5所示图5-5游戏结束界面6补充说明考虑到程序的响应速度,人机对弈算法只对玩家的棋子进行了一步的推测。由于计算机在落子时选取的是得分最高的一步落子,所以如果玩家在开局的时候不改变落子步骤,那么将会获得从头至尾相同的棋局。对于人机对弈的悔棋处理,由于这个算法的开销相当大,每一步落子都会存在不同的棋盘布局,所以实现从头到尾的悔棋不是很现实(将会存在过多的空间保存棋盘布局),因而在人机对弈模式下,只允许玩家悔最近的两步落子。7结论考虑到程序的响应速度,人机对弈算法只对玩家的棋子进行了一步的推测。

由于计算机在落子时选取的是得分最高的一步落子,所以如果玩家在开局的时候不改变落子步骤,那么将会获得从头至尾相同的棋局。

考虑到下棋同时还要聊天,所以并未对落子时间加入任何限制,同样如果玩家离开游戏也不会判负。

对于人机对弈

温馨提示

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

评论

0/150

提交评论