Java五子棋毕业设计论文.docx
《Java五子棋毕业设计论文.docx》由会员分享,可在线阅读,更多相关《Java五子棋毕业设计论文.docx(38页珍藏版)》请在冰豆网上搜索。
Java五子棋毕业设计论文
摘要
人工智能是一门正在迅速发展的新兴的,综合性很强的交叉科学。
它与生物工程、空间技术一起被并列为二十一世界三大尖端技术。
它的中心任务是研究如何使计算机去做那些过去只能靠人的智力才能做的工作。
目前各发达国家都把人工智能作为重点项目,列入本国的高科技发展计划当中,投入巨大的人力和物力。
计算机人机对弈也是其中之一。
作为人智能研究的一个重要分支,计算机博弈是检验人工水平的一个重要方面。
它的研究为人工智能带来了很多重要的方法和理论,产生了广泛的社会影响和学术影响。
五子棋人机对弈是计算机博弈中的一种。
研究其计算机算法,可以让我们看到人工智能的稚形,也有助于我们人脑的开发。
五子棋是我国发明的,研究它可以让更多的外国人了解五子棋,这有助于我国优秀文化的推广。
关键词:
人工智能,计算人机对弈,五子棋,算法
Abstract
Artificialintelligenceisarapidlydevelopingnew,integratedastrongFrontierScience.Itiswithbio-engineering,spacetechnologyhasbeenlistedas21intheworldalongwiththethreecutting-edgetechnology.Itscentraltaskistostudyhowtomakethecomputerdothatinthepasttorelyonhumanintelligencetodo.AIiscurrentlyregardedasthefocusofthedevelopedcountriesincludedinthiscar'shigh-techdevelopmentprojectsinvestedtremendoushumanandmaterialresources.
Man-machinechesscomputerisoneofthem.Asahumanstudyofanimportantbranchofintelligence,thecomputergametotestthelevelofanimportantaspectofthemanual.Itsresearchinartificialintelligencehasresultedinmanyimportantmethodsandtheoriestoproduceawiderangeofsocialimpactandacademicimpact.
Man-machinechessgameRenjuinoneofthecomputer.Tostudythecomputeralgorithm,wecanseethebeginningofartificialintelligenceshadow,butalsohelpustohumanbraindevelopment.BackgammoninventedinChina,andtheresearchitcanallowmoreforeignerstounderstandandhelptopromoteChina'straditionalculture.
Keywords:
ArtificialIntelligence,Man-machineCchessComputer,
Man-machineChess,Algorithm
目录..........................................................................................................................Ⅲ
第一章绪论...............................................................................................................1
第二章需求分析.......................................................................................................2
2.1业务需求................................................................................................2
2.2性能需求................................................................................................2
2.3系统平台需求........................................................................................2
第三章五子棋相关基础...........................................................................................4
3.1五子棋解释............................................................................................4
3.2五子棋的基本规则................................................................................4
3.3五子棋的常用术语................................................................................5
第四章开发工具、环境及其技术...........................................................................7
4.1Java简介.................................................................................................7
4.2Java编程环境.........................................................................................9
第五章程序设计思路与实现.................................................................................10
5.1程序设计思路......................................................................................10
5.2程序设计..............................................................................................13
结论...........................................................................................................................33
参考文献....................................................................................................................
致谢............................................................................................................................
附录............................................................................................................................
第一章:
绪论
1.1前言
电脑已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。
Windows系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。
然而,虽然现在世界上已经充满了花样繁多的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。
Java语言作为一种面向对象的编程语言,具有分布式,可移植,高性能,多线程等特点。
通过系统的学习,人们就可以使用它开发出功能齐全,满足特殊需求的应用程序。
Java语言易学易用,对学习者掌握技能,开拓思维都有很大的帮助。
我作为一名学生,在系统的学习了Java语言之后,经常用它搞一些小程序。
这次毕业设计,正好将学过的Java语言中的各种技术综合起来,用Jbuilder2006开发工具编写一个小游戏,既对自己学过的技能进行一次检验,也能系统地将学过的知识复习巩固。
随着计算机技术的不断发展,网络技术的普及范围越来越广,网络能够提供的服务多样、便捷,已经成为人们生产生活中不可缺少的重要组成部分。
如今网络休闲游戏发展迅速,它凭借健康、方便、互动性强、益智等诸多优点,成为大部分现代人休闲娱乐的首选。
网络五子棋游戏是使用Java语言开发的一款游戏。
它使用SOCKET建立连接,多线程处理数据,以及可嵌入网络浏览器的ALET作为客户端,这些特点使这款游戏无论是服务器还是客户端的实现都相对容易。
通过对该软件的编写,还可以巩固我们对以上各种知识的掌握和理解。
第二章需求分析
为了开发出真正满足用户需求量的软件产品,首先必须知道用户的需求。
软件需求中包括了多个方面来说明用户需求。
在这一章中,主要从以下几方面来说明系统的需求。
2.1业务需求
2.1.1此系统使用范围要求
此系统为智力游戏,适合于各类游戏爱好者。
由于其经典性及其游戏的简单性,各类人士都可以也都爱玩。
人们在与电脑对战享受娱乐的同时,也会体会到自己的智力也会有所提升。
2.1.2功能要求
该款游戏主要由一下几个模块组成:
(1)人机对弈模式:
选择该模式可以实现人与电脑之间的对弈,电脑会智能的选择该在哪处下子,并会在每次下棋结束后判断是否有哪方已经获胜,如果获胜则结束本局游戏,并提示玩家游戏结束。
(2)人人对弈模式:
选择该模式可以实现人与人之间的对弈,系统会提示哪方先下,然后玩家之间交替的下棋,同样系统会在下完每次棋后判断是否有哪方已经获胜,如果获胜则结束本局游戏,并提示玩家游戏结束。
(3)悔棋功能:
这个功能也是根据游戏的实际需求而存在的,在现实生活中难免有失误下错了棋,那么就需要悔棋。
此功能提供了悔棋功能,使得下棋的灵活性有所提高。
玩家若想悔棋,则只需选择悔棋按钮便可以重新下过刚才的棋。
(4)更换棋盘背景:
次功能可以根据玩家的爱好任意更换棋盘的背景颜色,由于每个人对颜色的喜好不一样,因此这个功能也是非常必需的。
也行更换一种玩家所喜欢的颜色,玩家能发挥得更好。
2.2性能需求
该款五子棋游戏功能虽然简单,但最主要的还是实现了人人对弈模式和人机对弈两种模式,所以从这个角度来说,该款游戏需要能很好的在两种模式间良好的转换。
虽然系统不大,但要在满足玩家的基本要求的情况下,电脑有一定的智能,能给于新手一定的帮助。
2.3系统平台需求
编程语言:
JAVA
操作系统:
Windowsxp系列
开发工具:
Myeclipse
第三章五子棋的相关基础
3.1五子棋解释
引用《辞海》中所言,五子棋是“棋类游戏,棋具与围棋相同,两人对局,轮流下子,先将五子连成一行者为胜。
”。
五子棋的名称:
日文亦有“连五子、五子连、串珠、五目、五目碰、五格、五石、五法、五联、京棋”等多种称谓,英文则称之为FIR(FiveInARow的缩写)、Gomoku(日语“五目”的罗马拼音)、Gobang、connect5、mo-rphion。
捷克语piskvorky,韩语omok、韩国人还称之为情侣棋。
3.2五子棋基本规则
1.五子棋行棋时,黑棋先下第一子,由天元开始,后白棋在黑棋周围的交叉点的落子。
接着黑方再以天元中心的25个交叉点的范围内落盘面的第三子,之后黑白双方相互顺序子。
2.最先在棋盘线交点横向,纵向,斜向形成已方的五个棋子连续的一方为胜。
3.出现禁手对方指出后将判负,其中包括两个或两个以上的活三,活四,长连均称之为禁手。
4.禁手只对黑棋有效,白棋无禁手。
5.黑方禁手形成时,白方需立即指出,黑方将被判负。
若白方未发现黑方禁手存在而继续应子,其后指出黑方禁手不能判黑方负。
6.黑方连五与禁手同时形成,因黑方已连成五即黑方已获胜,故禁手规则失效。
7.在对局中,在盘上落下的子又拿起来,此动作称为拔子,若拔子将被判为负。
8.在对局中棋子掉落在棋盘上将被判负。
若推子或蹭子,以盘面第一落点为准。
用手将棋子推正不算违犯规则。
9.在对局中,一方自行中止比赛如:
中途退场,将被判负。
10.在对局中对方宣布认输,本局获胜。
11.超过比赛规定所用时间限制,将被判为负:
正式比赛期间,迟到时间超过比赛容许时间将被判负。
12.如下至最终一子仍不分胜负则定为平局。
13.中盘期间双方同意和局提议,判定为平局。
3.3五子棋常用术语
1.着:
也称“步”。
对局中把一个棋子按照规则放到某一交叉点,称之为一着棋。
一着是否完成有两种规则:
(1)在执行落子无悔规则是,以行棋者的手离开棋子为一着已完成。
(2)在执行限时规则时,以行棋者按下棋钟作为一着已完成。
2.PASS:
五子棋中引入的英文名称,即应该行棋的一方主动放弃此次行棋的机会,由对方继续行棋。
3.先手:
对方必须应答的着法,如对方形成活三必须阻止其形成活四。
4.绝对先手:
相对先手而言,即形成同色连四或嵌五,对方必须应着,就是绝对先手。
绝对先手又叫“冲”。
5.VCF:
(VictoryofContinusFour的缩写)意思是利用连续冲四取胜之意。
利用连续不断的冲四或嵌五的绝对先手,制止形成连五获得胜利的一种方法。
在对局接近尾声或排局解题中一种常见的取胜技巧。
6.追下取胜:
是指白棋利用黑棋禁手取胜的战术。
白1冲四,迫使黑2形成“四、四”禁手(即冲四,活四禁手),这种取胜方法叫做追下取胜。
7.自由取胜:
追下取胜以外的取胜方法,即未利用黑棋禁手战术而取胜。
8.一子双杀:
是指对局中一方落子后出现两个叫杀点即两个获胜点,而使对方无法防守的情形。
一般是有两个冲四活三点,白棋的双活三,双四均可称为一子双杀。
9.阳线:
棋盘上可见的横线与直线的总称。
10.阴线:
也称“斜线”。
是棋盘上不可见的斜行线。
11.“四、三”:
指同时具备两个先手,其中一个四,另一个是活三。
12.“活三”、“嵌五”、“冲四”:
参见五子棋重要棋形讲座。
13.禁手:
对局中禁止使用的战术或被判为负的行棋手段。
14.开局:
也称“布局”。
布局阶段大体为七至十几着之内。
种类繁多,职业连珠五子棋有二十四种开局。
15.局面:
亦称“局势”。
为对局中某一段时间内双方子力的配置情况。
16.优势:
是指足以取胜的优势局面,其对方即为败势。
17.妙着:
对局中走出的一步精妙的着法。
既合乎逻辑又出人意料,有使局面顿时改观的效果,对局势的发展及对局的质量都有重大影响。
18.好着:
也称“佳着”。
对局中成功的某一步。
19.正着:
对局的某一局面中的正确着法。
20.劣着:
对局中,导致严重不利后果的一步错误着法。
21.败着:
也称“失着”“漏着”。
对局中造成局面恶化的一步严重错误着法。
22.等着:
对局中具有等待性的一步着法,主要意图是等待有利时机。
23.废着:
也称“空着”。
对局中不起作用的着法。
实际上指浪费时间毫无疑义的错着。
24.抢先:
对局中利用反活三或冲四的强制手段夺取主动权的着法。
25.打谱:
按照棋谱演练着法,是提高棋艺水平的重要方法之一。
26.复局:
也叫“复着”。
对局结束又重演对局的过程。
一般用以研究、比较双方的成败得失和着法的优劣。
第四章开发工具、环境及其技术
4.1JAVA简介
JAVA技术介绍:
Java技术是一门编程语言,也是一个平台,它基于Java虚拟机技术,借助这个东西建立了跨平台的优势。
(题外话:
Java热门的原因之一就是一个跨平台的概念,和跨平台类似跨浏览器的好处也是如此,这也是现在AJAX技术流行的原因之一。
另外现在热炒的RIA富客户端的概念下的技术除了AJAX外还有Adobe的Flash/Flex,微软的SilverLight,SUN的JavaFX等,个人更看好FLash/Flex,原因是Flash插件在浏览器端占用率很高)
Java技术的重要性就不讲了,从最近流行的一个统计数据上来说,目前世界上编程语言Java、C、VB、C++依次排名前4位,这排名本身不说明什么,至少也是工业界对编程语言使用上一个侧面的反映吧。
Java编程语言与众不同之处在于:
Java程序既是编译型的(转换为一种称为Java字节码的中间语言),又是解释型的(JVM对字节码进行解析和运行)。
编译只进行一次,而解释在每次运行程序时都会进行。
编译后的字节码采用一种针对JVM优化过的机器码形式;解释器是JVM的实现。
这段是摘自网上的,编译原理学的不是很好,对这门语言的背后运行机制理解到这样了。
Java平台是一种纯软件平台,它有三个版本JavaSE、JavaEE、JavaME。
JavaSE(JavaPlatform,StandardEdition)这个版本以前叫做J2SE,后来版本号从1.4直接跳到5.0,其实也就是1.5,所以就叫成JavaSE5.0。
目前Java开发人员使用较多的版本是5.0,当然还有JavaSE6.0这个更新的版本。
它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。
JavaSE还包含了支持JavaWeb服务开发的类,并为JavaEE这个版本提供基础。
虽说桌面应用程序,Java一直不被看好,但也稍微提一下,负责桌面GUI开发的类库我知道的有:
JDK自带的主要是AWT/SWING这个Java原生类库;也可以使用IBM的SWT/JFace这个第三方类库。
开发工具我了解的有:
NetBeans(最近已经是6.0final版了,做GUI有使用VB的感觉),Eclipse(SWT/JFace这个项目其实就是做Eclipse项目时扩展出来的,所以对SWT/JFace支持的也不错)。
JavaEE(JavaPlatform,EnterpriseEdition)这个版本以前叫做J2EE,也就是大家可能听得比较多的,也是Java比较流行的领域,Java的企业级版本。
JavaEE下有很多流行的开发框架,像Struts、Spring、Hibernate这种流行的所谓SSH组合等。
根据项目大小、应用领域,技术平台的选择面还是很多的,除了JavaEE,还有.Net,LAMP组合(Linux、Apatch、MySql、PHP组合),相对来说比较新Ruby在RubyonRails的框架应用,后两者可能在相对来说比较轻量级的Web领域运用成功案例比较多,更重量的企业级潜力还有待挖掘。
JavaME(JavaPlatform,MicroEdition)这个版本以前叫做J2ME。
应用领域像各种移动设备和嵌入式设备,比如:
手机、PDA、电视机顶盒和打印机。
JavaME不是太熟悉,不过移动设备和嵌入式设备的开发个人觉得算是比较有意思的领域,最近比较瞩目的业界新闻有一个就是Google发布开源智能手机操作系统开发平台Android,也就是前一阵子炒得很火的GPhone(原来Google出的不是手机,而是一个手机操作系统开发平台)。
这个平台貌似会对JavaME有些冲击,按照网上的消息,Android包括:
1、高度定制的Linux操作系统内核及智能手机硬件驱动支持;2、经过Google修改过的Java虚拟机Dalvik,这里的性能比SUN的Hotspot高,支持大部分Java核心类库;3、大量智能手机开发核心类库;4、大量现成的智能手机应用软件;5、基于Eclipse的开发环境。
也是按照网上的说法,JavaEE提供了统一的编程平台,但不能调用操作系统的资源;而Android下直达操作系统,上直达应用软件,如:
浏览器、日历、地图等。
Java开发工具很多,个人使用的IDE有Eclipse和NetBeans。
Eclispe比较流行,各种插件也多,当然用起来也不错;NetBeans现在也是越做越好了,介绍这两个IDE主要是开源的,当然还有其它工具如JBuilder、IntelliJ、JCreator。
这些IDE各有优势劣势,根据你开发的项目来选择了。
4.2JAVA编程环境:
4.2.1环境变量
(1)java(TM)SEDevelopmentKits,即JDK。
(2)设置环境变量:
右击我的电脑->属性->高级->环境变量,这时候可以看到以下的环境变量:
Path:
系统在任何路径下都可以识别Java命令。
classPath:
为Java加载类(包括class,lib)的路径,只有类在classPath中,Java命令才能识别。
JAVA_HOME:
Java的安装路径。
这三个变量是必须正确设置的,否则Java命令将可能不会正常运行,具体设置如下:
Path:
;C:
\ProgranFiles\java\jdk1.6.0_01\bin
classpath:
.;ProgranFiles\java\jdk1.6.0_01\lib\dt.jar;ProgranFiles\java\jdk1.6.0_01\lib\tools.jar
JAVA_HOME:
ProgranFiles\java\jdk1.6.0_01
4.2.2Eclipse插件
(1)XMLBuddy:
编辑xml文件;下载地址为http: