版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、- .-. -可修编- . z.基于JAVA的五子棋游戏系统设计与实现专 业 电子信息工程 学生 董永杰 指导教师 曾玉 -. z.摘 要 目前,随着计算机网络的的开展,以计算机技术和网络技术为核心的现代网络技术已经在现实生活和生产中得到了广泛的使用,已经成为多数人群的休闲方式,也为多数人所喜好。当然,为了满足没有网络同样能娱乐的要求,许多小游戏做成了单机和网络的双功能。 本软件使用JAVA语户端之间的连接,利用多线程技术言实现,通过对图形界面,绘图,布局管理器等去构造出游戏的单机功能,在此根底上,利用SCOKET的知识,建立起效劳器与客来处理效劳器端与客户端之间的数据传输,通信问题,使得客户
2、端和效劳器端之间能够同步的进展处理。通过对软件的编写,更深入的理解了面向对象的概念,也体会到利用面向对象语言处理一些问题的优势。同时也加深了对多线程,流套接字等高级技术的理解。关键词: 多线程;流套接字;数据传输;同步。-. z.ABSTRACTAt present, With the rapid development of puter network. Taking puter technology and the network technology as the core, modern network technology is already used in the real li
3、fe and the production and already became the leisure mode of the most people. And most people like them. Of course, its a pity that there still have some clients lacking of network because of various causes.In order to satisfy the above clients requirements. A large number of games ,usually named as
4、 small games by players, are designed for involving two kinds of different function. The former game is often played by these players whose puters never connect with the network. Its called for stand-alone version games. Just as its name implies, the later is named as online version games This softw
5、are implemented with JAVA language, and according to the understanding of SCOKET ,GUI and paint image ichnology. Established in these foundation , the server co ects with the multi- client, and transmission the information between many clients using the multi-thread proceeding technology. it is very
6、 convenient for both client and server to do the synchronous processing.Through to the software pilation, deepen understanding and grasp to the technology above understanding and holding.Key Words: multiple thread, Socket, transmission-data, synchronism.- .-. z.目录TOC o 1-3 h u HYPERLINK l _Toc21007
7、第一章 绪论 PAGEREF _Toc21007 1 HYPERLINK l _Toc27600 1.1开发背景 PAGEREF _Toc27600 1 HYPERLINK l _Toc12224 1.2课题意义 PAGEREF _Toc12224 1 HYPERLINK l _Toc12802 1.3五子棋游戏的开展与现状 PAGEREF _Toc12802 2 HYPERLINK l _Toc31735 1.4论文的组织构造 PAGEREF _Toc31735 3 HYPERLINK l _Toc15132 第二章 五子棋程序相关技术介绍 PAGEREF _Toc15132 4 HYPER
8、LINK l _Toc14615 2.1软件的根本功能 PAGEREF _Toc14615 4 HYPERLINK l _Toc5526 2.2开发运行环境 PAGEREF _Toc5526 4 HYPERLINK l _Toc8885 2.3软件的开发手段以及工具的介绍 PAGEREF _Toc8885 4 HYPERLINK l _Toc25007 2.3.1 Java简介 PAGEREF _Toc25007 4 HYPERLINK l _Toc18223 2.3.2 MyEclipse10开发环境简介 PAGEREF _Toc18223 7 HYPERLINK l _Toc28443 2
9、.4软件的实现目的 PAGEREF _Toc28443 8 HYPERLINK l _Toc28420 第三章 五子棋程序分析与设计 PAGEREF _Toc28420 9 HYPERLINK l _Toc17775 3.1用户需求分析 PAGEREF _Toc17775 9 HYPERLINK l _Toc18471 3.2软件功能构造图 PAGEREF _Toc18471 9 HYPERLINK l _Toc21699 3.3软件各个功能的简要说明 PAGEREF _Toc21699 10 HYPERLINK l _Toc15512 3.4软件设计中使用到的JAVA软件包以及类和方法 PA
10、GEREF _Toc15512 12 HYPERLINK l _Toc14412 3.5 五子棋界面设计 PAGEREF _Toc14412 13 HYPERLINK l _Toc22278 3.6 五子棋算法设计 PAGEREF _Toc22278 14 HYPERLINK l _Toc780 3.6.1 五子棋棋盘设计 PAGEREF _Toc780 15 HYPERLINK l _Toc27978 3.6.2 棋子设计 PAGEREF _Toc27978 16 HYPERLINK l _Toc3789 3.6.3 落子算法设计 PAGEREF _Toc3789 17 HYPERLINK
11、l _Toc18429 3.6.4 判断输赢设计 PAGEREF _Toc18429 19 HYPERLINK l _Toc18419 3.7 网络五子棋算法设计 PAGEREF _Toc18419 21 HYPERLINK l _Toc30581 第四章 软件的具体实现 PAGEREF _Toc30581 23 HYPERLINK l _Toc1263 4.1准备工作 PAGEREF _Toc1263 23 HYPERLINK l _Toc18924 4.2游戏窗口界面的实现 PAGEREF _Toc18924 23 HYPERLINK l _Toc11876 4.3下棋算法的实现PAGER
12、EF _Toc11876 25 HYPERLINK l _Toc13216 4.4完成判断胜负的功能 PAGEREF _Toc13216 27 HYPERLINK l _Toc25904 4.5 系统测试 PAGEREF _Toc25904 30 HYPERLINK l _Toc16680 4.6 测试方案 PAGEREF _Toc16680 31 HYPERLINK l _Toc32246 4.6.1 界面功能测试 PAGEREF _Toc32246 31 HYPERLINK l _Toc11613 4.6.2 单机游戏测试 PAGEREF _Toc11613 32 HYPERLINK l
13、_Toc9703 4.6.3 联网游戏测试 PAGEREF _Toc9703 33 HYPERLINK l _Toc16252 4.7 测试结果 PAGEREF _Toc16252 34 HYPERLINK l _Toc25301 第五章 总结与展望 PAGEREF _Toc25301 35 HYPERLINK l _Toc31600 致 PAGEREF _Toc31600 36 HYPERLINK l _Toc28886 附录 PAGEREF _Toc28886 37 HYPERLINK l _Toc15725 JIcon.java程序: PAGEREF _Toc15725 37 HYPER
14、LINK l _Toc20991 Qipan.java局部程序: PAGEREF _Toc20991 37 HYPERLINK l _Toc25396 参考文献 PAGEREF _Toc25396 43- .-. -可修编- . z.第一章 绪论1.1开发背景 随着计算机的快速开展,各种游戏被纷纷请进了电脑。而像五子棋这类不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性的棋类游戏更是备受推崇。这使得那些喜爱下棋,又常常苦于没有对手的棋迷们能随时过足棋瘾。而且这类软件个个水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的深蓝便是最具说服力的代表,其它像围棋的手淡
15、、象棋的将族等也以其优秀的人工智能深受棋迷喜爱。 五子棋是我国古代的、传统的黑白棋种之一,大约在南北朝时期随围棋一起先后传入朝鲜、日本等地。现代五子棋日文称之为连珠,英译为Ren-ju,英文称之为Gobang或FIR(Five in a Row的缩写),亦有连五子、五子连、串珠、五目、五目碰、五格等多种称谓。通过一系列的规则变化使连珠五子棋这一简单的游戏复杂化、规化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。 五子棋既有现代休闲的明显特征短、平、快,又有古典哲学的高深学问阴阳易理;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长
16、,具有的神秘和西方的直观;既有场的概念,亦有点的连接。它是中西文化的交流点,是古今哲理的结晶。五子棋起源于古代中国,开展于日本,风行于欧洲。它在不同的国度也有着不同的称谓,如国人称其为情侣棋;欧洲人称其为绅士棋;日本人称其为中老年棋;美国人则喜欢将其称为商业棋。由此可见,尽管国度不同,语言各异,但人们都可以借助这一简单又深奥的棋艺进展交流、比赛,增进友谊。1.2课题意义人类之所以不断在进步,是因为我们人类一直不断的在思考,五子棋游戏程序的开发符合人类进步也是促进人类进步的一大动力之一。五子棋游戏程序让人们方便快捷的可以下五子棋,让人们在何时都能通过下棋来提高逻辑思维能力,同时也培养儿童的兴趣以
17、及爱好,让孩子更加聪明。同时,五子棋游戏程序的开发也使得五子棋这个游戏得到了广泛的推广,让世界各地的人们知道五子棋,玩上五子棋,这已经不是局限。五子棋游戏程序使得越来越多的人喜欢上了五子棋,热爱下五子棋,它是具有很好的带动性的。随着互联网络的不断普及,越来越多的人可以在网络上就能够与他人下五子棋了。1.3五子棋游戏的开展与现状目前,连珠这一棋类运动已迅速在国际上开展起来。外国人都十分看好这一不起眼的智力游戏,并认为五子棋不仅能提高思维、开发智力、手脑并用、修身养性 而且富含哲理,具有的神秘和西方的直观,是中西文化的交汇点。许多国家的人对五子棋都有不同的爱称,例如国人把五子棋称之为情侣棋,言下之
18、意是情人之间下五子棋有利于增加情感的交流;欧洲人称之为中老年棋,表示五子棋适合中老年人的生理特点和思维方式;美洲人喜欢将五子棋称之为商业棋,就是说商人谈生意时可边下棋边谈生意,棋下完了生意也谈成了。由此可见,尽管国度不同,语言各异,但人们都可以借助五子棋这一简单而又深奥的棋艺进展交流、比赛,增进友谊。当前,有多个国家和地区都在下五子棋,并有各种规模和级别的比赛。年月在日本京都、年月在俄罗斯联邦的莫斯科、年月在瑞典、年月在爱沙尼亚的塔林分别举行了第一、二、三、四届世界锦标赛。除第三届的冠军是爱沙尼亚人之外,其余三届的冠军都是日本人。五子棋 的世界锦标赛,每两年举办一次,其申国竞争也十分剧烈。日本
19、目前拥有自己的五子棋职业棋手,并且对连珠五子棋技术的研究也相当普遍和全面,就水平也正在日益增强。同时,五子棋的理论研究与探索也呈现蓬勃开展的势头,从年第一部五子棋专著问世以来,目前,全世界有多种五子棋的书籍及期刊,分别以日文、俄文、英文、瑞典文及中文。五子棋在我国的、*、*、等省区市都有很大的开展。屡次举办了地区的五子棋赛,如思曼杯、京空杯、奇奇童杯、第六届民族团结杯和第四岂民族运动会的五子棋比赛。地区举办了上文杯五子棋大赛。省以及其他省市亦举办过许多五子棋比赛。所有这些赛事都越来越多地吸引了无数人们的关注,说明了根埴于中国的五子棋有着广泛的群众根底,是群众喜闻乐见的体育活动。而现在,很多很多
20、游戏平台上面都有五子棋游戏供我们玩,任何游戏平台上面只要有棋牌类游戏的,则它就有五子棋在里面,网络五子棋比赛,在联众,263,QQ游戏,UC里进展了10几年了。可见,五子棋游戏在网络上面是非常火暴的。而且在棋牌游戏里面玩家人数排名总会占到很前面,不愧是风行全球的棋牌游戏啊!在未来中,将会有越来越多的人关注五子棋,喜欢五子棋,则将其变为商业化也会越来越多,而且还可以以教育孩子的方式来将其嵌套进去,或者用来做测试等等,可以说以后的五子棋游戏会是则的精彩,则的让人憧憬。则对于它的游戏开发和开展也将会上升到举足轻重的地位去,它的开展会是相当之快的,就让我们拭目以待吧。1.4论文的组织构造本文由第一章绪
21、论,第二章五子棋程序相关技术介绍,第三章五子棋程序分析与设计,第四章软件的具体实现,第五章总结与展望,最后由致、附录和参考文献八局部组成。第一章绪论由研究背景、五子棋的开展前景、五子棋程序的根本步骤和本文的组织构造组成。第二章介绍软件的开发工具和和软件的根本功能,另外介绍软件所要实现的目标。第三章软件总体分析与设计。第四章详细分析软件各模块的设计与实现包括绘制棋盘、下棋功能、判断胜负、下棋信息、时间设置、认输等功能组成。第五章是总结与展望。第六章是致。第七章是附录。第八章是介绍参考文献。- .-. z.第二章 五子棋程序相关技术介绍2.1软件的根本功能显示一个十五行十五列的围棋棋盘。在棋盘上面
22、在对应位置通过点击鼠标下子,棋盘上将在相应的位置上显示棋子,并且棋子在横纵交点上。可以自动判断游戏是否完毕,是否黑方或者是白方已经胜利,并且跳出对话框来提示玩家。在游戏棋盘上方会有一个游戏信息,这个游戏信息是用来提示当前是黑白双方的哪一方下子,玩家可以根据这个提示来相应的下棋,而不会导致 不清楚轮到哪一方下棋。可以重新开场游戏,并且有认输功能,在下棋提示上提示哪方时点认输,哪一方就输了,并且有悔棋功能。还可以对游戏时间进展设置,判断是否超出规定的时间,如果超出时间则自动判断为输。2.2开发运行环境中心处理器:Intel Core i5-3230M,2.6GHZ;存:4G;硬盘:750G;操作系
23、统:WINDOWS 7;开发工具: MyEclipse10;编程语言:JAVA。2.3软件的开发手段以及工具的介绍2.3.1 Java简介 Java 编程语言的风格十分接近C、C+语言。Java是一个纯的面向对象的程序设计语言,它继承了 C+ 语言面向对象技术的核心,Java舍弃了C +语言中容易引起错误的指针以引用取代、运算符重载operator overloading、多重继承以接口取代等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的存空间,使得程序员不用再为存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程Generic Programming、类型
24、平安的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了一次编译、到处执行的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。 与传统程序不同,Sun 公司在推Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。Java 语言靠群体的力量而
25、非公司的力量是 Sun 公司的口号之一,并获得了广阔软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、强健、平安与系统无关、可移植、高性能、多线程和动态的语言。 Java 平台是基于 Java 语言的平台。这样的平台目前非常流行,因此微软公司推出了与之竞争的.NET平台以及模仿 Java 的 C#语言。 Java技术的重要性就不讲了,从最近流行的一个统计数据上来说,目前世界上编程语言Java 、C 、VB、C+依次排名前4位,这排名本身不说明什么,但至少也是工业界对编程语言使
26、用上一个侧面的反映。 Java编程语言与众不同之处在于:Java程序既是编译型的转换为一种称为Java字节码的中间语言,又是解释型的JVM 对字节码进展解析和运行。编译只进展一次,而解释在每次运行程序时都会进展。编译后的字节码采用一种针对JVM 优化过的机器码形式;解释器是JVM 的实现。 Java具有众多优点,比方平台无关性,平安性,面向对象,强健式,分布式等。与c+相比,Java去掉了其中的指针运算、构造、typedefs、#define、需要释放存等功能,减少了平常出错的50%,让Java的语言功能很精炼。而且,因为Java很小,所以整个解释器只需215K的RAM,并增加了一些很有用的功
27、能。2.3.2 MyEclipse10开发环境简介 MyEclipse10 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组效劳,用于通过插件组件构建开发环境。幸运的是,MyEclipse10 附带了一个标准的插件集,包括 Java 开发工具。MyEclipse10的本身只是一个框架平台,但是众多插件的支持使得MyEclipse10拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以MyEclipse10为框架开发自己的IDE。 MyEclipse10是一个开放源代码的软件开发工程,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的
28、工业平台。它主要由MyEclipse10工程、MyEclipse10工具工程和MyEclipse10技术工程三个工程组成,具体包括四个局部组成MyEclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,MyEclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的根底。MyEclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里完毕,而另一个工具功能在哪里开场。虽然大多数用户很乐于将 MyEclipse10
29、当作 Java IDE来使用,但MyEclipse10 的目标不仅限于此。MyEclipse10还包括插件开发环境Plug-in Development Environment,PDE,这个组件主要针对希望扩展 MyEclipse10的软件开发人员,因为它允许他们构建与MyEclipse10 环境无缝集成的工具。由于MyEclipse10 中的每样东西都是插件,对于给MyEclipse10 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。MyEclipse SDK软件开发者包是MyEclipse Platform、JDT和PDE所生产的组件合并,它们
30、可以一次下载。这些局部在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到MyEclipse Platform中的工具。MyEclipse SDK由MyEclipse10工程生产的工具和来自其它开放源代码的第三方软件组合而成。MyEclipse10工程生产的软件以 GPL发布,第三方组件有各自自身的许可协议。 MyEclipse10的根底是富客户机平台Rich Client Platform, 即RCP。RCP包括以下组件: 核心平台(启动MyEclipse10,运行插件 OSGi标准集束框架 SWT可移植构件工具包 JFace文件缓冲,文本处理,文本编辑器MyEclip
31、se10工作台即Workbench ,包含视图views、编辑器editors、视角perspectives、和向导wizards MyEclipse10采用的技术是IBM公司开发的SWT,这是一种基于Java的窗口组件,类似Java本身提供的AWT和Swing窗口组件;不过IBM声称SWT比其他Java窗口组件更有效率。MyEclipse10的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。MyEclipse10的插件机制是轻型软件组件化架构。在富客户机平台上, MyEclipse10使用插件来提供所有的附加功能,例如支持Java以外的其他语言。 已有的别离的插
32、件已经能够支持C/C+CDT、Perl、Ruby,Python、telnet和数据库开发。插件架构能够支持将任意的扩展参加到现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。MyEclipse10的设计思想是:一切皆插件。MyEclipse10核心很小,其它所有功能都以插件的形式附加于MyEclipse10核心之上。MyEclipse10根本核包括:图形API (SWT/Jface), Java开发环境插件(JDT ),插件开发环境(PDE)等2.4软件的实现目的五子棋游戏程序所要实现的目的是让我们可以在电脑上下棋,而不需要去买,可以随时玩,也可以联机对战,方便快捷。而且能更好的推广五
33、子棋于世界各地,此软件也在于提供应爱好五子棋的人,也吸引更多的人喜欢上五子棋,也具有很大的商业价值。使五子棋游戏程序在以后的制作中功能越来越强大,外观越来越好看。- .-. z.第三章 五子棋程序分析与设计3.1用户需求分析 通过软件功能的分析,根据五子棋爱好者的需求,得出以下需求信息:具有重新开场功能;具有认输功能;具有提示该轮到哪一方下棋的功能;退出游戏功能;判断胜负功能;时间设置功能;五子棋难度选择功能;联机功能。还有用户对游戏界面的要求,通过上述的用户需求,可以得出一个总体的设计方案。由上述的用户需要,可以对程序的根本功能进展一个有效的分析,规定下游戏的根本功能。3.2软件功能构造图此
34、五子棋程序最主要的五大功能是:下棋,判断胜负,重新开场与认输,联网游戏的设置与五子棋难度的选择。大体的功能如图3-1:五子棋程序棋盘的设计五子棋程序棋盘的设计下棋方法的判定落子的设计输赢的判定游戏提示联机对完设计选择难度图 3-1 五子棋功能设定图3.3软件各个功能的简要说明绘制十五行十五列的棋盘:首先是每行每列的距离都是一样的,并且棋盘上面有五个星,棋盘中间有个天元点,跟围棋的棋盘一样。点击鼠标以后,会在相应位置落下棋子,并被绘制出来,黑子是一个实心的黑圆,白子是一个实心的白圆加上一个等大空心的黑圆。棋子落在交点上:我们在下五子棋棋的时候,棋子都是会落在交点上的,而并非落在格子里面,则我们就
35、要规定当我点击鼠标时,选取距离鼠标所取点的最近的左上交点为绘制棋子的中心点,则就可以实现棋子落在交点上了。黑白双方轮流落子:黑方落子以后就要轮到白方,交替进展,这是下棋的根本要求,因此我们就要弄一个互斥事件进去,让他们交替的落子。不能落在一样位置:当我们落子时,会不小心落到一样位置上去,则就要出现提示,不能落在一样位置上,需要重新落子,实现的设想是当这个点已经绘制过棋子以后,我们就要给一个布尔变量,让它为假,则只能在它为真时才能绘制棋子,否则就要重新落子到别的地方去。判断输赢:当五个一样颜色子都连在了一起的时候,我们就要判其为赢,这五个子可以在横竖方向上连起,也可以在斜方向上连起。游戏信息:我
36、们应该在棋盘的上面设置一个游戏信息的,用来提示当前轮到哪一方下棋了,以便于玩家知道谁在下,这个功能只要在黑白双方轮流下棋功能的过程中添加一个提示信息用于显示到界面上的就可以了。重新开场游戏就是把棋盘上的子全部清空,回复到一开场的时候的状态,重置之前所有的数据。认输的功能就是在判断输赢功能的根底上添加的,让玩家对自己没信心的时候使用。退出游戏的功能就是直接把窗口关闭就可以了。游戏难度选择:游戏难度选择是由玩家自主选择的与电脑下五子棋的一个重要方法。可以根据自身的下棋水平来选择和那种电脑来下。难度分为三种,分别是:简单、中等与困难。而且电脑的思维是根据难度提升而提升。联机对战:联机对战是为了方便玩
37、家与玩家相互之间切磋棋艺而设定的一大功能模块,可以在一个局域网里面,然后联机对战。当双方建立联系以后,点击开场就可以进展联网对战了。这极大的提高了五子棋的娱乐程度。3.4软件设计中使用到的JAVA软件包以及类和方法在用JAVA设计软件的时候,使用到SUM公司提供的一些软件包,这样使得我们编写程序更加简便,以下是使用到的软件包:Java*.swing.JFrame /java*.swing软件包提供一组轻量级全部是 Java 语言组件,尽量让这些组件在所有平台上的工作方式都一样。JFrame 类是 的扩展版本,该版本添加了对 JFC/Swing 组件架构的支持。JFrame 是用来创立窗体的sw
38、ing 类,用来创立一个图形界面的原始窗口,并且可以设置其大小,位置等属性,是swing 编程的根底类之一。Java.awt /java.awt 软件包包含用于创立用户界面和绘制图形图像的所有类。Java.awt.Toolkit /Toolkit此类是所有 Abstract Window Toolkit 实际实现的抽象超类。Toolkit 的子类被用于将各种组件绑定到特定本机工具包实现。Toolkit.geiDefaultToolkit().getScreenSize().width; Toolkit.geiDefaultToolkit().getScreenSize().height; /以
39、上这两个方法的作用是取得我们电脑显示屏幕的宽度以及高度。geiDefaultToolkit()为获取默认工具包,如果名为java.awt.headless 的系统属性被设置为 true,则使用 Toolkit 的 headless 实现。 如果不存在 java.awt.headless 或 java.awt.headless 被设置false,且存在名为 awt.toolkit 的系统属性,则该属性将被视为 Toolkit 子类的名称;否则将使用特定于平台的默认 Toolkit 实现。 getScreenSize()这个方法是获取屏幕的大小。在具有多个显示屏的系统上,使用主显示屏。从 Grap
40、hicsConfiguration 和 GraphicsDevice 可以获得多屏幕感知显示尺寸。Java*.swing.JOptionPane / JOptionPane 有助于方便地弹出要求用户提供值或向其发出通知的标准对话框Java.awt.event.MouseListener /MouseLinstener 是鼠标监听,功能是接收用户通过鼠标所做的操作,可以取得用户点击鼠标的坐标,从而进展其他的操作。Graphics 类, 它的功能是类似于画笔的功能,用来在窗口中绘制文字以及图形等。他的调用是通过覆写JFrame 的 paint() 方法来使用的,通过 repaint() 方法来调用
41、。Java.io.File /这个是产生中断并且调用文件用到的类。Java.io通过数据流、序列化和文件系统提供系统输入和输出。File 类文件和目录路径名的抽象表示形式。Java.awt.image.BufferedImage /BufferedImage 子类描述具有可访问图像数据缓冲区的 Image。BufferedImage 由图像数据的 ColorModel 和 Raster 组成。Raster 的 SampleModel 中 band 的数量和类型必须与 ColorModel 所要求的数量和类型相匹配,以表示其颜色和 alpha 分量。所有 BufferedImage 对象的左上角
42、坐标都为 (0,0)。因此,用来构造 BufferedImage 的任何 Raster 都必须满足:min*=0 且 minY=0。 可以用来调用一个图片作为我们下棋的背景图片使用。3.5 五子棋界面设计开场开发游戏的第一步就是先制作出游戏的窗口界面,一个漂亮美丽大方的游戏界面,往往先能吸引玩家去尝试,所以这个地方不能够马虎。首先我们得按照大家的习惯,也就是游戏风格。按照国人的五子棋游戏风格。一般是在木质的棋盘上下,这样能够显示出棋类游戏的沉稳、大气而又不失典雅的气质。所以我们设计界面的时候需要按照木质棋盘的颜色来设计底色。在一般的五子棋游戏比赛中,需要有比赛的信息显示,方便下棋者与观看者根据
43、信息思考。所以在我们设计的界面上,必要的信息是不可缺少的。国人多喜欢把棋盘放在左边,然后右边显示下棋的信息,所以设计棋盘的时候应该按照国人的喜好摆放位置。根本流程如图3-2所示:图3-2 五子棋界面设计流程图综上所述,棋盘的设计是以木质颜色为棋盘底色,画上棋盘线条,把棋盘摆设在左边,然后再右边添加下棋的信息,如:状态,时间显示,开场游戏等一些按钮。3.6 五子棋算法设计五子棋算法设计可以包括如图3-3所示设计:图3-3 五子棋算法设计图五子棋的算法设计包括棋盘设计,棋子设计,落子设计以及输赢判断。能设计出这四个算法,一个根本的五子棋算法就算完成了。3.6.1 五子棋棋盘设计五子棋棋盘设计可以使
44、用JAVA自带的画图算法。设计成十五行十五列的小型棋盘即可,然后按照围棋棋盘的设定,画上天元以及天星等标记,则此棋盘就已经设计完成了。设计图如下:图3-4 棋盘设计流程图棋盘设计如上图所示,首先是设计棋盘大小,然后设计棋盘底色这里设计底色一般为木质颜色,如:蜡黄色和线条颜色,接下来就可以画棋盘线条了,执行一个循环,循环次数为15次,画出行线,然后再执行一个15次循环,画列线。最后找到相对应的点,画上天元和天星。如此下来,一个优质的棋盘就已经完成了。颜色、线条等个方面符合国人的审美观。让玩家下起来有一种和现实下五子棋一样的感觉。3.6.2 棋子设计棋子设计也可以使用JAVA自带的画图算法,分为黑
45、白两种颜色的棋子,画一个实心圆即可表示棋子。具体的实现设计如图3-5所示:图3-5 棋子设计流程图棋子设计就需要使用java自带的画图方法,获取横竖穿插点,然后以该点为圆心,画一个半径为13的圆,然后填充两种颜色:黑色和白色。完成后判定该圆是否属于刚刚落下的棋子,如果是,则在填充一个半径为6的红色圆,表示该棋子刚刚走完。3.6.3 落子算法设计由于需要设计单机游戏和联机对战。但是该算法不涉及到联机对战,所以该算法只针对单机游戏。初步设定单机游戏分为三种难度等级。分别为容易、中等和困难。我们可以通过一个算法来表达不同难度,电脑只能从玩家手中获取玩家下棋的情况,包括以下几种情况:当计算出的自己已经
46、有四个连珠并且没有被堵住的情况下当然也就是说下一颗子就必赢的情况当计算出的对方已经有四个连珠并且没有被堵住的情况下当然也就是说必须堵住当计算出的自己已经有三个连珠并且没有被堵住的情况下当然也就是说下一颗子就必赢的情况当计算出的对方已经有三个连珠并且没有被堵住的情况下当然也就是说必须堵住四三连的情况 三三连的情况其算法流程图如图3-6所示:图 3-6 五子棋算法流程图开场下子,系统赋予该棋子Value初始值,然后系统自动分/|这四个方向进展判断是否完毕。当系统定义为简单的时候只能满足以下情况:当计算出的自己已经有四个连珠并且至少有一个没有被其他颜色棋子拦截的情况下,就会自动去补齐。当计算出的对方
47、已经有四个连珠并且没有被拦截住的情况就会去拦截。 其他情况则不拦截。所以简单的电脑较为容易。中等难度算法当自己已经有四个连珠并且至少有一个没有被其他颜色棋子拦截的情况下,就会自动去补齐。当计算出的对方已经有四个连珠并且没有被拦截住的情况就会去拦截。当计算出的自己已经有三个连珠并且没有被拦截的情况下就会继续补齐到第四颗棋子,然后继续1号操作。 当计算出的对方已经有三个连珠并且没有被拦截的情况就会主动去拦截。 当为棋盘出现四三连三三连连子的情况时候它不拦截当系统设定为困难的时候当计算出的自己已经有四个连珠并且至少有一个没有被其他颜色棋子拦截的情况下,就会自动去补齐。当计算出的对方已经有四个连珠并且
48、没有被拦截住的情况就会去拦截。当计算出的自己已经有三个连珠并且没有被拦截的情况下就会继续补齐到第四颗棋子,然后继续1号操作。 当计算出的对方已经有三个连珠并且没有被拦截的情况就会主动去拦截。 当计算机即将出现四三连的情况时候,计算机就会自动去补齐。当计算机即将出现三三连的情况时候,计算机就会自动去补齐。 当对方快或者已经出现四三连子的时候,电脑就会视优先级去拦截一个方向。当对方快或者已经出现三三连子的时候,电脑就会视优先级去拦截一个方向。3.6.4 判断输赢设计五子棋判断输赢的规则就是连续五个颜色一样的子,代表该颜色所代表的一方获胜。其具体设计流程图如图3-7所示:图3-7 五子棋输赢判断流程
49、图五子棋游戏胜负的判断是五子棋游戏的最根本的算法设计。根据五子棋游戏的规则,当任一行、列、斜行连续一样的棋子数到达5以后,则判定改色棋子的玩家胜利。所以设计判断五子棋输赢的方法就从查找连续一样棋子开场。首先从横向查找,循环查找横向是否有连续颜色一样的五个以上的棋子。假设有,则判断胜利,假设没有,则可以竖向查找,步骤和横向查找类似。假设有,则判断胜利,假设没有,则可以继续斜向查找,其步骤和判断结果和前面类似。假设还是不能判断胜利,则搜索是否还有可下的棋盘点位。假设有,则证明判断失败,假设没有则可以宣布和棋。五子棋的判定方法不分单机或者联网,无论是和电脑对战,还是和玩家联机对战其判断结果都如上述方
50、法来判断。3.7 网络五子棋算法设计网络五子棋是使用的Socket网络编程来实现的。下面先介绍下Socket编程流程图:图3-8 Socekt原理流程图这个是整个Socket原理流程图。利用这个原理可以把它应用到网络五子棋的流程图。网络五子棋的整体设计思路如图3-9所示:图3-9 网络五子棋网络通信原理图首先开启效劳器程序为客户端提供效劳,初始化。然后等待已注册好的客户端程序的连接;客户端主程序开场运行,初始化。通过客户端代理程序向效劳器端发送连接处理请求;效劳器端监听到客户端发送过来的请求后,进展相应的处理,并将处理结果打包,由效劳器代理程序将处理好的结果包发送到客户端;客户端这时就可以接收
51、到来自效劳器端处理好的数据并做相应的处理,如客户端界面刷新显示数据等问题。接着不断重复以上操作。从而实现网络对战通信的目的。-. z.第四章 软件的具体实现4.1准备工作首先用MyEclipse来建一个工程,我将此工程的名字命为:FIR。然后在我所建的工程里建立一个包,包名为goumoku。再在包里面建立我需要的类,建立一个名字为MainFrame的JAVA类,继承Java*.swing.JFrame这个类,而且同时引入MouseListener 这个监听的接口。通过这个接口实现对五子棋的每项功能进展鼠标监听。然后准备一个算法类Qipan,其中包括三种算法比照,分别为简单,中等,复杂三个等级,
52、这样可以提高游戏者的兴趣,根据自己的技术选择相应的难度。也包括棋盘的设计,输赢的判断,下子的判断等功能。最后建立效劳器端和客服端,实现网络编程。4.2游戏窗口界面的实现图4-1 单机游戏主界面当玩家运行程序以后,就会出现个棋盘的主界面。这个界面是有木质颜色来作为棋盘的底色。而且棋盘已经画成功。等待玩家下一个步骤,是否选择联机游戏或者选择单机游戏。当玩家选择好了单机游戏以后,由于本软件实现了难度选择,所以玩家可以选择难度默认为中等难度,难度分为三种:简单,中等,困难。在玩家选择了单机游戏而且又选择好了难度以后,系统会更具玩家所选择的游戏难度来表达电脑的水平。当玩家选择联机游戏时,系统会出现等待的
53、界面,当系统扫描局域网的IP,假设该局域网有个IP也在运行次程序,则主动匹配,完成网络游戏的功能。假设无IP运行,则系统将一直搜索等待。棋盘实现核心代码如以下图:图4-2 棋盘实现核心代码4.3下棋算法的实现图4-3 五子棋下棋界面当玩家在选择是否单机或联机以后,就可以下棋了,图4-1显示了玩家单机游戏的界面,无论是人机五子棋,还是人人五子棋在下棋的动作方面都如图4-1所示的方法来显示。其落子的判定是根据玩家的鼠标点击来获取时间源,然后对鼠标点击时间判定,获取鼠标点击坐标。获取坐标以后,首先需要判定这个坐标点有无已经存在的棋子,假设存在则点击无效,假设不存在,则根据坐标与最近的十字穿插点相匹配
54、。获取十字穿插点以后,则系统画出相对应的黑白棋子,下棋子事件就成功了。假设玩家选取的是单机游戏,则可以选取难度,每个难度等级都有对应的算法。三个难度选择不同,对应的算法不同。系统定义为简单的时候只能满足以下情况:当计算出的自己已经有四个连珠并且至少有一个没有被其他颜色棋子拦截的情况下,就会自动去补齐。当计算出的对方已经有四个连珠并且没有被拦截住的情况就会去拦截。当计算出的自己已经有三个连珠并且没有被拦截的情况下就会继续补齐到第四颗棋子,然后继续1号操作。 其他情况则不拦截。系统定义为中等难度时候会满足当计算出的自己已经有四个连珠并且至少有一个没有被其他颜色棋子拦截的情况下,就会自动去补齐。当计
55、算出的对方已经有四个连珠并且没有被拦截住的情况就会去拦截。当计算出的自己已经有三个连珠并且没有被拦截的情况下就会继续补齐到第四颗棋子,然后继续1号操作。 当计算出的对方已经有三个连珠并且没有被拦截的情况就会主动去拦截。 当为四三连三三连连的时候它不拦截系统定义为困难难度时候会满足当计算出的自己已经有四个连珠并且至少有一个没有被其他颜色棋子拦截的情况下,就会自动去补齐。当计算出的对方已经有四个连珠并且没有被拦截住的情况就会去拦截。当计算出的自己已经有三个连珠并且没有被拦截的情况下就会继续补齐到第四颗棋子,然后继续1号操作。 当计算出的对方已经有三个连珠并且没有被拦截的情况就会主动去拦截。 当计算
56、机即将出现四三连的情况时候,计算机就会自动去补齐。当计算机即将出现三三连的情况时候,计算机就会自动去补齐。困难等级的难度所有三子以上的情况都会拦截图4-4 五子棋落子点的判断原则4.4完成判断胜负的功能图4-5 五子棋获胜判定界面当棋局在横、竖、斜任意一个方向连着五个颜色一样棋子的时候,在这时候系统就会判断,假设是黑子,则系统判断黑棋获胜,且弹出一个黑棋获胜的对话框,如图4-3所示。当系统判定*种棋子获胜后,就代表本局已经完毕了,玩家可以点击开场游戏重新开场下一局。也可以在换难度以后,再从新开场游戏。判断胜负关键代码如图4-6所示:图4-6 五子棋获胜判断4.5 系统测试1测试的重要性软件的测
57、试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进展测试,错误的延时扩散常常会导致最后成品测试的巨大困难。 事实上,对于软件来讲,不管采用什么技术和什么方法,软件中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要测试来进展估计。测试
58、是所有工程学科的根本组成单元,是软件开发的重要局部。自有程序设计的那天起测试就一直伴随着。统计说明,在典型的软件开发工程中,软件测试工作量往往占软件开发总工作量的40以上。而在软件开发的总本钱中,用在测试上的开销要占30到50。如果把维护阶段也考虑在,讨论整个软件生存期时,测试的本钱比例也许会有所降低,但实际上维护工作相当于二次开发,乃至屡次开发,其中必定还包含有许多测试工作。 在实践中,软件测试的困难常常使人望而却步或敷衍了事,这是由于对测试仍然存在一些不正确的看法和错误的态度,这包括: 认为测试工作不如设计和编码那样容易取得进展难以给测试人员*种成就感; 以发现软件错误为目标的测试是非建立
59、性的,甚至是破坏性的,测试中发现错位是对责任者工作的一种否认; 测试工作枯燥无味,不能引起人们的兴趣; 测试工作是艰辛而细致的工作; 对自己编写的程序盲目自信,在发现错误后,顾虑别人对自己的开发能力的看法。这些观点对软件测试工作是极为不利的,必须澄清认识、端正态度,才可能提高软件产品的质量。 2测试的目的 如果测试的目的是为了尽可能多地找出错误,则测试就应该直接针对软件比拟复杂的局部或是以前出错比拟多的位置。 软件测试是为了发现错误而执行程序的过程; 测试是为了证明程序有错,而不是证明程序无错误; 一个好的测试用例是在于它能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。
60、 这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。 首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助工程管理者发现当前所采用的软件过程的缺陷,以便改良。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。4.6 测试方案4.6.1 界面功能测试1测试目标:系统界面按钮的可用性。2测试时间:2017年3月20日3测试步骤:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度健康养生馆宣传服务采购合同4篇
- 2025年度港口码头货车车位租赁合同样本3篇
- 2025年巢湖军供站公房租赁合同租赁期限及续租规定4篇
- 二零二五年度窗帘行业规范与标准制定合同4篇
- 2025年度木工工艺培训与实习合同范本3篇
- 2025年电商品牌代理运营管理合同4篇
- 2025年新型材料研发与厂房建造一体化合同3篇
- 2025年度镍矿国际贸易信用保险合同8篇
- 2025年度个人绿色贷款合同范本与环保效益分析4篇
- 2025年度瓷砖绿色生产技术转移合同4篇
- 电影《狮子王》的视听语言解析
- 妊娠合并低钾血症护理查房
- 煤矿反三违培训课件
- 向流程设计要效率
- 2024年中国航空发动机集团招聘笔试参考题库含答案解析
- 当代中外公司治理典型案例剖析(中科院研究生课件)
- 动力管道设计手册-第2版
- 2022年重庆市中考物理试卷A卷(附答案)
- Python绘图库Turtle详解(含丰富示例)
- 煤矿机电设备检修技术规范完整版
- 榆林200MWp并网光伏发电项目可行性研究报告
评论
0/150
提交评论