java五子棋毕业设计方案整套.doc
《java五子棋毕业设计方案整套.doc》由会员分享,可在线阅读,更多相关《java五子棋毕业设计方案整套.doc(22页珍藏版)》请在咨信网上搜索。
1、1 引言伴随计算机技术不停发展,网络技术普及范围越来越广,网络能够提供服务多样、便捷,已经成为大家生产生活中不可缺乏关键组成部分。现在网络休闲游戏发展快速,它凭借健康、方便、互动性强、益智等很多优点,成为大部分现代人休闲娱乐首选。网络五子棋游戏是使用Java语言开发一款游戏。它使用SOCKET建立连接,多线程处理数据,和可嵌入网络浏览器APPLET作为用户端,这些特点使这款游戏不管是服务器还是用户端实现全部相对轻易。经过对该软件编写,还能够巩固学生对以上多种知识掌握和了解。2 JAVA语言概述2.1 JAVA介绍JAVA是Sun Microsystem企业开发编程语言,是一个简单,面向对象,分
2、布式,解释性,强壮,安全,和系统无关,可移植,高性能,多线程和动态语言。2.1.1 JAVA基础特点(1) 简单性Java和C+语言很相近,但Java比C+简单,它抛弃了C+中部分不是绝对必需功效,如头文件、预处理文件、指针、结构、运算符重载、多重继承和自动强迫同型。 Java实现了自动垃圾搜集,简化了内存管理工作。(2) 面向对象Java提供了简单类机制和动态构架模型。对象中封装了它状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象原型,经过继承和重载机制,子类能够使用或重新定义父类或超类所提供方法,从而既实现了代码复用,又提供了一个动态处理方案。(3) 多线程多线程使应用程
3、序能够同时进行不一样操作,处理不一样事件。在多线程机制中,不一样线程处理不一样任务,她们之间互不干涉,不会因为一处等候影响其它部分,这么轻易实现网络上实时交互操作。 (4) 分布性Java是面向网络语言。经过它提供类库能够处理TCP/IP协议,用户能够经过URL地址在网络上很方便访问其它对象。(5) 体系结构中立Java是一个网络语言,为使Java程序能在网络任何地方运行,Java解释器生成和体系结构无关字节码结构文件格式。为了使Java应用程序能不依靠于具体系统,Java语言环境还提供了用于访问底层操作系统功效类组成包,当程序使用这些包时,能够确保它能运行在多种支持Java平台上。(6) 安
4、全性用于网络、分布环境下Java必需要预防病毒入侵,Java不支持指针,一切对内存访问全部必需经过对象实例变量来实现,这么就预防了程序员使用欺骗手段访问对象私有组员,同时也避免了指针操作中轻易产生错误。2.1.2 Java中输入/输出流概念过滤流DataInputStream 和DataOutputStream 除了分别作为FilterInputStream 和FilterOutputStream子类外,还分别实现了接口DataInput 和DataOutput。接口DataInput 中定义方法关键包含从流中读取基础类型数据、读取一行数据、或读取指定长度字节数,如readBoolean()、
5、 readInt()、readLine()、readFully()等。接口DataOutput中定义方法关键是向流中写入基础类型数据或写入一定长度字节数组,如writeChar()、writeDouble()。 DataInputStream能够从所连接输入流中读取和机器无关基础类型数据,用以实现一个独立于具体平台输入方法;DataOutputStream 能够向所连接输出流写入基础类型数据。2.1.3 Socket 机制Socket是面向用户/服务器模型设计,网络上两个程序经过一个双向通讯连接实现数据交换,这个双向链路一端称为一个Socket。 Socket通常见来实现用户方和服务方连接。用
6、户程序能够向Socket写请求,服务器将处理此请求,然后经过Socket将结果返回给用户。Socket通信机制提供了两种通讯方法:有联接和无联接方法,分别面向不一样应用需求。使用有联接方法时,通信链路提供了可靠,全双工字节流服务。在该方法下,通信双方必需创建一个联接过程并建立一条通讯链路,以后网络通信操作完全在这一对进程之间进行,通信完成关闭此联接过程。使用无联接方法时其系统开销比无联接方法小,但通信链路提供了不可靠数据报服务,不能确保信源所传输数据一定能够抵达信宿。在该方法下,通信双方无须创建一个联接过程和建立一条通讯链路,网络通信操作在不一样主机和进程之间转发进行。在java中使用套接字相
7、当简单,Java API为处理套接字通信提供了一个类.Socket。使得编写网络应用程序相对轻易。JAVA支持流套接字(stream socket)和数据报套接字(datagram socket)。流套接字使用TCP(Transmission Control Protocol,传输控制协议)进行数据传输,而数据报套接字使用UDP(User Datagram Protocol,用户数据报协议)。在Socket层实现Java网络程序是严格同时。从一台机器发送数据操作要求对应一个从其它机器接收数据操作。2.2 JAVA工具JDK1) Java编译器Java编译器将Java源代码文件编译成可实施Jav
8、a字节码。Java源代码文件扩展名为 .java,Java编译器把这种扩展名文件编译成扩展名为.class文件。源文件中每个类在编译后全部将产生一个class文件,这意味一个Java源代码文件可能编译生成多个class文件。2) Java解释器Java解释器对编译生成字节码格式可实施程序运行提供支持,它是运行非图形Java程序命令行工具。3 程序设计思绪和算法3.1 人机博弈关键点人机对弈程序,最少应含有以下5个部分: (1)某种在机器中表示棋局方法,能够让程序知道博弈状态。 (2)产生正当走法规则,以使博弈公正地进行,并可判定人类对手是否乱走。 (3)从全部正当走法中选择最好走法技术。 (4
9、)一个评定局面优劣方法,用以同上面技术配合做出智能选择。 (5)一个界面,有了她,这个程序才能用。3.2 五子棋特点及规则 五子棋娱乐性强、规则简单、易学、流行性广。一般人不需长时间专门训练即可自如行棋。所以极受大众欢迎。五子棋规则为: (1)棋盘 采取像围棋盘一样15路或19路线棋盘,在此采取19路棋盘。 (2)下法 两人分别执黑白两色棋子。轮番在棋盘上选择一个无子交叉点落子,无子交叉点又被称为空点。 (3)输赢判定 黑、白双方有一方五个棋子在横、竖或斜方向上连接成一线即为该方赢。3.3 算法设计3.3.1 博弈树搜索过程 在以下讨论中,命名2个博弈者MAX和MIN。下面任务是为MAX找最好
10、移动。假设MAX先移动,然后2个博弈者轮番移动。所以,深度为偶数节点,对应于MAX下一步移动位置,称为MAX节点;深度为奇数节点对应于MIN下一步移动位置,称为MIN节点(博弈树顶节点深度为0)。k层包含深度为2k和2k1节点。通常见层数表示博弈树搜索深度,她能够表示出向前估计必需认识到搜索到终点是不可能(除了在博弈快结束时),所以,常采取在有限范围搜索方法。这里使用启发式搜索。在启发式搜索过程中,关键一步是怎样确定下一个要考察节点,在确定节点时只要能充足利用和问题相关信息,估量出节点关键性,就能在搜索时选择关键性较高节点,以利于博弈者以较快速度求出最好棋步。3.32 采取静态评定函数 这里用
11、评定函数h(i)衡量每一个叶节点位置“值”。 一个最好首步能够由一个最小最大化过程产生。假设轮到MAX从搜索树叶节点中选择,她肯定选择拥有最大值节点。所以,MIN叶节点一个MAX节点双亲倒推值就等于叶节点静态评定值中最大值。其次,MIN从叶结点中选择时,必需选择最小节点(即最负值)。既然如此,MAX叶节点MIN双亲节点被分配一个倒推值,她等于叶节点静态评定值最小值。在全部叶节点父节点被给予倒推值后,开始倒推另一层,假定MAX将选择有最大倒推值MIN后继节点,而MIN会选择有最小倒推值MAX后继节点。继续逐层对节点评定,直到最终开始节点后继者被给予倒推值。MAX将选择有最大倒推值节点作为她首步。
12、整个过程有效性基于这么假设。用整个棋盘估值函数h(n)为静态估值函数。设想目前棋局S为轮到计算机方下棋(用 表示),任选一空点作为计算机方下棋位置(可有若干种选择),接着考虑在此情况下游戏者一方下棋棋局(用O表示);从某一“O”棋局出发,任选一空点作为游戏者一方落子处(又有若干种选择),再次形成计算机方下棋“ ”棋局;依这类推,这么可形成一棵以S为根结点博弈树,该树以O棋局为第2层子结点,以棋局为第3层子结点等等。假如继续向前搜索,可形成多层子结点,现在以向前搜索3层子结点为例来说明极大极小值过程。对第3层子结点某一棋局n,求出其估量值h(n),假设有一博弈树已形成,图1所表示,h(n)值由各
13、结点旁数值给出。 依据极小极大化分析法,先计算第3层子结点h(n)值,然后第2层子结点估量值取她各后继子结点极小值,根结点估量值取她各子结点极大值。这个取得最大估量值子结点即为从S出发计算机方最好落子方案。棋盘上某一行、某一列或某一对角线为一路,这里使 用棋盘为19行19列,所以,行和列方向上共有191938路;从左下到右上方向对角线有37路,一样,从左上到右下方向对角线也有37路。但对于五子棋来说必需在一条直线上有连续五个棋子才能赢。所以,在对角线上就能够降低8路。所以,整个棋盘路总数为:对某一棋局n,第i路得分:h(i)hc(i)hm(i)。 其中:hc(i)为计算机方在第i路估量值得分,
14、hm(i)为游戏者一方在第i路得分。正确得分规则作以下说明。规则中代表一空点;o代表对方棋子;代表有计算机方棋子;表示连续2点为空点;表示连续3个空点接一个计算机方棋子,再接两空点。某一规则 表示如在i路上有棋子组成形如则hc(i)30。其它规则表示相同。在系统中使用关键估值规则以下: 由对称性可知和估值相同,同理可得其它含有这么对称性估值全部认为是相等。在连续两路上出现(3)情形=hc(i)=5 000,一路出现(3),另外一路出现(4)=hc(i)=5 000。所以在整个棋盘上总估值为:为了增加系统智能化也能够添加其它部分规则。3.33 遗传算法优化估值函数 在博弈程序几大关键部分里,估值
15、函数是和具体棋类知识紧密结合一部分。能够说估值函数在很大程度上决定了博弈程序棋力高低。上面给出估值是依据实际经验给出。怎样对上述估值进行优化呢?下面采取遗传算法来改善静态估值。遗传算法估量值在很大程度上也依靠于实施者经验。不过能够利用部分高水平名局棋谱或同其它博弈程序对弈,看使用某一组参数时取胜机率有多大来进行较验。经过几次试验通常就能够得到很好静态估值。传统算法通常只能维护一组很好参数。遗传算法同传统算法相比能够同时维护几组很好参数,经过向其中添加一组新参数,通常是将几组老参数中选出值组合在一起做一点改变。然后同几组老参数比较孰优孰劣,将最差一组从中去除。这里面较关键操作是交叉和变异操作。交
16、叉经过随机交换父代个体信息来继承已经有参数中优良内容;变异经过随机改变个体中基所以增加种群多样性,避免优化因局部震荡而失败。 能够将遗传算法优化估值参数过程用图2表示。遗传算法优点: (1)因为搜索算法是从问题解开始,而不是一组参数。所以被局部震荡干扰造成求最优解失败可能性大大减小。 (2)此算法能将搜索关键集中于性能高部分,能较快地求出最好参数。在使用中应该注意问题以下: 种群数目 这是影响算法性能关键原因。种群数目过大,会造成运算时间太长,结果收敛缓慢;种群数目太小则可能造成算法精度过低,甚至停止不前。 交叉概率 这个用于控制交叉操作频度。此概率过大会造成种群中个体更新过快,较优个体不能稳
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 五子棋 毕业设计 方案 整套
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。