毕业论文---基于Java小游戏开发—五子棋.doc

上传人:椰子壳 文档编号:3939994 上传时间:2019-10-10 格式:DOC 页数:45 大小:820.52KB
返回 下载 相关 举报
毕业论文---基于Java小游戏开发—五子棋.doc_第1页
第1页 / 共45页
毕业论文---基于Java小游戏开发—五子棋.doc_第2页
第2页 / 共45页
毕业论文---基于Java小游戏开发—五子棋.doc_第3页
第3页 / 共45页
毕业论文---基于Java小游戏开发—五子棋.doc_第4页
第4页 / 共45页
毕业论文---基于Java小游戏开发—五子棋.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《毕业论文---基于Java小游戏开发—五子棋.doc》由会员分享,可在线阅读,更多相关《毕业论文---基于Java小游戏开发—五子棋.doc(45页珍藏版)》请在三一文库上搜索。

1、江 西 理 工 大 学本 科 毕 业 设 计(论文)题 目:基于Java小游戏开发五子棋专题题目:学 院:理学院专 业:信息与计算科学班 级:信息082班学 号:25学 生:黄洪华指导教师:钟少君 职称:讲师指导教师: 职称:时间:2012-5-29摘 要随着经济的发展,社会竞争的激烈,现在社会进入了竞争的时代。上班族为了完成公司业务,每天超负荷的工作;学生为了不落后他人每天早起晚睡不断地学习,压力巨大。所以为了缓解大家的压力,使大家在工作、学习之余娱乐一下,活跃大脑,提高工作、学习效率,我本人设计了一个简易的五子棋游戏。系统将利用五子棋游戏作为研究对象,在Windows平台下,运用java语

2、言设计的一个能够实现人机对战的简单游戏。该系统涉及到人工智能方面的知识,而计算机博弈是人工智能研究的一个重要分支,其中还包括几个重要的搜索算法。只有通过一定的研究,才能实现五子棋的人机对战功能。当玩家下棋时,电脑优先考虑阻止玩家取得胜利,在这个过程中电脑首先在各个方向进行搜索,寻找其中最优的位置进行下棋,以达到阻止玩家获得胜利的目的。每当玩家下了一步棋之后,计算机都会进行一个判断,是防守还是进攻。而这些判断都会进行一个评分,如果防守的评分高,则进行防守,反之亦然。判断好防守或是进攻后,又要判断如何防守或是如何进攻,这也会进行一个评分,过程一样,就不列举了。而判断胜负是这个游戏的核心,一个游戏最

3、重要的部分,如果连判断胜负都不可以实现的话,那么这个游戏程序是没有用的。依据五子棋的基本规则,判断某一方向上是否有同一颜色的棋子连成五个或五个以上的,如果有,那么游戏就结束了,并判先连成五子的一方获得了胜利。电脑主要是从八个方向来判断哪一方先胜,这八个方向是以一个棋子为中心向四周辐射扩散出去进行搜索判断,这八个方向分别是以该棋子为中心的右横方向、左横方向、竖正上方、竖正下方、右上方、右下方、左上方和左下方。关键词:Java语言 ;人工智能 ; 计算机博弈 ; 搜索算法 ; 五子棋; Abstract With development of economy, social competition

4、 is intense, now society has entered into the competition era. Office worker in order to complete the company business overworked every day; For catching up with others, the student rises early, sleeps late and studies hard. The pressure builds up. So in order to alleviate the pressure, make everyon

5、e all over the job, study entertained, active brain, improve work, learning efficiency, I design a simple RENJU.This system will take the object of study using the RENJU, designs one to be able to realize the man-machine under the Windows platform with Java language to the simple game which fights.

6、The system involves knowledge of artificial intelligence, and the computer game is one of the important researches on artificial intelligence branch, including several important search algorithms. You just through certain research can realize RENJU against function Man-machine. When the player to pl

7、ay chess, the computer is preferred prevent players win, in this process the computer first in all directions to search for, looking for one of the most optimal location chess, in order to achieve the purpose of victory prevent players. When players down the move played after, the computer will a ju

8、dgment, is the defense or attack. And the judge will a score, if the defense rating high, is to defend, and vice versa. Judge good defence and attack, and to determine how to defend or how to attack, it can also provide a rating, process, will not list. And a judge is the core of the game, a game th

9、e most important part, if even a judge is not to be fulfilled, and then the games are of no use. According to the basic rule of RENJU, judge whether there is a certain direction of the same color into pieces five or five or more, if so, the game is over, and sentenced to one side of the first arbitr

10、al joined to a victory. The computer is mainly from eight direction to judge which one party winning first, this eight directions is a pawn for center around to spread out to search the judge radiation, the eight direction in this piece for the center respectively of the right direction, left horizo

11、ntal direction, vertical shaft below, upper part, upper right, to the left of the upper and lower,.Keywords: Java language ; artificial intelligence ; computer game ; search algorithm ;RENJU ;目 录第一章 概述11.1开发背景11.2课题意义21.3人工智能介绍21.4五子棋的发展与现状31.5研究内容6第二章 开发环境72.1五子棋程序的基本功能72.2软件开发工具及开发语言介绍7第三章 五子棋的总体设

12、计113.1系统包含的类及类之间的关系。113.2 Java源文件及其功能113.3项目构建思路11第四章 模块功能介绍194.1主类Chess194.2类Autoplay254.3类Scan25第五章 五子棋的AI算法265.1人机博弈的要点265.2 算法设计26第六章 软件测试306.1软件测试的定义306.2界面测试306.3数据的测试336.4用户验收测试34附 录36参考文献39致 谢40江西理工大学2012届毕业设计(论文)第一章 概述本章主要介绍毕业设计的开发背景、课题意义,有关计算机人工智能方面的知识以及五子棋的发展与现状,以及毕业设计的研究内容、方向。 1.1开发背景随着计

13、算机技术和互联网的飞速发展,游戏软件是当今世界发展最迅速,最有影响力,最有潜力与活力的领域之一电脑游戏的出现为人们提供了新的娱乐平台,丰富了人们的业余生活。因此与游戏有关的软件深受广大青少年的喜爱。随着近几年来软件技术的不断进步、不断发展,软件游戏的操作要求越来越简单,大多数游戏普通人学几分钟就能会玩,甚至连老年人也慢慢爱上了它。第二次世界大战以后,电子计算机技术得到了突飞猛进的发展在众多国家中美国的计算机技术发展最为迅速。1946年2月,世界上第一台电子数字计算机(ENIAC)在美国宾夕法尼亚大学建造完成。ENIAC机的问世,表明了电子数字计算机时代的到来,具有划时代的伟大意义,是科学技术发

14、展史上的重大里程碑。我国也不落后,在1956年成功研制了国产计算机。1958年和1959年我国先后自主研制成功国产小型和大型电子管计算机。后来出现了集成电路和大规模集成电路,使电子计算机一代一代实现更新,性能越来越高,计算速度越来越快,硬件方面的不断发展促使了软件技术也迅速发展。在美国,集中了许多计算机软件的设计人才,他们工作之余,时常喜爱编一种能与人斗智的“游戏”,以此来锻炼编程的能力这种“游戏”花样繁多,但其特点都是利用计算机软件事先设计好的“分析”“判断”能力反过来与人较量由于不断修改更新,使计算机的“智力”水平与人难分高低到了90年代,游戏软件已经为世界各国的人使用,所谓游戏软件通常是

15、指用各种程序和动画效果相结合起来的软件产品,我们称之为“游戏软件”。目前,在网络上我们经常看到的大型3D网络游戏和WEBGAME网页游戏等都是通过用3DMAX、MAYA、FLASH、等动画软件和JAVA、C+、VB等程序语言相结合而开发出来的,所以叫游戏软件。其中BLACKISLAND和Blizzard这两个强大的游戏制作组对游戏软件的发展起到了巨大的带动作用,还有中国的洛河工作室在国内也起到了巨大作用,他们让很多的人喜欢上了游戏软件,打开了这个市场。如今游戏软件产业已经受到了广泛的关注,它年轻有潜力而且吸引人,让人们日益丰富的生活需求得以满足。而五子棋游戏的诞生更是吸引着不同年龄段的人群,无

16、论男女老少都可以玩,都喜欢玩,而当前微型计算机已经在广大人群中流行着,用电脑来下五子棋更是一种时尚。现在网络上出现了各种各样的五子棋软件,有大师级的、新手级的等等。所有这些都满足了不同人群的需要,所以当前五子棋越来越被许多人所熟悉。目前的五子棋程序的发展也非常快,从最初的双人发展到人机(有AI),然后到现在的网络对战,已经受到越来越多人的喜爱和重视。91.2课题意义人类社会经历了五千多年的农业文明时代,又经历了三百多年的工业文明时代。经过漫长时间的发展,人类文明取得了不可想象的进步,人也变的越来越聪明了。人类之所以变得聪明,是因为我们人类一直不断地在实践中思考,在思考中实践。五子棋不仅能增强思

17、维能力,提高记忆力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。五子棋游戏不但容易上手,而且它区别于别的游戏,它不但能使人娱乐,而且能使人的头脑变得更加聪明。而五子棋对战有两种模式:一.人机对战;二.双人对战。这些给人无限乐趣的用途正是人工智能的杰作。正因为这样它鼓励着人们对它不断研究,这在很大程度上促进了人工智能的发展,反过来

18、人工智能的理论和技术上的突破能够使五子棋程序更完美、更受欢迎!同时,五子棋游戏程序的开发也使得五子棋这个游戏得到了广泛的推广,让世界各地的人们知道五子棋,随时地玩上五子棋,这已经不再是梦想了。五子棋游戏程序使得越来越多的人喜欢上了五子棋,热爱下五子棋,它是具有很好的带动性的。随着互联网络的不断普及,越来越多的人可以在网络上就能够与他人下五子棋了。1.3人工智能介绍人类的自然智能伴随着人类活动时时处处都存在。人类的许多活动,如解题、下猜谜、讨论、编制计划和编程,甚至驾车、骑车等,都需要智能。如果机器能够完成这些任务,那么就可以认为机器已经具有某种程度的“人工智能”。正因为这样积累了很多与人工智能

19、有关的知识。在一次历史性的聚会中人工智能诞生了。为使计算机变得更“聪明”,或者说是计算机具有智能,1965年夏季,在美国达特莫斯大学举行了一次为期两个月的夏季学术研讨会。10位来自美国数学、神经学、心理学、信息科学和计算机科学方面的杰出年轻科学家,在一起共同学习和探讨了用机器模拟人类智能的有关问题,并且麦卡锡提议正式采用了“人工智能AI(Artificial Intelligence)”这一术语。从而,一个以研究如何用机器来模拟人类智能的新兴学科-人工智能诞生了。人工智能(Artificial Intelligence) ,英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法

20、、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能的发展给五子棋赋予了新的生命。随着对人工智能的不断研究,计算机博弈也得到了飞速发展。机器博弈被认为是人工智能领域最具挑战性的研究方向之一。国际象棋的计算机博弈已经有了很长的历史,并且经历了一场波澜壮阔的搏杀,深蓝计算机的胜利也给人类留下了难以忘怀的记忆。经过30多年的研究,人工智能在现实生活中得到了不少瞩目的成果,而这些成果已经建立了一些具有一定“智能”的AI系统,例如专

21、家系统、定理证明系统、集成电路设计与分析系统、自然语言翻译系统、智能信息检索系统、疾病诊断系统等。除了这重要的成果之外,还有大受人们欢迎的“智能系统”,比如现在网络上出现的网络游戏、围棋、象棋、五子棋游戏程序等等,这些都是人工智能的成果,它们极大地改变了人们的生活、给人类带来了快乐。71.4五子棋的发展与现状1.4.1五子棋游戏规则对局开始时,先由执黑棋一方将一枚棋子落在天元点上,然后由执白棋一方在黑棋周围的交叉点上落子。但是,为了尊重对方和礼貌起见,持白棋的一方通常将盘面的第二步棋布在自己河界的一侧,即直止或斜止。此后黑白双方轮流落子,直到某一方首先在棋盘的横线、纵线或斜线上形成连续五子或五

22、子以上仅对白棋而言,则该方就算获胜。连珠五子棋的一个特点是先行的一方优势很大,因此在职业比赛中对黑方做了种种限制,以利公平竞争。目前五子棋的比赛规则如下: (1) 黑先、白后,从天元开始相互顺序落子; (2) 最先在棋盘横向、纵向或斜向形成连续的同色五个棋子的一方为胜; (3) 黑棋禁手判负、白棋无禁手。黑棋禁手有“三、三”、“四、四”和“长连”,包括“四、三、三”和“四、四、三”。黑棋只能以“四、三”取胜; (4) 如分不出胜负,则为平局; (5) 五连与禁手同时形成,判胜; (6) 黑方禁手形成时,白方应立即指出。若白方未发现或发现后不立即指出,反而继续落子,则禁手失效,不再判黑方负。1.

23、 五子棋是黑白双方或两个人之间的竞技活动,由于对黑白双方规则不同,黑棋必须先行。一般采用猜先的方法来决定谁执黑先行,即双方各抓一种颜色的几枚棋子,大数减小数,单数双方交换,偶数不换; 2. 禁手示例: 图1-1 X为三、三禁手图1-2 X为四、四禁手图1-3 X为长连禁手3. 黑方在落下关键的第五子,即形成五连的同时,如又形成禁手,此时因黑方已经成五,而“五”在五子棋中是至高无上的,故禁手失效,黑方胜; 4. 所谓黑方形成禁手,是指黑方落下一子同时形成两个或两个以上的活三、冲四及长连等。此时白方应立即指出,自然而胜。1.4.2五子棋的发展与现状五子棋是起源于中国古代的传统黑白棋种之一。现代五子

24、棋日文称之为“連珠”,英译为“RENJU”,英文称之为“GOBANG”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。到了21世纪已经出现了不少棋类,目前按棋类的属性分类如下:1.按参与人数分类(Player):单人游戏,如华容道等滑块类游戏;双人游戏,如象棋、围棋、五子棋等。在棋类中双人参与的棋类占绝大多数; 多人游戏,如跳棋。一般说来,参与人数越多,对手就越多,情况就越发复杂。2.按兵种多少分类(Pieces, Materials):单一兵种,如围棋、五子棋、苏拉卡尔塔(Surakarta)、亚马逊(Amaz

25、ons)等;多兵种,如国际象棋、中国象棋、日本将棋等。兵种的增加,意味着走法的复杂程度增加,掌握起来更加困难。3.按走法分类(Move): 走子类:开局前双方摆好,开局后轮流走动棋子。如象棋、国际象棋、跳棋等;添子类:开局前盘面无子,开局后轮流放入棋子。如围棋、五子棋、六子棋等;吃子类:对局过程中可以吃掉对方的棋子。如象棋、国际象棋、围棋等;混合类:在填子的过程中可以吃子(围棋);在走子过程中可以吃子,还可以填子(日本将棋)。通常情况弈棋双方轮流施招,各走(下)一步。但是有的棋类在一定条件下一方是可以连续施着的,即连续走多步,可成为轮(Turn)。如跳棋、西洋跳棋、黑白棋(Reverse, O

26、thello)、点格棋(Dots and Boxes)等。4.按胜负判决分类(Win-Lose-Draw): 擒获首领:象棋,国际象棋等;摆成形状:连珠类井字棋、五子棋、六子棋等;占领地域:围棋、点格棋等;剩余子粒:黑白棋、苏拉卡尔塔等;活动余地:亚马逊等;到目标地:跳棋、一字棋、牛角棋等。在所有棋类中五子棋发展最为迅速,在人群中最受欢迎!这一棋类运动已迅速在国际上发展起来。外国人都十分看好这一毫不起眼的智力游戏,并认为五子棋不仅能提高思维、开发智力、手脑并用、修身养性而且富含哲理,具有东方的神秘和西方的直观,是中西文化的交汇点。许多国家的人对五子棋都有不同的爱称,例如韩国人把五子棋称之为“情

27、侣棋”,言下之意是情人之间下五子棋有利于增加情感的交流;欧洲人称之为“中老年棋”,表示五子棋适合中老年人的生理特点和思维方式;美洲人喜欢将五子棋称之为“商业棋”,就是说商人谈生意时可边下棋边谈生意,棋下完了生意也谈成了。由此可见,尽管国度不同,语言各异,但人们都可以借助五子棋这一简单而又深奥的棋艺进行交流、比赛,增进友谊。十余年来,随着各地五子棋组织的建立和五子棋的逐步普及,各种五子棋比赛应运而生,一些民间五子棋组织自筹经费与地方有关部门合作,运作了不少民间比赛。从国内的比赛来看,北京、天津、上海、镇江、吉林、黑龙江、安徽、浙江等地先后自筹经费举办了地方性的五子棋比赛,同时,地区间的交流也不断

28、增加,如1997年举办的京津冀五子棋对抗赛、2000年京津五子棋团体对抗赛、2000年在辽宁铁岭举办的“中行杯”北方五子棋友好邀请赛、在江苏镇江举办的“一品梅杯”江苏五子棋邀请赛等。2001年国家体育总局批准试办全国性五子棋比赛后,中国棋院在2002年和2003年连续举办了两届全国五子棋邀请赛,吸引了全国各地的高手参加,取得了圆满成功。2004年10月,中国棋院又举办第四届全国五子棋邀请赛。全国五子棋邀请赛作为全国参赛人数最多,规模最大,水平最高的比赛,已经成为一项全国性五子棋的传统赛事。到了21世纪五子棋游戏在网络上非常火暴,而且在棋牌游戏里面玩家人数排名总会占到很前面,不愧是风靡全球的棋牌

29、游戏啊!在未来中,将会有越来越多的人关注五子棋,喜欢五子棋, 那么将其变为商业化也会越来越多,而且还可以以教育孩子的方式来将其嵌套进去,或者用来做测试等等。随着人工智能技术的不断进步,我相信今后的五子棋游戏将会更加精彩、更加完善,让我们拭目以待吧。121.5研究内容本游戏是在Windows环境下完成一个简易五子棋游戏的设计。五子棋是人工智能的一个成果之一,它涉及到计算机博弈理论,棋盘表示、走法生成以及搜索算法等知识,最终实现人机对战。第二章 开发环境本章主要是介绍该五子棋系统的基本功能和其结构图,并对实现该系统的开发工具、运行环境和开发语言做了较为详细的阐释。2.1五子棋程序的基本功能1.显示

30、一个十九行十九列的五子棋棋盘。2.用鼠标点击棋盘上的交叉点处,则会准确地在该位置显示出棋子。3.玩家为黑方先下棋,可以从天元(指棋盘的中心点,该点颜色够深,容易看出来)先落子,也可以从其它地方下子,电脑为白方。4.可以自动判断游戏是否结束,是否黑方或者是白方已经胜利,并且跳出对话框来提示玩家。5.在游戏棋盘上方会有一个游戏信息,这个游戏信息是用来提示当前是黑白双方的哪一方下子,玩家可以根据这个提示来下棋,而不会导致不清楚轮到哪一方下棋。6.可以重新开始游戏,并且有认输功能,在下棋时如果玩家点击认输按钮,则给出提示“您已经认输,游戏结束!”。 2.2软件开发工具及开发语言介绍2.2.1开发工具-

31、EclipseEclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。Eclipse最初是由IBM公司开发替

32、代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非盈利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。Eclipse也是一个针对Java编程的集成开发环境(IDE)。它还可以用作编写其他语言(比如C+和Ruby)的环境,合并各种工具的框架,以及创建桌面或服务器应用程序的富客户端平台。如今,Eclipse开源社区拥有数十个项目,其范围从商务智能到社会网络等各个方面。Eclipse SDK(软件开发者包)是Eclipse Platform、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起

33、提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse项目生产的软件以 GPL发布,第三方组件都有其自身的许可协议。2.2.2开发语言javaJava,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的Hot Java浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。Java语言具有以下几个特性:1、Java语言

34、是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URL Connection、Socket、 Server Socket等。4、Java语言是健壮的。Java的强类型机

35、制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。5、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。6、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。7、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。8、Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任

36、何系统中运行。9、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。10、Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。11、Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java的对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的一次编译,到处可运行的特性使得它能够提供

37、一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。1132.2.3java语言的优点 (1)面向对象Java提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而实现了代码的复用,又提供了一种动态的解决方案。(2)多线程多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他

38、们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。(3)动态性 Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且 Java通过接口来支持多重继承 ,使之比严格的类继承具有更灵活的方式和扩展性。(4)安全性 用于网络、分布环境下的Java必须要防止病毒的入侵,Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。(5)可移植性 与平台无关的特性使 Java程序可以方便地被移植到网络上的不同机器。同时,

39、Java的类库中也实现了与不同平台的接口,使这些类库可以移植。另外,Java编译器是由Java语言实现的,Java运行时系统由标准 C实现,这使得Java系统本身也具有可移植性。1102.3五子棋程序功能的设计本五子棋游戏主要有六大功能,它们分别是:开始游戏、游戏说明、认输、关于和退出。下图为软件功能结构图:五子棋重新开始重置游戏说明认输关于退出图2-1 软件功能结构图第三章 五子棋的总体设计一个好的软件产品,首先是要有一个好的人机界面,也就是说给人的第一感觉是美好的、轻松的。接着是简单明了的操作,界面上按钮够少,令玩家容易上手。因此本章主要对本软件的游戏界面、相关功能及玩家落子的实现进行详细

40、的介绍。 3.1系统包含的类及类之间的关系。本系统共包含5个Java源文件。类之间的关系如图1-1所示。图3-1 类关系3.2 Java源文件及其功能表3-1 java源文件及其功能序号文件名主要功能备注1FiveChess本程序的主函数初始化棋盘2Autoplay实现电脑可以自动下棋分为8种情况3Scan扫描整个棋盘记录连在一起的黑白棋子数为判断胜负服务4Sort实现人与电脑有次序的下棋黑棋白棋有序的下子5Evaluate电脑估计为电脑下棋提供帮助3.3项目构建思路此程序旨在打造一个小型五子棋娱乐游戏,经过认真分析和探索。终于,完成了这个小型五子棋游戏。游戏编辑思路:五子棋是一种互动性的益智

41、游戏。需要棋盘、棋子、棋手、裁判。45811首先,我们绘制一个五子棋棋盘,关键代码如下:/棋盘界面public void paint(Graphics g) / 双缓冲技术防止屏幕闪烁BufferedImage bi = new BufferedImage(500,500,BufferedImage.TYPE_INT_RGB);Graphics g2 = bi.createGraphics();g2.setColor(Color.BLACK);/ 绘制背景g2.drawImage(bgImage, 1, 20, this);/输出步数情况g2.setFont(new Font(宋体, Font

42、.BOLD, 18);g2.drawString(这是第 + step+步!, 60, 470);/输出先后信息g2.setFont(new Font(黑体, Font.BOLD, 20);g2.drawString(message, 130, 60);/ 绘制棋盘for (int i = 0; i 19; i+) g2.drawLine(10, 70 + 20 * i, 370, 70 + 20 * i);g2.drawLine(10 + 20 * i, 70, 10 + 20 * i, 430);/ 标注点位g2.fillOval(67, 127, 6, 6);g2.fillOval(30

43、7, 127, 6, 6);g2.fillOval(307, 367, 6, 6);g2.fillOval(67, 367, 6, 6);g2.fillOval(307, 247, 6, 6);g2.fillOval(187, 127, 6, 6);g2.fillOval(67, 247, 6, 6);g2.fillOval(187, 367, 6, 6);g2.fillOval(187, 247, 6, 6); g.drawImage(bi, 0, 0, this);其次,就是绘制棋子。所谓绘制棋子,就是让每一个棋子都可以显示在棋盘正确的位置上,这里就要用到棋盘的坐标表示。由于棋盘是事先准备

44、好的,所以绘制棋子坐标需要不断测试、修改才能找出正确的相关系数,才能正确地确保每个棋子落在交叉点上。两个相邻棋子的距离为20像素,所以棋盘最左上角的第一个棋子位置坐标为(10,70),初始状态各子的位置可以用(i*20+10, j*20+70)得到,所以绘制棋子就显得很容易了。Java语言具有一个相对简单的坐标系,其特点是在屏幕上所有可见点在该坐标系中都是正坐标值,即坐标原点(0,0)位于屏幕的左上角,当屏幕的右侧移动时,x坐标值变大,当向屏幕的下方移动时,y坐标变大,如图3.3:图3-3 Java坐标系图由于棋盘是十九行十九列,所以棋盘上有361个交叉点,也就是说棋盘上最多可以放361个旗子

45、。故可以用一个二维数组来表示361个棋子allChess ij,如果玩家或电脑下子,只要点击该子所在交叉点的像素坐标就可以正常落子了(其中i,j都是不大于19的非负整数)。代码如下: / 绘制全部棋子(每一个位置的)for (int i = 0; i 19; i+) for (int j = 0; j 19; j+) if (allChessij = 1) / 绘制黑子int tempX = i * 20 + 10;int tempY = j * 20 + 70;g2.fillOval(tempX - 9, tempY - 9, 18, 18);if (allChessij = 2) / 绘制

46、白子int tempX = i * 20 + 10;int tempY = j * 20 + 70;g2.setColor(Color.WHITE);g2.fillOval(tempX - 9, tempY - 9, 18, 18);g2.setColor(Color.BLACK);g2.drawOval(tempX - 9, tempY - 9, 18, 18);运行示意图如下:图3-4 棋盘棋子示意图再次,为实现双方行棋,我们实现了电脑自动下棋的函数,一共分为8种情况,关键代码如下:public class AutoPlay/实现电脑可以自动下棋 int x,y;/X统计玩家的连起来的棋子数 /Y电脑玩家的连起来的棋子数 public void autoPlay(int chesspad,int a,int b) int randomNumber=(int)(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1