基于JAVA汉诺塔游戏设计与实现.doc

上传人:h**** 文档编号:128089 上传时间:2018-07-09 格式:DOC 页数:116 大小:1.33MB
下载 相关 举报
基于JAVA汉诺塔游戏设计与实现.doc_第1页
第1页 / 共116页
基于JAVA汉诺塔游戏设计与实现.doc_第2页
第2页 / 共116页
基于JAVA汉诺塔游戏设计与实现.doc_第3页
第3页 / 共116页
基于JAVA汉诺塔游戏设计与实现.doc_第4页
第4页 / 共116页
基于JAVA汉诺塔游戏设计与实现.doc_第5页
第5页 / 共116页
点击查看更多>>
资源描述

1、 基于 JAVA 汉诺塔游戏设计与实现 院 系: 计算机与电子 系 专 业 班: 计算机应用技术 0902 班 姓 名:高亚 学 号: 20092911057 指导教师:彭 文 艺 2012 年 6 月 基于 JAVA 汉诺塔游戏设计与实现 JAVA Tower of Hanoi-based Game Design and Implementation I 摘 要 Java 是一种可以撰写跨平台应用软件的面向对象的程序设计 语言,是由 Sun Microsystems 公司于 1995年 5月推出的 Java 程序设计语言和 Java 平台(即 JavaSE, JavaEE, JavaME)的

2、总称。 Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人 PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下, Java 更具备了显著优势和广阔前景。 随着时代的不断发展进步,计算机已经融入我们的日常生活。很多时候,很多的问题想通过人的手来亲自解决已变得十分 困难了,这时我们就要运用计算机来帮我们解决这些复杂的问题,汉诺塔问题就是这类较复杂的问题。 此次,我们通过 Eclipse 软件来解决汉诺塔问题。程序运行后会出现一个界面,界面上有各种操作提示,按照提示进行各种操作后会得到汉诺塔游戏

3、的运行过程及结果。 关键词 : Java 汉诺塔 Eclipse II Abstract Java is a cross-platform application software can write object-oriented programming language by Sun Microsystems, Inc. in May 1995 launch of the Java programming language and the Java platform (namely JavaSE, JavaEE, of JavaME) the general term.Has excell

4、ent versatility, efficiency, platform portability, and security of Java technology, widely used in personal PC, the data center, game consoles, scientific supercomputers, mobile phones and the Internet, while the worlds largest developer of professional community. Global cloud computing and mobile I

5、nternet industry environment, Java has significant advantages and broad prospects. With the continual development and progress, the computer has been integrated into our daily lives. In many cases, a lot of problems to think through the human hand to personally resolve the very difficult, then we wi

6、ll use the computer to help us solve these complex issues. The Tower of Hanoi problem is that these more complex problems. The Eclipse software to solve the Tower of Hanoi problem. After running a single interface, the interface on a variety of operating tips, follow the prompts to perform various o

7、perations will be the running process and the outcome of the Tower of Hanoi game. Key words: Java Tower of Hanoi Eclipse III 目 录 摘要 . I Abstract . II 绪论 . 1 1 相关技术介绍 . 2 1.1 开发工具 . 错误 !未定义书签。 1.2 应用环境 . 2 1.3 问题的提出 . 2 1.4 任务设计内容 . 3 2 系统 需求分析 . 4 2.1 界面及其布局设计 . 4 2.2 A、 B、 C座的实现方法 . 4 2.2.1 成员变量 .

8、5 2.2.2 方法 . 5 2.3 圆盘的实现方法 . 6 2.3.1 Disc 成员变量 . 7 2.3.2 Disc 方法 7 3 系统 总体设计 . 8 3.1 总体类关系 . 8 3.2 总体功能图 . 8 3.3 总体流程图 . 9 4 系统 主要功能设计流程图 . 10 4.1 A、 B、 C座实现流程图 10 4.2 圆盘画法流程图 10 5 系统详细设计 12 6 系统测试 17 结论 . 19 致谢 . 20 参考文献 . 21 1 绪 论 汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着 64 个圆的金片,最

9、大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。解答结果请自己运行计算,程序见尾部。面对庞大的数字 (移动圆片的次数 )18446744073709551615,看来,众僧们耗尽毕生精力也不可能完成金片的移动。后来,这个传说就演变为汉诺塔游戏 : (1) 有三根杆子 A,B,C。 A 杆上有若干碟子 (2) 每次移动一块碟子 ,小的只能叠在大的上面 (3) 把所有碟子从 A杆全部移到 C杆上 经过研究发现,汉诺塔的破解很简单,就是按照移动规则向一个方向移动金片:如 3

10、 阶汉诺塔的移动: A C,A B,C B,A C,B A,B C,A C。此外,汉诺塔问题也是程序设计中的经典递归问题。 和汉诺塔故事相似的,还有另外一个印度传 说:舍罕王打算奖赏国际象棋的发明人宰相西萨班达依尔。国王问他想要什么,他对国王说:“陛下,请您在这张棋盘的第 1 个小格里赏给我一粒麦子,在第 2 个小格里给 2粒,第 3 个小格给 4粒,以后每一小格都比前一小格加一倍。请您把这样摆满棋盘上所有 64 格的麦粒,都赏给您的仆人吧!”国王觉得这个要求太容易满足了,就命令给他这些麦粒。当人们把一袋一袋的麦子搬来开始计数时,国王才发现:就是把全印度甚至全世界的麦粒全拿来,也满足不了那位宰

11、相的要求。 那么,宰相要求得到的麦粒到底有多少呢?总数为 1+2+22 + +263 =264-1和移完汉诺塔的次数一样。我们已经知道这个数字有多么大了。人们估计,全世界两千年也难以生产这么多麦子! 2 1 相关技术介绍 1.1 开发工具 Sun Microsystems 公司在推出 Java 语言的同时 ,推出了一套开发工具 JDK。 Sun提供的基于字符模式的 Java 开发工具包 JDK: Java 开发工具( JDK)是许多 Java专家最初使用的开发环境。 Java 是平台无关的语言是指用 Java 写的应用程序不用修改就可在不同的软硬件平台上运行。 Java 源程序编写借助于记事本

12、, Editpuls, UltraEdit 等第三方编辑工具。 所有的 Java 文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。 JDK 由一个标准类库和一组建立,测试及建立文档的 Java 实用程序组成。其核心 JavaAPI 是一些预定义的类库,开发人员需要用这些类来访问 Java 语言的功能。JDK 是整个 Java 的核心,包括了 Java 运行环境( Java RuntimeEnvirnment),一堆 Java工具和 Java 基础的类库 (rt.jar)。不论什么 Java 应用服务器实质都是内置了某个版本的 JDK,因此掌握 JDK 是学好 Java 的第一步。

13、 JDK 里面是 java 类库和 java 的语言规范 ,它提供的是无论你用何种开发软件写java 程序都必须用到的类库和 java 语言规范 .没有 jdk,你的 java 程序根本就不能用。 最主流的 JDK 是 Sun 公司发布的 JDK,除了 Sun 之外,还有很多公司和组织都开发了自己的 JDK,例如 IBM 公司开发的 JDK, BEA 公司的 Jrocket,还有 GNU 组织开发的 JDK 等等。其中 IBM 的 JDK 包含的 JVM( Java Virtual Machine)运行效率要比 SunJDK 包含的 JVM 高出 许多。而专门运行在 x86 平台的 Jrock

14、et 在服务端运行效率也要比 SunJDK 好很多。但不管怎么说,我们还是需要先把 Sun JDK 掌握好。 1.2 应用环境 (1) 操作系统: Windows XP 及以上版本 (2) 应用软件: JDK2.0 Eclipse6.0 1.3 问题的提出 随着计算机得普及 ,人们越来越多得接触到计算机 ,人们得生活工作中无处不有计算机得身影,人们面对长时间的难免会有倦怠的情绪,而人们大多得缓解情绪得网络活动其实并不能起到放松心情得作用。现代人得生活节奏越来越快 ,有没有一种3 快速 缓解疲倦得游戏呢 ?我们提出设计一款益智得小游戏 ,这种游戏不会花太多时间 ,同时把玩家得思维带动起来 ,达到

15、一举多得得效果。 1.4 任务设计内容 (1) 设计 Hannoi 塔中有三个座,名字分别是 A、 B和 C。初始状态是 A座上有 3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在 A 座上。用户可以用鼠标选中盘子,然后通过拖动鼠标来移动该盘子、释放鼠标来放置该盘子; (2) 程序要求用户在移动盘子过程中,不允许把大盘放置在小盘的上面,用户最终要完成的是把 A 座上的全部盘子移动到 B 座或 C座上; (3) 用 户可以通过 Hannoi 塔界面提供的菜单来选择初级、中级、高级三个级别。初级级别 A 座上有 3 个大小不等盘子、中级级别 A 座上有 4 个大小不等盘子、高级级别

16、A座上有 5 个大小不等盘子。 (4) 用户可以通过单击 Hannoi 塔界面上提供的按钮,让程序自动完成把 A座上的盘子全部移动到 C 座上; (5) 用户在移动盘子的过程中,可以随时单击 Hannoi 塔界面上提供的按钮,重新开始当前的级别; (6) 有移动记录功能,即显示用户完成移动盘子所移动的步骤; (7) 在自动移动过程中可以随时暂停、继续。 4 2 系统需求分析 2.1 界面及其布局设计 系统的整体布局为: BorderLayout 布局 , 采用了菜单、按钮、面板等组件,菜单主要包括选择级别盘子个数 ,,按钮的功能包括重新开始,自动演示,演示,暂停,继续,关闭。 2.2 A、 B

17、、 C 座的实现方法 Tower 类是 javax.swing 包中 JPanel 容器的一个子类,创建的对象 tower 是HannoiWindow 窗口的成员之一,被添加到 HannoiWindow 窗口的中心位置。标明 Tower类的主要成员变量和方法以及和 HannoiWindow 类之间组合关系的 UML 图如图 2-1所示。 j p a n e lT o w e r h a n n o i W i n d o wt o w e T o w e r图 2-1 Tower 类的 UML 图 5 2.2.1 成员变量 (1) amountOfDisc 是 int 型数据。 amountO

18、fDisc 值用来确定 tower 对象中盘子的数目, tower 对象中 Disc 类型数组 disc 的长度。 (2) disc 是 Disc 型数组,该数组的长度由 amountOfDisc 值来确定。 Disc 数组的每个单元中存放一个 Disc 对象,依次表明 tower 对象中有怎样多的盘子。 (3) towerName 是 char 型数组,长度为 3,其三个单元的默认取值依次是 A、 B和 C。 towerName 是数组的单元的值用来确定 tower 中三个座的名字。 (4) maxDiscWidth 和 minDiscWidth 的值分别用来确定最大盘子的宽度和最小盘子的宽

19、度, discHeight 的值确定每个盘子的高度。 (5) pointA、 pointB 和 pointC 都是 TowerPoint 型数组,三个数组的长度与盘子数目相同,即都是 amountOfDisc。 pointA、 pointB 和 pointC 单元都是 TowerPoint创建对象,分别用来表示 Hannoi 塔中三个座上的塔点。 A 座、 B 座和 C 座上的三个塔点分别由 pointA、 pointB 和 pointC 中的单元来确定。每个座上的三个塔点都是从座顶依次对应数组的相应单元中的 TowerPoint 对象。 (6) handleMouse 是 HandleMou

20、se 类创建的鼠标事件监视器,用来监视 disc 数组的 Disc 对象上触发的鼠标事件。 (7) autoMoveDisc 是 AutoMoveDisc 创建的对话框。通过该对话框可以实现程序自动移动盘子。 2.2.2 方法 (1) Tower(char)是构造方法,负责完成 tower 容器的初始化。 (2) tower 容器调用 setAmountOfDisc(int)方法可以设置 amountOfDisc 的值。 (3) tower 容器调用 setMaxDiscWidth(int)方法可以设置最大的盘子的大小。 (4) tower 容器调用 setMinDiscWidth(int)方法可以设置最小的盘子的大小。 (5) tower 容器调用 setDiscHeight(int)方法可以设置盘子的高度。 (6) tower 容器调用 putDiscOnTower ()方法可以将盘子放置在 Hannoi 塔的 A座上,即在 pointA 指定的塔点上放置 disc 数组的成员。 (7) tower 容器调用 getAutoMoveDisc ()方法返回其中的 AutoMoveDisc 对象:autoMoveDisc。 tower 是 HannoiWindow 窗口中的成员,当用户单击 HannoiWindow 窗

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

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。