Java的五子棋游戏的设计方案77 .docx

上传人:C****o 文档编号:13050213 上传时间:2022-04-27 格式:DOCX 页数:24 大小:389.46KB
返回 下载 相关 举报
Java的五子棋游戏的设计方案77 .docx_第1页
第1页 / 共24页
Java的五子棋游戏的设计方案77 .docx_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《Java的五子棋游戏的设计方案77 .docx》由会员分享,可在线阅读,更多相关《Java的五子棋游戏的设计方案77 .docx(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品名师归纳总结基于 Java 的五子棋玩耍的设计摘要: 五子棋作为一个棋类竞技运动,在民间特殊流行,为了熟识五子棋规章及技巧,以及争论简洁的人工智能,准备用Java 开发五子棋玩耍。主要完成了人机对战和玩家之间联网对战 2 个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面爱惜和收集用户输入的信息,及错误处理。服务器爱惜在线用户的基本信息和任意两个对战用户的棋盘信息,动态爱惜用户列表。在人机对弈中通过深度搜寻和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要 素,以及提出如干提高精准性的方法,

2、以及对它们搜寻的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的争论有助于懂得程序结构,增强规律思维才能,在其他人工智能方面也有很大的参考作用。关键词: 深度搜寻估值电脑AI 五子棋算法目录一、引言(一) 课题背景 .1.0(二) 本课题争论的意义 .0(三) 本课题的争论方法 .1二、课题相关基础 (一) 五子棋.1.11、五子棋简介.22、棋盘和棋子 .33、规章及说明 .44、五子棋常用术语 .35、五子棋攻防 .5 二) Java 1、Java 简介.6.62、Java程序的开发过程.73、Java 开发环境 .8可编辑资料 - - - 欢迎下

3、载精品名师归纳总结三、课题详细争论方法 .8(一) 程序结构说明 .9(二) 棋盘及棋子的类 .91、棋盘.9 2、棋子.113、胜败判定条件 .114、网络对战 .135、电脑 AI .16结论.20参 考文 献 .20可编辑资料 - - - 欢迎下载精品名师归纳总结一、引言(一)课题背景五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英译为 Renju,英文称之为 Gobang或 FIRFive in a Row的缩写 ,亦有连五子、五子连、串珠、五目、五目碰、五格等多种称谓。五子棋起源于古代中国,进展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在

4、“ 尧造围棋 ” 之前,民间就已有五子棋玩耍。一说源于围棋,是围棋进展的一个分支。在中国的文化里,倍受人们的青睐。本世纪初五 子棋传入欧洲并快速风靡全欧。通过一系列的变化,使五子棋这一简洁的玩耍复杂 化、规范化,而最终成为今日的职业连珠五子棋,同时也成为一种国际竞赛棋。 Java 语言是当今最为流行的程序设计语言之一作为一门特殊优秀和极为健壮的编程语言,它同时具有的面对对象,与平台无关,分布式应用,安全,稳固和多线程 等优良的特点,使用 Java 语言,不仅可以开发出功能强大的大型应用程序,而且Java 语言本身突出的跨平台的特性也使得它特殊适合于Internet上的应用开发, 可以这样说,

5、Java 的显现使得所开发的应用程序“一次编写,处处可用”的实现成为了可能。(二)本课题争论的意义近来随着运算机的快速进展,各种各样的电脑玩耍层出不穷,使得我们能有更多的消遣工程,而棋类玩耍能起到锤炼人的思维和修身养性的作用,而且棋类玩耍水平颇高,大有与人脑分庭抗礼之势。其中战赛过国际象棋世界冠军- 卡斯帕罗夫的“深蓝”便是最具说服力的代表。其它像围棋的“手淡”、象棋的“将族”等也以其优秀的人工智能深受棋迷宠爱。越来越多的具有智能的机器进入了人类的生活,人工智能的重要性如今显而易见。自己对人工智能比较感爱好,而五子棋玩耍程序的开发实现这个课题,正好供应应我这样一个争论的机会,通过对人工智能中博

6、弈方面的争论(人机对弈),让我在简洁的人机对弈全局设计,以及详细到相关算法上有了深化的明白。人工智能属于运算机科学的领域,它以运算机技术为基 础,近几十年来,它的理论和技术已经日益成熟,应用领域也正在不断扩大,显示出强大的生命力。人工智能大致可以分成几个学科,它们每一个都是特殊的,但是它们常常又相互结合起来完成设计任务,这时,这些学科之间的差别就变的很模可编辑资料 - - - 欢迎下载精品名师归纳总结糊。人工智能在专家系统,自然语言懂得,自动定理证明,自动程序设计,人工智能在机器人学、模式识别、物景分析、数据库的智能检索、机器下棋(实质上是博弈论问题)和家用电器智能化等领域都有广泛的应用。而这

7、个课题就是和人工智能中的博弈论领域紧密相关的。这个题目核心是人工智能和 Socekt 编程,。并且人工智能中的博弈部分,由于接受了大量的搜寻算法,其中许多被利用到各方面。它的概念、方法和技术,正在各行各业广泛渗透。智能已经成为当今各种新产品、新装备的进展方向。所以, 趁着这个机会,对人工智能中比较简洁实现的人机博弈进行明白争论学习,也是很有用且很有必要的。(三)本课题的争论方法在进行玩耍设计之前,第一准备的第一个问题就是,使用什么开发环境来编写环境. 自己虽然比较熟识 Java 语言,但是实际开发工程体会很少,所以准备用Jcreator, 其拥有高亮语法编辑、使用向导以及完全定制的用户界面,最

8、主要的是能够自动查找文件于 Main 方法或 Html 文件以支持 Java 小应用程序,然后启动相应的工具。其次确定整个程序的结构框架。由于 Applet 运行速度较慢,假如在加上算法搜寻时间,明显不符合程序的设计要求,准备用 Java 应用程序开发 . 整个程序的功能实现流程是这样的:网络对战涉及算法较少,所以先实现网络部分,实现基本的棋盘和棋子的类,添加判定胜败条件,这部是基础,也是很重要的,电脑 AI 也在这些基础上添加上来的。这个题目的 2 个功能包括 2 个重要算法,电脑 AI 和胜败条件,胜败条件运算量不大,有固定的模式。难点是人工智能,可以这样说,人工智能的好坏准备了这个题目的

9、完成深度。所以,大部份时间花在 AI 算法的争论和改进上,对于算法我把握的不多,争论了一些国内的五子棋算法,参考了一些玩耍设运算法,详细比较各种算法的优缺点,而且参考了现代五子棋竞赛的各种规章和技巧,尽量联系实际,努力提高电脑 AI。二、课题相关基础(一)五子棋1、五子棋简介五子棋是起源于中国古代的黑白棋,是一种两人对弈的纯策略型棋类玩耍。简洁上可编辑资料 - - - 欢迎下载精品名师归纳总结手,老少皆宜,而且趣味横生,引人入胜。现代五子棋又称之为“连珠”,英文称 之为“ Gobang”或“ FIR” FiveinaRow 的缩写 ,亦有“五子连”、“串珠”、“五目碰”、等名称。许多国家的人对

10、五子棋都有不同的爱称,例如,韩 国人把五子棋称为“情侣棋”,示意情人之间下五子棋有利于增加情感的沟通。欧 洲人称其为“绅士棋”,代表下五子棋的君子风度胜似绅士。日本人就称其为“中 老年棋”,说明五子棋适合中老年人的生理特点和思维方式。美国人宠爱将五子棋 称为“商业棋”,也就是说,商人谈生意时可边下棋边谈生意,棋下完了生意也谈 成了。传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为1919,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮番下一子,先将横、竖或斜线的5 个或5 个以上同色棋子连成不间断的一排者为胜。五子棋不仅能增强思维才能,提高智力,而且有助于修身养性。它既有简洁易学的特性,

11、人们都喜闻乐见,又有深奥的技巧和高水平的国际性竞赛。五子棋既有现代休闲的明显特点“短、平、快”,又有古典哲学的高深学问“阴阳易理”2、棋盘和棋子现代五子棋棋盘,经过国际棋联的多次修改,最终定为15 X 15 路,即棋盘由横竖各 15 条平行线交叉组成,共有225 个交叉点。棋盘上共有五个星位,中间的星位称为天元,四周四点为小星,与围棋盘略有不同。见图1图 1 棋盘五子棋的棋子和围棋相同,分黑白2 种颜色,通常为散圆形,有一面凸起或二面凸可编辑资料 - - - 欢迎下载精品名师归纳总结起等形状,一副棋子总数为 225 枚,其中黑子 113 枚,白子 112 枚。关于计时,正规竞赛按不同级别设置了

12、不同的时间限制,一般的玩家都没有这个限制。3、规章及说明(1) )黑棋先行,白棋随后。从天元开头相互次序落子。(2) )最先在棋盘的横向、竖向、斜向形成连续的相同色五个棋子的一方为胜利。(3) )黑棋禁手判负、白棋无禁手。黑棋禁手包括“三、三”。“四、四”。“长连”。黑方只能用“四、三”去取胜。(4) )如分不出胜败,就定位平局。(5) )对局中拔子、中途退场均判为负(6) )五连与禁手同时形成,先五为胜。(7) )黑方禁手形成时,白方应马上指出。如白方未发觉或发觉后不马上指正,反而连续落子,就不能判黑方负。五子棋是由两个人在一盘棋上进行对抗的竞技运动。在对局开头时,先由执黑棋的一方将一枚棋子

13、的落在“天元”上,然后由执白棋的一方在黑棋四周的交叉点上落 子。如此轮番落子直到某一方第一在棋盘的直线横线或斜线上形成连续的五子或五子以上,就该方就算获胜。但是五子棋的特点是先行的一方优势很大。因此,在 职业竞赛种对黑方做了种种限制,以利公平竞争。黑白双方的胜败结果必需依据职 业五子棋的规章要求来准备。4、五子棋常用术语(1) )二:二是五子棋的一切攻击的基础。又分为活二和死二。活二:即再下一子可形成活三的二。死二:即再下一子可形成死三的二。(2) )三:三是五子棋最常见的攻击手段。三分为活三、死三、眠三。活三:为再下一子即可变成活四的三(活四介绍见后)。或三分为连三、跳三。见图4。我们通常所

14、说的“三”。就是指活三而言。假如是死三,将特殊指出。死三:即对方有棋子在同一条线相邻交叉点防守的三。死三分为三种。眠三:是死三的一种特性,它看上去相邻点没有对方棋子防守,很像活三,但由于受空间限制,不论如何进展都不行能称为活四,故称为“眠三“。见图。可编辑资料 - - - 欢迎下载精品名师归纳总结反三:反三不是指一种“三”的形状,而是指再阻挡对方攻击的同时使自己称为一道活三的反攻,称为反三。(3) )四:四的形状有三种,它分为:活四,冲四、跳冲四。活四:在同一条线上相连的四个同色棋子成为“连五”。冲四:在同一条线上相连的相同颜色的四个棋子,它与活四不同的是,其中的一端有对方的棋子进行阻挡,它只

15、有再在另一端下一手棋才可形成“连五”。跳冲四:它的形状在“四”中是比较特殊的,一般分为两种,它的特点是同一条线上的同色的四个棋子,有一个或两个棋子与另外三个或两个棋子之间有一个交叉点的间隔,它的下一手棋只有下在间隔的交叉点上才能形成“连五”,因此,对方的棋子防守时,也只能阻挡在间的交叉点上。5、五子棋攻防五子棋是一项对抗性很强的运动,在开局进入五手两打后,就开头进入了白刃战, 相互争夺先手,任何一方都不能掉以轻心,要尽可能少犯错误,甚至不犯错误,否就将会导致速败。众所周知,连珠五子,连五为胜。有四才能有五,有三才有四,以此类推。所以, 在五子棋的对局众攻击和防守都是从“二”和“三”的争夺开头的

16、。“好的开头是胜利的一半”,这条格言用在五子棋里再合适不过了。五子棋的点的选择特殊关键。五子棋实际上是通过选择正确的落点,加上正确的落子次序,一步一步的占据各个要点,最终获得胜利。对局的早期,选点的着眼点主要是使本方的棋子保持联系,为以后制造尽可能多的 成三、成四的机会,同时尽量限制对方成为好形。由于在五子棋对弈过程中,通过 行棋落点来把握对方的落点是可能的,比如活三冲四的应点是可以预知的,完全可编辑资料 - - - 欢迎下载精品名师归纳总结有可能通过不断走出这样的先手来把握对方的着点直至胜利。所以,在对局的后 期,就要在精确运算的前提下,尽早发动攻势,以取得棋局的把握权,否就一旦贻误战机,被

17、对方抢先发动攻势,就会成为被把握的一方。当有多个攻击点可供选择时,要选择后续手段多,又不会被对方反先的着点。假如是黑方,仍特殊要留意攻击终被对方反击时显现的各种禁手点的可能性。攻击分为单攻棋和双攻棋,单攻棋指单线即单行或单向的攻棋子,包括三子攻棋(活三、填四)和四子攻棋(冲四、填五)。而双攻棋指双向或双行的攻棋。包括三、三攻棋(双活三、双填四、填四活三)。四、三攻棋(冲四活三、冲四填四、填五活三、填五填四)。四四攻棋(双冲四、双填五、填五冲四)。五子棋的取胜思路是由一个子开头,目标是运用各种方法在棋盘上进展出五连乃至长连而取胜。在这个进展过程中必定要经过由一子到两子两子到三子 三子到四子的过程

18、。因此说,把各种形状和各个方面上的二三 四等子力结构烂熟于胸,做到举一反三,是学习五子棋的基本功,更是能灵敏运用五种取胜技巧的基础。(二) Java 1、Java 简介Java 是美国 Sun 公司开发的语言,它使用说明器执行代码,因此,无需对源代码进行任 何更换即可在不同 运算 机上运行, 是 真正 跨平台 的编程开发语言。Java 有以下主要特点:(1) )简洁( Simple )制定 Java 的原就之一,是要建立一种结构简洁而且使用简洁的系统,可以让用户不必接受很深的训练就可以开头设计程序,所以Java 的语法尽可能与在当前许多程序设计师都接受的C 及 C语言相像。并且, Java 删

19、除了 C 及 C+许多极少使用、不易懂得或常被混淆的功能,多多重继承、指针等。(2) )面对对象 Object-Oriented面对对象是近年来信息界广为使用的概念和技术。它有许多良好的特性。对象的封 装性可以使对象的接口定义明确。继承性可以增加软件的可重用性,有助于分类及 模版设计等。实现面对对象的概念及其各种良好的特性是Java 的设计理念之一。(3) )分布式( Distributed)运算机网络的进展使得信息应用朝着分布式的环境进展,所以现代的信息开发语言 及环境要有协作分布式的特性及功能。Java 具有一个网络功能的程序库,其中包可编辑资料 - - - 欢迎下载精品名师归纳总结含与如

20、 HTTP和 FTP等 TCP/IP 网络通信协议整合的才能。(4) )强壮性 Robust由 Java 所编写的程序要能在各种情形下运行,而且必需具有高的稳固性。Java 在制定时即加入了能防止储备器被覆写和数据损坏的相关处理机制。(5) )安全性 SecureJava 是被设计用于网络及分布式环境中的,所以安全性是一个很重要的考虑。Java 拥有数个从简洁到复杂的安全爱惜措施,能有效的防止病毒的侵入和破坏行为的发生。(6) )结构中立性 Architecture Neutral在网络上存在许多不同类型的运算机,从中心处理器到操作系统的机构均有很高的差异性。因此要使应用程序在每一种机器上均能

21、运行是相当困难的。针对这个目的, Java 的编译器可以产生一种结构中立的目标码文件格式字节码(Byte Code)。这种字节码可以在许多种不同的运算机上运行。(7) )多线程 Multithreaded多线程是开发复杂和功能强大的程序所必需的手段之一,Java 同样支持这个重要功能。2、Java 程序的开发过程(1) 源文件:使用一个文本编辑器,如Edit或记事原先编写源文件。不行使用Word 编辑器,由于它含有不行见字符。将编好的源文件储存起来,源文件的扩展名必需是 Java。(2) 编译器:源文件要经过编译器(Javac.exe )的编译生成可扩展名为 .Class的字节码文件。字节码文

22、件是由与平台无关的二进制码组成的,执行时由说明器说明成本的机器码。(3) 运行 Java 程序: Java 程序分为两大类 Java 应用程序( Application)和Java 小应用程序( Applet )。Java 应用程序必需通过 Java 说明器( java.exe )来说明执行其字节码文件。 Java 小应用程序可通过支持 Java 标准的浏览器来说明执行。3、Java 开发环境使用 Jcreator开发环境必需安装 JDK,我安装的版本是 1.5.0 ,在环境变量里新建名为 Path 的变量名,变量值为软件JAVAbin (依据 JDK的安装目录而定)。可编辑资料 - - -

23、欢迎下载精品名师归纳总结在命令提示窗口输入Java -version假如能正确显示版本号,就表示环境配置胜利。如以下图。Jcreator的安装很简洁,这里不在详细表达,把路径配置好就可以了。如图图 12 Jcreator IDE三、课题详细争论方法(一)程序结构说明既然是 Java Application,要实现网络对战,故接受 C/S 模式编写,程序包含7 个独立的类文件 ChessWZQ.java、Group.java 、Message.java 、Player.java、ServerOneClient.java、Server.java、BoardPanel.java。其中 BoardPa

24、nel.java 主要负责棋盘的初始化,鼠标大事的处理,以及判定胜败条件。ChessWZQ.java 定义了面板上的其他元素,包括玩家列表,标题栏等。也包括了大事处理和人工智可编辑资料 - - - 欢迎下载精品名师归纳总结能。ServerOneClient.java就负责网络对战的处理。其他的类都是又这3 个主类延长出去的。在详细实现的时候再介绍其作用。(二)棋盘及棋子的类1、棋盘棋盘如图 1,详细代码如下:String line = a b c d e f g h i j k l m n o。char rowNum1 = 1,2,3,4,5,6,7,8,9。char rowNum2=1,0,

25、1,1,1,2,1,3,1,4,1,5。这部分为棋盘的边界标识符,是必需要有的。用字符数组储备,最终确定位置放上去即可。棋盘的绘制:private static int xpprivate static int yp。/棋子 X棋子坐标Y 坐标public void paintGraphics gc super.paintgc。/this.setBackgroundColor.gray。/this.invalidate。gc.setColorColor.blue。/gc.setColornew Color255, 255, 240。/画横向标识符gc.drawStringline,25,15。

26、/画竖向标识符forint i=0。i9 。i+ gc.drawCharsrowNum1,i,1,10,35+i*30。forint i=9,j=0。i15 。i+,j+=2 gc.drawCharsrowNum2,j,2,10,35+i*30。/画棋盘for int i = 0。 i 15。 i+ 可编辑资料 - - - 欢迎下载精品名师归纳总结gc.drawLine30, 30 + i * 30, 450, 30 + i * 30。 /行gc.drawLine30 + i * 30, 30, 30 + i * 30, 450。 /列gc.drawLine25, 25, 455, 25。gc

27、.drawLine25, 25, 25, 455。gc.drawLine25, 455, 455, 455。gc.drawLine455, 25, 455, 455。/面板初始化forint i=0。i15 。i+for int j = 0。 j =0&i5 。i+ if clr=boardx-iycount+。elsebreak。/ System.out.println +x+ , +y+ +count = +count。ifcount=5return true。fori=1。x+i15&i15 得出前者比后者重要,下子时电脑便会自动选择“冲四”的点,这里仍要说明一点的事,仍要考虑四个方向。

28、由于有可能有复合棋型,可编辑资料 - - - 欢迎下载精品名师归纳总结比如“四三” . 从第一步起,不管是哪一方下子,电脑都有以这点为中心搜寻9X9 的矩阵内的全部空白点上棋子的重要性,一颗棋子对棋型影响的大小有9X9。重要看来虽然说攻击和防守的重要性一样的,但是我认为防守更重要。在估值的时候,必需要考虑棋子的合法落子情形。不同的棋类博弈,其估值必定有极大的差别,各种由于规章而造成的不同因素影响估值的设计。不同的棋类玩耍各有所谓的规章,规章中就有博弈双方都可以走哪些着法。某些博弈玩耍很简洁就找到合理着法,我所实现的五子棋,它就具有很简洁的落子规章,即棋盘上全部的空位都可以落子,它们都是合理的着

29、法。但是有些棋类玩耍,比如在中国象棋和国际象棋中,情形就有些复杂了,每个棋子都有它特定的着法,电脑下子要考虑自己和玩家的棋型,优先防守,假如没有要防的棋型,就搜寻自己的棋型下子。设置重要性 , 即估值模块,下面只给出横向的代码private void setWeightint x,int y,int tcolorint i=RectX1,j=RectY1,value=0,k=0,n=0,flag=0。/ -方向fori=RectX1,j=y。i=RectX1 & k5 。k+ ifBoardPanel.boardi-kj=tcolorvalue+。continue。ifBoardPanel.b

30、oardi-kj=0/black space flag+。break。可编辑资料 - - - 欢迎下载精品名师归纳总结fork=1。i+kRectX2 & k5 。k+ ifBoardPanel.boardi+kj=tcolorvalue+。ifBoardPanel.boardi+kj=0 flag+。break。n=weightvalue,flag。ifweightBoardijn weightBoardij=n。设定相应空位的重要值以后,选取最大的值下子,代码如下:private void getBiggestint arr,int x,int y int temp=new int2。int swt=arr00,tmp=0。forint i=0。i15 。i+ forint j=0。jswttemp0=i。temp1=j 。swt=arrij。x=temp0。y=temp1。arrxy=0。可编辑资料 - - - 欢迎下载精品名师归纳总结对于特定的棋型,都有一个不同的估值,以此来区分不同棋型的优劣,也以此来准备最终的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁