




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业论毕业论文文 基于 java 的五子游戏的开发设计 山东凯文科技职业学院 摘 要 人工智能是一门正在迅速发展的新兴的,综合性很强的交叉科学。它与生物工程、空间技术一起 被并列为二十一世界三大尖端技术。它的中心任务是研究如何使计算机去做那些过去只能靠人的智力 才能做的工作。目前各发达国家都把人工智能作为重点项目,列入本国的高科技发展计划当中,投入 巨大的人力和物力。 计算机人机对弈也是其中之一。作为人智能研究的一个重要分支,计算机博弈是检验人工水平的 一个重要方面。它的研究为人工智能带来了很多重要的方法和理论,产生了广泛的社会影响和学术影 响。 五子棋人机对弈是计算机博弈中的一种。研究其计算机算法,可以让我们看到人工智能的稚形, 也有助于我们人脑的开发。五子棋是我国发明的,研究它可以让更多的外国人了解五子棋,这有助于 我国优秀文化的推广。 关键词:人工智能,计算人机对弈,五子棋,算法 山东凯文科技职业学院 目 录 第一章 绪 论 .1 第二章 需求分析 .2 2.1 业务需求 2 2.1.1 此系统使用范围要求 .2 2.1.2 功能要求 .2 2.2 性能需求 .3 2.3 系统平台需求 .3 第三章 五子棋的相关基础 .4 3.1 五子棋解释 4 3.2 五子棋基本规则 4 3.3 五子棋常用术语 4 第四章 开发工具、环境及其技术 .7 4.1 java 简介.7 4.2 java 编程环境8 4.2.1 环境变量 .8 4.2.2 eclipse 插件 8 第五章 详细设计 .10 5.1 程序设计思路 10 5.1.1设计思想 .10 5.1.2程序设计分析 .10 5.2 程序设计12 结论 .22 参考文献 .23 致 谢 .24 山东凯文科技职业学院 1 第一章 绪 论 电脑已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形 图像处理、教育培训以及游戏娱乐等。windows系统的推出使电脑从高雅的学术殿堂走入了寻常 百姓家,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而, 虽然现在世界上已经充满了花样繁多的各种软件,但它们依然不能满足用户的各种特殊需要, 人们还不得不开发适合自己特殊需求的软件。java语言作为一种面向对象的编程语言,具有分 布式,可移植,高性能,多线程等特点。通过系统的学习,人们就可以使用它开发出功能齐全, 满足特殊需求的应用程序。java语言易学易用,对学习者掌握技能,开拓思维都有很大的帮助。 我作为一名学生,在系统的学习了java语言之后,经常用它搞一些小程序。这次毕业设计, 正好将学过的java语言中的各种技术综合起来,用jbuilder2006开发工具编写一个小游戏,既 对自己学过的技能进行一次检验,也能系统地将学过的知识复习巩固。 随着计算机技术的不断发展,网络技术的普及范围越来越广,网络能够提供的服务多样、 便捷,已经成为人们生产生活中不可缺少的重要组成部分。如今网络休闲游戏发展迅速,它凭 借健康、方便、互动性强、益智等诸多优点,成为大部分现代人休闲娱乐的首选。 网络五子棋游戏是使用java语言开发的一款游戏。它使用socket建立连接,多线程处理数 据,以及可嵌入网络浏览器的alet作为客户端,这些特点使这款游戏无论是服务器还是客户端 的实现都相对容易。通过对该软件的编写,还可以巩固我们对以上各种知识的掌握和理解。 山东凯文科技职业学院 2 第二章 需求分析 为了开发出真正满足用户需求量的软件产品,首先必须知道用户的需求。软件需求中包括 了多个方面来说明用户需求。在这一章中,主要从以下几方面来说明系统的需求。 2.1 业务需求 2.1.1 此系统使用范围要求 此系统为智力游戏,适合于各类游戏爱好者。由于其经典性及其游戏的简单性,各类人士 都可以也都爱玩。人们在与电脑对战享受娱乐的同时,也会体会到自己的智力也会有所提升。 2.1.2 功能要求 该款游戏主要由一下几个模块组成: 五子棋游戏 人 机 对 弈 模 式 人 人 对 弈 模 式 具 有 悔 棋 功 能 更 换 棋 盘 背 景 图 21 五子棋功能模块图 人机对弈模式:选择该模式可以实现人与电脑之间的对弈,电脑会智能的选择该在哪处下 子,并会在每次下棋结束后判断是否有哪方已经获胜,如果获胜则结束本局游戏,并提示玩家 游戏结束。 人人对弈模式:选择该模式可以实现人与人之间的对弈,系统会提示哪方先下,然后玩家 之间交替的下棋,同样系统会在下完每次棋后判断是否有哪方已经获胜,如果获胜则结束本局 游戏,并提示玩家游戏结束。 悔棋功能:这个功能也是根据游戏的实际需求而存在的,在现实生活中难免有失误下错了 棋,那么就需要悔棋。此功能提供了悔棋功能,使得下棋的灵活性有所提高。玩家若想悔棋, 山东凯文科技职业学院 3 则只需选择悔棋按钮便可以重新下过刚才的棋。 更换棋盘背景:次功能可以根据玩家的爱好任意更换棋盘的背景颜色,由于每个人对颜色 的喜好不一样,因此这个功能也是非常必需的。也行更换一种玩家所喜欢的颜色,玩家能发挥 得更好。 2.2 性能需求 该款五子棋游戏功能虽然简单,但最主要的还是实现了人人对弈模式和人机对弈两种模式, 所以从这个角度来说,该款游戏需要能很好的在两种模式间良好的转换。虽然系统不大,但要 在满足玩家的基本要求的情况下,电脑有一定的智能,能给于新手一定的帮助。 2.3 系统平台需求 编程语言:java 操作系统:windows xp系列 开发工具:myeclipse 山东凯文科技职业学院 4 第三章 五子棋的相关基础 3.1 五子棋解释 引用辞海中所言,五子棋是“棋类游戏,棋具与围棋相同,两人对局,轮流下子,先 将五子连成一行者为胜。”。五子棋的名称:日文亦有“连五子、五子连、串珠、五目、五目 碰、五格、五石、五法、五联、京棋”等多种称谓,英文则称之为fir (five in a row的缩写)、 gomoku(日语“五目”的罗马拼音)、gobang、connect 5、mo-rphion。捷克语piskvorky,韩语 omok、韩国人还称之为情侣棋。 3.2 五子棋基本规则 1.五子棋行棋时,黑棋先下第一子,由天元开始,后白棋在黑棋周围的交叉点的落子。 接着黑方再以天元中心的25个交叉点的范围内落盘面的第三子,之后黑白双方相互顺序子。 2.最先在棋盘线交点横向,纵向,斜向形成已方的五个棋子连续的一方为胜。 3.出现禁手对方指出后将判负,其中包括两个或两个以上的活三,活四,长连均称之 为禁手。 4.禁手只对黑棋有效,白棋无禁手。 5.黑方禁手形成时,白方需立即指出,黑方将被判负。若白方未发现黑方禁手存在而 继续应子,其后指出黑方禁手不能判黑方负。 6.黑方连五与禁手同时形成,因黑方已连成五即黑方已获胜,故禁手规则失效。 7.在对局中,在盘上落下的子又拿起来,此动作称为拔子,若拔子将被判为负。 8.在对局中棋子掉落在棋盘上将被判负。若推子或蹭子,以盘面第一落点为准。用手 将棋子推正不算违犯规则。 9.在对局中,一方自行中止比赛如:中途退场,将被判负。 10.在对局中对方宣布认输,本局获胜。 11.超过比赛规定所用时间限制,将被判为负:正式比赛期间,迟到时间超过比赛容许 时间将被判负。 12.如下至最终一子仍不分胜负则定为平局。 13.中盘期间双方 同意和局提议,判定为平局。 3.3 五子棋常用术语 1.着:也称“步”。对局中把一个棋子按照规则放到某一交叉点,称之为一着棋。一着是 山东凯文科技职业学院 5 否完成有两种规则: (1)在执行落子无悔规则是,以行棋者的手离开棋子为一着已完成。 (2)在执行限时规则时,以行棋者按下棋钟作为一着已完成。 2.pass :五子棋中引入的英文名称,即应该行棋的一方主动放弃此次行棋的机会,由 对方继续行棋。 3.先手:对方必须应答的着法,如对方形成活三必须阻止其形成活四。 4.绝对先手:相对先手而言,即形成同色连四或嵌五,对方必须应着,就是绝对先手。 绝对先手又叫“冲”。 5.vcf:(victory of continus four 的缩写) 意思是利用连续冲四取胜之意。利用连 续不断的冲四或嵌五的绝对先手,制止形成连五获得胜利的一种方法。在对局接近尾声或排局 解题中一种常见的取胜技巧。 6.追下取胜:是指白棋利用黑棋禁手取胜的战术。白1 冲四,迫使黑2 形成“四、四” 禁手( 即冲四,活四禁手), 这种取胜方法叫做追下取胜。 7.自由取胜:追下取胜以外的取胜方法,即未利用黑棋禁手战术而取胜。 8.一子双杀:是指对局中一方落子后出现两个叫杀点即两个获胜点,而使对方无法防 守的情形。一般是有两个冲四活三点,白棋的双活三,双四均可称为一子双杀。 9.阳线:棋盘上可见的横线与直线的总称。 10.阴线:也称“斜线”。是棋盘上不可见的斜行线。 11.“四、三”:指同时具备两个先手,其中一个四,另一个是活三。 12.“活三”、“嵌五”、“冲四”:参见五子棋重要棋形讲座。 13. 禁手:对局中禁止使用的战术或被判为负的行棋手段。 14. 开局:也称“布局”。布局阶段大体为七至十几着之内。种类繁多,职业连珠五子 棋有二十四种开局。 15. 局面:亦称“局势”。为对局中某一段时间内双方子力的配置情况。 16. 优势:是指足以取胜的优势局面,其对方即为败势。 17. 妙着:对局中走出的一步精妙的着法。既合乎逻辑又出人意料,有使局面顿时改 观的效果,对局势的发展及对局的质量都有重大影响。 18. 好着:也称“佳着”。对局中成功的某一步。 19. 正着:对局的某一局面中的正确着法。 20. 劣着:对局中,导致严重不利后果的一步错误着法。 21. 败着:也称“失着”“漏着”。对局中造成局面恶化的一步严重错误着法。 22. 等着:对局中具有等待性的一步着法,主要意图是等待有利时机。 23. 废着:也称“空着”。对局中不起作用的着法。实际上指浪费时间毫无疑义的错 着。 山东凯文科技职业学院 6 24. 抢先:对局中利用反活三或冲四的强制手段夺取主动权的着法。 25. 打谱:按照棋谱演练着法,是提高棋艺水平的重要方法之一。 26. 复局:也叫“复着”。对局结束又重演对局的过程。一般用以研究、比较双方的成败 得失和着法的优劣。 山东凯文科技职业学院 7 第四章 开发工具、环境及其技术 4.1 java 简介 java技术介绍: java技术是一门编程语言,也是一个平台,它基于java虚拟机技术,借助这个东西建立了 跨平台的优势。 java技术的重要性,世界上编程语言java 、c 、vb、c+依次排名前4位,这排名本身不说 明什么,至少也是工业界对编程语言使用上一个侧面的反映吧。 java编程语言与众不同之处在于:java程序既是编译型的(转换为一种称为java字节码的 中间语言),又是解释型的(jvm 对字节码进行解析和运行)。编译只进行一次,而解释在每 次运行程序时都会进行。编译后的字节码采用一种针对jvm 优化过的机器码形式;解释器是jvm 的实现。这段是摘自网上的,编译原理学的不是很好,对这门语言的背后运行机制理解到这样 了。 java平台是一种纯软件平台,它有三个版本java se、javaee、java me。 java se(java platform,standard edition)这个版本以前叫做j2se,后来版本号从1.4 直接跳到5.0,其实也就是1.5,所以就叫成java se 5.0。目前java开发人员使用较多的版本是 5.0,当然还有java se 6.0这个更新的版本。它允许开发和部署在桌面、服务器、嵌入式环境 和实时环境中使用的java 应用程序。java se还包含了支持java web服务开发的类,并为java ee这个版本提供基础。 虽说桌面应用程序,java一直不被看好,但也稍微提一下,负责桌面gui开发的类库我知道 的有:jdk自带的主要是awt/swing这个java原生类库;也可以使用ibm的swt/jface这个第三方 类库。开发工具我了解的有:netbeans(最近已经是6.0final版了,做gui有使用vb的感觉), eclipse(swt/jface这个项目其实就是做eclipse项目时扩展出来的,所以对swt/jface支持的 也不错)。 java ee(java platform,enterprise edition)这个版本以前叫做j2ee,也就是大家可 能听得比较多的,也是java比较流行的领域,java的企业级版本。java ee下有很多流行的开发 框架,像struts、spring、hibernate这种流行的所谓ssh组合等。 根据项目大小、应用领域,技术平台的选择面还是很多的,除了java ee,还有.net,lamp 山东凯文科技职业学院 8 组合(linux、apatch、mysql、php组合),相对来说比较新ruby在ruby on rails的框架应用, 后两者可能在相对来说比较轻量级的web领域运用成功案例比较多,更重量的企业级潜力还有待 挖掘。 java me(java platform,micro edition)这个版本以前叫做j2me。应用领域像各种移动 设备和嵌入式设备,比如:手机、pda、电视机顶盒和打印机。 java me不是太熟悉,不过移动设备和嵌入式设备的开发个人觉得算是比较有意思的领域, 最近比较瞩目的业界新闻有一个就是google发布开源智能手机操作系统开发平台android,也就 是前一阵子炒得很火的gphone(原来google出的不是手机,而是一个手机操作系统开发平台)。 这个平台貌似会对java me有些冲击,按照网上的消息,android包括:1、高度定制的linux操 作系统内核及智能手机硬件驱动支持;2、经过google修改过的java虚拟机dalvik,这里的性能 比sun的hotspot高,支持大部分java核心类库;3、大量智能手机开发核心类库;4、大量现成 的智能手机应用软件;5、基于eclipse的开发环境。也是按照网上的说法,java ee提供了统一 的编程平台,但不能调用操作系统的资源;而android下直达操作系统,上直达应用软件,如: 浏览器、日历、地图等。 java开发工具很多,个人使用的ide有eclipse和netbeans。eclispe比较流行,各种插件也 多,当然用起来也不错;netbeans现在也是越做越好了,介绍这两个ide主要是开源的,当然还 有其它工具如jbuilder、intellij、jcreator。这些ide各有优势劣势,根据你开发的项目来选 择了。 4.2 java 编程环境 4.2.1 环境变量 (1)java(tm) se development kits,即 jdk。 (2)设置环境变量: 右击 我的电脑-属性-高级-环境变量,这时候可以看到以下的环境变量:path:系统 在任何路径下都可以识别 java 命令。 classpath:为 java 加载类(包括 class,lib)的路径,只有类在 classpath 中,java 命令才能识 别。 java_home:java 的安装路径。 这三个变量是必须正确设置的,否则 java 命令将可能不会正常运行,具体设置如下: path: ;c:progran filesjavajdk1.6.0_01bin classpath: .;progran filesjavajdk1.6.0_01libdt.jar;progran filesjavajdk1.6.0_01libtools.jar java_home: progran filesjavajdk1.6.0_01 山东凯文科技职业学院 9 4.2.2 eclipse 插件 (1) xmlbuddy:编辑 xml 文件;下载地址为 。 (2) fat jar:打包插件,可以方便的完成各种打包任务,可以包含外部的包等。 (3) log4e:log4j 插件,提供各种与 log4j 相关的任务,log4j 专用于为程序输入调试信息。 (4) lomboz:ecilpse 的一个 j2ee 的插件,可以将很多 java 应用服务器,j2ee 组件和 web 应用开发 集成到 eclipse 中,可以帮助 java 开发者使用 eclipse 建立,测试和部署 j2ee 应用。支持 jsp 编 写,包括语法着色和语法检查:。 (5) myeclipse:j2ee 开发插件,支持 jsp,ejb,数据库操作。 (6) tomcatplugin:支持 tomcat 插件。 山东凯文科技职业学院 10 第五章 详细设计 5.1 程序设计思路 5.1.1设计思想 1.本程序要实现五子棋的游戏功能,必须先有一个棋盘,所以,通过继承 jpanel,然后在 jpanel 上画出一个 17*17 的棋盘,另外还有三个按钮:重新开局、请黑方下子和请白方下子, 提醒用户进行相应的操作。当然,jpanel 必须放在 jframe 中,所以,又通过继承 jframe 得到一 个实例。 2.对于下棋的操作,通过对 jpanel 增加鼠标事件监听器 mouselistener,每次当用户点击鼠 标时,先取得点击的坐标值,然后换算成对应棋盘上(即棋盘数组)的位置(数组的下标) 。 3.判断此处是否已经有棋子,如果有则提示玩家重新下子,否则通过 java 里的画图函数在此 处画上棋子,重新刷新输出棋盘。 4.判断该颜色棋子的上下左右是否满足连续五个,是的话提醒相应玩家获胜,不是的话,更 换玩家下棋。 5.对于玩家的更换是程序自动的,每次用户点击鼠标后,若本局还未结束则会变换玩家,从 而画出对应黑方白方的棋子,直到有一方获胜程序技术。 5.1.2程序设计分析 1. 本款游戏有“游戏”和“选项”两个选项,其中“游戏”包括开局、重新开始、结束游戏 几个选项;选项里边则包括对弈模式、悔棋、更改背景颜色几个选项,玩家可以根据具体需要 选择使用。 2. 绘制棋盘,17 条横线,17 条竖线,在直线交点处下棋子(实心黑白圆形) 。 3. 首先程序会判断对弈模式是人机对弈还是人人对弈模式,若是人机对弈则是玩家先下,玩 家是黑方,电脑是白方。若是人人对弈,则是黑方先下,黑白交替下子。 4. 棋盘处于鼠标监听状态,当鼠标在棋盘上有点击操作的时候,程序会获得鼠标点击的坐标 山东凯文科技职业学院 11 然后换算成对应的棋盘的位置,再判断此处是否有棋子,假如没有,那么在此处画出对应颜色 的实心棋子,假如已经有棋子了,则提示玩家此处已经有棋子请重新下棋。 5. 当选择的是人机对弈模式的时候,轮到电脑下子时,电脑会通过算法计算每个没有棋子的 位置的重要性来选择最重要的位置下子。 6. 人机对弈算法简介: 本款游戏最核心的地方就是算法,因为这是整个程序最难的模块。算法的中心思想是:利用 分数代表每个位置的重要程度,越重要的位置的分数值会越高,当电脑下棋时会先将电脑和玩 家棋型的分数分别计算一遍,然后选择二者中分数最高的点下子。如果玩家的分数高,那么代 表电脑应该防守,如果电脑的分数高,那么代表电脑应该进攻。 具体的分数值赋值如下: 分数电脑玩家 活二6050 半活二4035 死二1010 半死二1010 活三950700 半活三900650 死三100100 半死三100100 活四60003500 半活四50003000 死四4000800 半死四3600750 活五2000015000 半活五100003300 死五2000015000 半死五100003300 解释一下其中的活,半活,死,半死: 活:代表几个子是相连的,中间没有空格,两端都至少有一个空格。 半活:代表几个子不是相连的,几个子中间有一个空格,两端都至少有一个空格。 山东凯文科技职业学院 12 死:代表几个子是相连的,中间没有空格,但有一端紧挨着对方的棋子或有一端正好在棋盘的 边界。 半死:代表几个子不是相连的,几个子中间有一个空格,而且一端紧挨着对方的棋子或有一端 正好在棋盘的边界。 每个位置的分数的计算方式是各个方向的分数相加,最后找出电脑棋型和玩家棋型的分数 的最高的位置为电脑的下棋点下棋。 7. 当任何一方有五个棋子沿着横,竖,斜连在一起时,系统自动判断赢棋,并显示黑方或白 方胜利。棋局结束后,任何一方均不能继续操作。 8.程序流程如下图 4-1: 图 5-1 程序流程图 5.2 程序设计 这个游戏程序包含两个类: drawpanel:棋盘类,用于绘画棋盘及棋子。 playervspc:主程序类,窗口的创建和整个逻辑程序代码。 类 drawpanel 代码: package resource; import java.awt.basicstroke; import java.awt.color; import java.awt.graphics; import java.awt.graphics2d; import java.awt.geom.ellipse2d; 山东凯文科技职业学院 13 import java.awt.geom.line2d; import javax.swing.jpanel; public class drawpanel extends jpanel private int a; private int n,m; public drawpanel(int k,int n1,int m1) a=k; n=n1; m=m1; public void paintcomponent(graphics g) super.paintcomponent(g); graphics2d g2=(graphics2d)g; graphics2d g3=(graphics2d)g; double x=20; double y=20; double width=480; double height=480; double jiange=30; / 画棋盘网格 for(int i=0;i0 g2.setstroke(new basicstroke(1.5f); g2.draw(new line2d.double(30*m-16,30*n-16,30*m-4,30*n-4); g2.draw(new line2d.double(30*m-16,30*n-4,30*m-4,30*n-16); 山东凯文科技职业学院 15 类 playervspc 代码: package resource; import java.awt.color; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.mouseadapter; import java.awt.event.mouseevent; import java.awt.toolkit; import java.awt.dimension; import javax.swing.jcolorchooser; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jmenu; import javax.swing.jmenubar; import javax.swing.jmenuitem; import javax.swing.jpanel; public class playervspc private jframe frame;/整个窗口 private jmenubar bar;/菜单栏 private jmenuitem jit;/菜单项数组 private jmenuitem mode;/模式项数组 private jmenu jm;/菜单 public boolean isblack; /是否为黑方下子状态 private int qipan;/棋盘数组 private int row;/当前行 private int col;/当前列 private int prow; private int pcol; private color c=new color(145,125,62);/棋盘背景颜色 private drawpanel panel;/棋盘面板 private jlabel la
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科学玄学考试题及答案
- 康复就业考试题及答案
- 保温材料熔制工工艺创新考核试卷及答案
- 军车科目考试题及答案
- 染色师理论知识考核试卷及答案
- 金属铬还原工适应性考核试卷及答案
- 半导体辅料制备工招聘考核试卷及答案
- 课件文案特点
- 铝粒工技术考核试卷及答案
- 采油地质工岗位操作规程考核试卷及答案
- 创业板指数历史数据(2010年06月01日-2025年3月31日)399006
- 高职高考语文复习语言知识与应用第四章正确使用词语(包括熟语)课件
- 考研英语一阅读理解真题大全
- 销售经理竞聘述职报告
- 普通发热患者接诊流程
- 农村生活污水处理技术指南
- 2024万科物业客户满意度调查合同范本3篇
- 大健康产业的未来发展方向
- 2025学士学位英语考试模拟题库
- 人教PEP版五年级上册英语Unit 1 Whats he like大单元整体教学设计
- GB/T 44823-2024绿色矿山评价通则
评论
0/150
提交评论