收藏 分享(赏)

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

上传人:dzzj200808 文档编号:2779212 上传时间:2018-09-27 格式:DOC 页数:47 大小:980KB
下载 相关 举报
毕业论文---基于Java小游戏开发—五子棋.doc_第1页
第1页 / 共47页
毕业论文---基于Java小游戏开发—五子棋.doc_第2页
第2页 / 共47页
毕业论文---基于Java小游戏开发—五子棋.doc_第3页
第3页 / 共47页
毕业论文---基于Java小游戏开发—五子棋.doc_第4页
第4页 / 共47页
毕业论文---基于Java小游戏开发—五子棋.doc_第5页
第5页 / 共47页
点击查看更多>>
资源描述

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

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

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

4、etition 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

5、everyone 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 f

6、ights. 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 playe

7、r to play 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 wi

8、ll a judgment, 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

9、game the 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

10、 arbitral 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

11、 horizontal 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 软件

12、开发工具及开发语言介绍 7第三章 五子棋的总体设计 .113.1 系统包含的类及类之间的关系。 .113.2 Java 源文件及其功能 113.3 项目构建思路 .11第四章 模块功能介绍 .194.1 主类 Chess .194.2 类 Autoplay 254.3 类 Scan 25第五章 五子棋的 AI 算法 265.1 人机博弈的要点 .265.2 算法设计 26第六章 软件测试 .306.1 软件测试的定义 .306.2 界面测试 .306.3 数据的测试 .336.4 用户验收测试 .34附 录 .36参考文献 .39致 谢 .40江西理工大学 2012 届毕业设计(论文)1第一章

13、 概述本章主要介绍毕业设计的开发背景、课题意义,有关计算机人工智能方面的知识以及五子棋的发展与现状,以及毕业设计的研究内容、方向。 1.1开发背景随着计算机技术和互联网的飞速发展,游戏软件是当今世界发展最迅速,最有影响力,最有潜力与活力的领域之一电脑游戏的出现为人们提供了新的娱乐平台,丰富了人们的业余生活。因此与游戏有关的软件深受广大青少年的喜爱。随着近几年来软件技术的不断进步、不断发展,软件游戏的操作要求越来越简单,大多数游戏普通人学几分钟就能会玩,甚至连老年人也慢慢爱上了它。第二次世界大战以后,电子计算机技术得到了突飞猛进的发展在众多国家中美国的计算机技术发展最为迅速。1946 年 2 月

14、,世界上第一台电子数字计算机(ENIAC)在美国宾夕法尼亚大学建造完成。ENIAC 机的问世,表明了电子数字计算机时代的到来,具有划时代的伟大意义,是科学技术发展史上的重大里程碑。我国也不落后,在 1956 年成功研制了国产计算机。1958 年和 1959 年我国先后自主研制成功国产小型和大型电子管计算机。后来出现了集成电路和大规模集成电路,使电子计算机一代一代实现更新,性能越来越高,计算速度越来越快,硬件方面的不断发展促使了软件技术也迅速发展。在美国,集中了许多计算机软件的设计人才,他们工作之余,时常喜爱编一种能与人斗智的“游戏”,以此来锻炼编程的能力这种“游戏”花样繁多,但其特点都是利用计

15、算机软件事先设计好的“分析”“判断”能力反过来与人较量由于不断修改更新,使计算机的“智力”水平与人难分高低到了 90 年代,游戏软件已经为世界各国的人使用,所谓游戏软件通常是指用各种程序和动画效果相结合起来的软件产品,我们称之为“游戏软件” 。目前,在网络上我们经常看到的大型 3D 网络游戏和WEBGAME 网页游戏等都是通过用 3DMAX、MAYA、FLASH、等动画软件和JAVA、C+、VB 等程序语言相结合而开发出来的,所以叫游戏软件。其中BLACKISLAND 和 Blizzard 这两个强大的游戏制作组对游戏软件的发展起到了巨大的带动作用,还有中国的洛河工作室在国内也起到了巨大作用,

16、他们让很多的人喜欢上了游戏软件,打开了这个市场。如今游戏软件产业已经受到了广泛的关注,它年轻有潜力而且吸引人,让人们日益丰富的生活需求得以满足。而五子棋游戏的诞生更是吸引着不同年龄段的人群,无论男女老少都可以玩,都喜欢玩,而当前微型计算机已经在广大人群中流行着,用电脑来下五子棋更是一种时尚。现在网络上出现了各种各样的五子棋软件,有大师级的、新手级的等等。所有这些都满足了不同人群的需要,所以当前五子棋越来越被许江西理工大学 2012 届毕业设计(论文)2多人所熟悉。目前的五子棋程序的发展也非常快,从最初的双人发展到人机(有 AI) ,然后到现在的网络对战,已经受到越来越多人的喜爱和重视。 91.

17、2课题意义人类社会经历了五千多年的农业文明时代,又经历了三百多年的工业文明时代。经过漫长时间的发展,人类文明取得了不可想象的进步,人也变的越来越聪明了。人类之所以变得聪明,是因为我们人类一直不断地在实践中思考,在思考中实践。五子棋不仅能增强思维能力,提高记忆力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快” ,又有古典哲学的高深学问“阴阳易理” ;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。五子棋游戏不但容易上

18、手,而且它区别于别的游戏,它不但能使人娱乐,而且能使人的头脑变得更加聪明。而五子棋对战有两种模式:一.人机对战;二.双人对战。这些给人无限乐趣的用途正是人工智能的杰作。正因为这样它鼓励着人们对它不断研究,这在很大程度上促进了人工智能的发展,反过来人工智能的理论和技术上的突破能够使五子棋程序更完美、更受欢迎!同时,五子棋游戏程序的开发也使得五子棋这个游戏得到了广泛的推广,让世界各地的人们知道五子棋,随时地玩上五子棋,这已经不再是梦想了。五子棋游戏程序使得越来越多的人喜欢上了五子棋,热爱下五子棋,它是具有很好的带动性的。随着互联网络的不断普及,越来越多的人可以在网络上就能够与他人下五子棋了。1.3

19、人工智能介绍人类的自然智能伴随着人类活动时时处处都存在。人类的许多活动,如解题、下猜谜、讨论、编制计划和编程,甚至驾车、骑车等,都需要智能。如果机器能够完成这些任务,那么就可以认为机器已经具有某种程度的“人工智能” 。正因为这样积累了很多与人工智能有关的知识。在一次历史性的聚会中人工智能诞生了。为使计算机变得更“聪明” ,或者说是计算机具有智能,1965 年夏季,在美国达特莫斯大学举行了一次为期两个月的夏季学术研讨会。10 位来自美国数学、神经学、心理学、信息科学和计算机科学方面的杰出年轻科学家,在一起共同学习和探讨了用机器模拟人类智能的有关问题,并且麦卡锡提议正江西理工大学 2012 届毕业

20、设计(论文)3式采用了“人工智能 AI(Artificial Intelligence)”这一术语。从而,一个以研究如何用机器来模拟人类智能的新兴学科-人工智能诞生了。人工智能(Artificial Intelligence) ,英文缩写为 AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能的发展给五子棋赋予了新的生命。随着对人工智能的不断研究,计算机博弈也得到

21、了飞速发展。机器博弈被认为是人工智能领域最具挑战性的研究方向之一。国际象棋的计算机博弈已经有了很长的历史,并且经历了一场波澜壮阔的“搏杀“,“深蓝“计算机的胜利也给人类留下了难以忘怀的记忆。经过 30 多年的研究,人工智能在现实生活中得到了不少瞩目的成果,而这些成果已经建立了一些具有一定“智能”的AI 系统,例如专家系统、定理证明系统、集成电路设计与分析系统、自然语言翻译系统、智能信息检索系统、疾病诊断系统等。除了这重要的成果之外,还有大受人们欢迎的“智能系统” ,比如现在网络上出现的网络游戏、围棋、象棋、五子棋游戏程序等等,这些都是人工智能的成果,它们极大地改变了人们的生活、给人类带来了快乐

22、。 71.4五子棋的发展与现状1.4.1五子棋游戏规则对局开始时,先由执黑棋一方将一枚棋子落在天元点上,然后由执白棋一方在黑棋周围的交叉点上落子。但是,为了尊重对方和礼貌起见,持白棋的一方通常将盘面的第二步棋布在自己河界的一侧,即直止或斜止。此后黑白双方轮流落子,直到某一方首先在棋盘的横线、纵线或斜线上形成连续五子或五子以上仅对白棋而言 ,则该方就算获胜。连珠五子棋的一个特点是先行的一方优势很大,因此在职业比赛中对黑方做了种种限制,以利公平竞争。目前五子棋的比赛规则如下: (1) 黑先、白后,从天元开始相互顺序落子; (2) 最先在棋盘横向、纵向或斜向形成连续的同色五个棋子的一方为胜; (3)

23、 黑棋禁手判负、白棋无禁手。黑棋禁手有“三、三” 、 “四、四”和“长连”,包括“四、三、三”和“四、四、三” 。黑棋只能以“四、三”取胜;(4) 如分不出胜负,则为平局; (5) 五连与禁手同时形成,判胜; 江西理工大学 2012 届毕业设计(论文)4(6) 黑方禁手形成时,白方应立即指出。若白方未发现或发现后不立即指出,反而继续落子,则禁手失效,不再判黑方负。1. 五子棋是黑白双方或两个人之间的竞技活动,由于对黑白双方规则不同,黑棋必须先行。一般采用猜先的方法来决定谁执黑先行,即双方各抓一种颜色的几枚棋子,大数减小数,单数双方交换,偶数不换; 2. 禁手示例: 图 1-1 X 为三、三禁手

24、图 1-2 X 为四、四禁手图 1-3 X 为长连禁手3. 黑方在落下关键的第五子,即形成五连的同时,如又形成禁手,此时因黑方已经成五,而“五”在五子棋中是至高无上的,故禁手失效,黑方胜; 4. 所谓黑方形成禁手,是指黑方落下一子同时形成两个或两个以上的活三、冲四及长连等。此时白方应立即指出,自然而胜。1.4.2五子棋的发展与现状五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠” ,英译为“RENJU” ,英文称之为“GOBANG”或“FIR” (Five in a Row的缩写) ,亦有“连五子” 、 “五子连” 、 “串珠” 、 “五目” 、 “五目碰” 、 “五格”等

25、多种称谓。江西理工大学 2012 届毕业设计(论文)5到了 21 世纪已经出现了不少棋类,目前按棋类的属性分类如下:1.按参与人数分类(Player):单人游戏,如华容道等滑块类游戏;双人游戏,如象棋、围棋、五子棋等。在棋类中双人参与的棋类占绝大多数; 多人游戏,如跳棋。一般说来,参与人数越多,对手就越多,情况就越发复杂。2.按兵种多少分类(Pieces, Materials):单一兵种,如围棋、五子棋、苏拉卡尔塔(Surakarta) 、亚马逊(Amazons)等;多兵种,如国际象棋、中国象棋、日本将棋等。兵种的增加,意味着走法的复杂程度增加,掌握起来更加困难。3.按走法分类(Move):

26、走子类:开局前双方摆好,开局后轮流走动棋子。如象棋、国际象棋、跳棋等;添子类:开局前盘面无子,开局后轮流放入棋子。如围棋、五子棋、六子棋等;吃子类:对局过程中可以吃掉对方的棋子。如象棋、国际象棋、围棋等;混合类:在填子的过程中可以吃子(围棋) ;在走子过程中可以吃子,还可以填子(日本将棋) 。通常情况弈棋双方轮流施招,各走(下)一步。但是有的棋类在一定条件下一方是可以连续施着的,即连续走多步,可成为轮(Turn) 。如跳棋、西洋跳棋、黑白棋(Reverse, Othello) 、点格棋(Dots and Boxes)等。4.按胜负判决分类(Win-Lose-Draw): 擒获首领:象棋,国际象

27、棋等;摆成形状:连珠类井字棋、五子棋、六子棋等;占领地域:围棋、点格棋等;剩余子粒:黑白棋、苏拉卡尔塔等;活动余地:亚马逊等;到目标地:跳棋、一字棋、牛角棋等。在所有棋类中五子棋发展最为迅速,在人群中最受欢迎!这一棋类运动已迅速在国际上发展起来。外国人都十分看好这一毫不起眼的智力游戏,并认为五子棋不仅能提高思维、开发智力、手脑并用、修身养性而且富含哲理,具有东方的神秘和西方的直观,是中西文化的交汇点。许多国家的人对五子棋都有不同的爱称,例如韩国人把五子棋称之为“情侣棋” ,言下江西理工大学 2012 届毕业设计(论文)6之意是情人之间下五子棋有利于增加情感的交流;欧洲人称之为“中老年棋” ,表

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

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

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

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

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

33、开发替代商业软件 Visual Age for Java 的下一代 IDE 开发环境,2001 年 11 月贡献给开源社区,现在它由非盈利软件供应商联盟 Eclipse 基金会(Eclipse Foundation)管理。Eclipse 也是一个针对 Java 编程的集成开发环境(IDE)。它还可以用作编写其他语言(比如 C+和 Ruby)的环境,合并各种工具的框架,以及创建桌面或服务器应用程序的富客户端平台。如今,Eclipse 开源社区拥有数十个项目,其范围从商务智能到社会网络等各个方面。江西理工大学 2012 届毕业设计(论文)8Eclipse SDK(软件开发者包)是 Eclipse

34、Platform、JDT 和 PDE 所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到 Eclipse Platform 中的工具。Eclipse SDK 由 Eclipse 项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse 项目生产的软件以 GPL 发布,第三方组件都有其自身的许可协议。2.2.2开发语言javaJava,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台的总称。用 Java 实现的 Hot Java 浏览器(支持 Ja

35、va applet)显示了 Java 的魅力:跨平台、动态的 Web、Internet 计算。 Java 语言具有以下几个特性:1、Java 语言是简单的。Java 语言的语法与 C 语言和 C+语言很接近,使得大多数程序员很容易学习和使用 Java。2、Java 语言是一个面向对象的。Java 语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为 implements) 。3、Java 语言是分布式的。Java 语言支持 Internet 应用的开发,在基本的Java 应用编程接口中有一个网络应用编程接口(java

36、net) ,它提供了用于网络应用编程的类库,包括 URL、URL Connection、Socket、 Server Socket 等。4、Java 语言是健壮的。Java 的强类型机制、异常处理、废料的自动收集等是 Java 程序健壮性的重要保证。5、Java 语言是安全的。Java 通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。6、Java 语言是体系结构中立的。Java 程序(后缀为 java 的文件)在Java 平台上被编译为体系结构中立的字节码格式(后缀为 class 的文件), 然后可以在实现这个 Java 平台的任何系统中运行。7、Java 语言是可

37、移植的。这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。8、Java 语言是解释型的。如前所述,Java 程序在 Java 平台上被编译为字节码格式, 然后可以在实现这个 Java 平台的任何系统中运行。9、Java 是高性能的。与那些解释型的高级脚本语言相比,Java 的确是高性能的。10、Java 语言是多线程的。在 Java 语言中,线程是一种特殊的对象,它江西理工大学 2012 届毕业设计(论文)9必须由 Thread 类或其子(孙)类来创建。11、Java 语言是动态的。Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能

38、够动态地被载入到运行环境,也可以通过网络来载入所需要的类。Java 语言的优良特性使得 Java 应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java 的对象技术的全面支持和 Java 平台内嵌的 API能缩短应用系统的开发时间并降低成本。Java 的一次编译,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是 Java 企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。 1132.2.3java语言的优点 (1)面向对象Java 提供了简单的类机制和动态的构架模型。对

39、象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而实现了代码的复用,又提供了一种动态的解决方案。(2)多线程多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。(3)动态性Java 的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且 Java 通过接口来支持多重继承 ,使之比严格的类继承具有更灵活的方式和扩

40、展性。(4)安全性用于网络、分布环境下的 Java 必须要防止病毒的入侵,Java 不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。(5)可移植性与平台无关的特性使 Java 程序可以方便地被移植到网络上的不同机器。同时,Java 的类库中也实现了与不同平台的接口,使这些类库可以移植。另外,Java 编译器是由 Java 语言实现的,Java 运行时系统由标准 C 实现,这使得Java 系统本身也具有可移植性。 110江西理工大学 2012 届毕业设计(论文)102.3五子棋程序功能的设计本五子

41、棋游戏主要有六大功能,它们分别是:开始游戏、游戏说明、认输、关于和退出。下图为软件功能结构图:五子棋重新开始重置游戏说明认输关于退出图 2-1 软件功能结构图江西理工大学 2012 届毕业设计(论文)11第三章 五子棋的总体设计一个好的软件产品,首先是要有一个好的人机界面,也就是说给人的第一感觉是美好的、轻松的。接着是简单明了的操作,界面上按钮够少,令玩家容易上手。因此本章主要对本软件的游戏界面、相关功能及玩家落子的实现进行详细的介绍。3.1系统包含的类及类之间的关系。本系统共包含 5 个 Java 源文件。类之间的关系如图 1-1 所示。图 3-1 类关系3.2 Java源文件及其功能表 3

42、-1 java 源文件及其功能序号 文件名 主要功能 备注1 FiveChess 本程序的主函数 初始化棋盘2 Autoplay 实现电脑可以自动下棋 分为 8 种情况3 Scan扫描整个棋盘记录连在一起的黑白棋子数 为判断胜负服务4 Sort 实现人与电脑有次序的下棋 黑棋白棋有序的下子5 Evaluate 电脑估计 为电脑下棋提供帮助3.3项目构建思路此程序旨在打造一个小型五子棋娱乐游戏,经过认真分析和探索。终于,完成了这个小型五子棋游戏。游戏编辑思路:五子棋是一种互动性的益智游戏。需要棋盘、棋子、棋手、裁判。 45811首先,我们绘制一个五子棋棋盘,关键代码如下:江西理工大学 2012

43、届毕业设计(论文)12/棋盘界面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.BOLD, 18);g2.drawString(“这是第“

44、 + step+“步!“, 60, 470);/输出先后信息g2.setFont(new Font(“黑体 “, Font.BOLD, 20);g2.drawString(message, 130, 60);/ 绘制棋盘for (int i = 0; i =0 y=b-1;break;else if(a-2=0 y=b-2;break; 江西理工大学 2012 届毕业设计(论文)15else case(2):/向左if(a-1=0 y=b;break;else if(a-2=0 y=b;break;else case(3):/左下if(a-1=0 y=b-1;break;else if( a+

45、2=0 y=b-2;break;else case(8):/向上if(b-1=0 y=b-1;break;else if(b-2=0 y=b-2;break;else 第四,为规范双方行棋的先后顺序,我们实现了一个判断函数,关键代码如下:public class Sort /实现人与电脑有次序的下棋public void sort(int shape) int temp; for(int i=0;i=h;w-)if(shapeijw-1370 | e.getY()430)return;/取整,让棋子落在交叉线上if (x1-10)%2010)x1+=20;if(y1-70)%2010)y1+=

46、20;x1=(x1-10)/20*20;y1=(y1-70)/20*20;set_Qizi(x1,y1); public void mouseEntered(MouseEvent e) public void mouseReleased(MouseEvent e) public void mouseExited(MouseEvent e) /点击不同坐标的功能键public void mousePressed(MouseEvent e) System.out.println(“X:“+e.getX()+“-“+“Y:“+e.getY(); / 点击 开始游戏 按钮if (e.getX() =

47、400 System.exit(0); this.repaint();江西理工大学 2012 届毕业设计(论文)254.2类 Autoplay(1)成员变量见表 4-2表 4-2 主要成员变量成员变量描述 变量类型 名称统计玩家连起来的棋子数 int X电脑玩家连起来的棋子数 Int Y(2)方法见表 4-3表 4-3 主要方法方法名 功能 备注Void autoPlay(int chesspad,int a,int b)分情况实现电脑自动下棋使用 switch 语句分为8 种情况来下棋4.3类 Scan(1)成员变量见表 4-4表 4-4 Scan成员变量描述 变量类型 名称统计棋盘种五个连起来的棋子数 数组 int shape控制行数 int i控制列数 int j(2)方法见表 4-5表 4-5 Scan方法名 功能 备注void scan(int chesspad,int colour)判断棋盘上连在一起的黑白棋子个数。

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报