java汉诺塔课程设计心得体会.docx

上传人:b****4 文档编号:24350003 上传时间:2023-05-26 格式:DOCX 页数:12 大小:20.74KB
下载 相关 举报
java汉诺塔课程设计心得体会.docx_第1页
第1页 / 共12页
java汉诺塔课程设计心得体会.docx_第2页
第2页 / 共12页
java汉诺塔课程设计心得体会.docx_第3页
第3页 / 共12页
java汉诺塔课程设计心得体会.docx_第4页
第4页 / 共12页
java汉诺塔课程设计心得体会.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

java汉诺塔课程设计心得体会.docx

《java汉诺塔课程设计心得体会.docx》由会员分享,可在线阅读,更多相关《java汉诺塔课程设计心得体会.docx(12页珍藏版)》请在冰豆网上搜索。

java汉诺塔课程设计心得体会.docx

java汉诺塔课程设计心得体会

java,汉诺塔,课程设计,心得体会

  篇一:

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

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

  院系:

计算机与电子系

  专业班:

计算机应用技术0902班

  姓名:

高亚

  学号:

XX2911057

  指导教师:

彭文艺

  XX年6月

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

  JAVATowerofHanoi-basedGame

  DesignandImplementation

  摘要

  Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。

Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

  随着时代的不断发展进步,计算机已经融入我们的日常生活。

很多时候,很多的问题想通过人的手来亲自解决已变得十分困难了,这时我们就要运用计算机来帮我们解决这些复杂的问题,汉诺塔问题就是这类较复杂的问题。

  此次,我们通过Eclipse软件来解决汉诺塔问题。

程序运行后会出现一个界面,界面上有各种操作提示,按照提示进行各种操作后会得到汉诺塔游戏的运行过程及结果。

  关键词:

Java汉诺塔Eclipse

  Abstract

  Javaisacross-platformapplicationsoftwarecanwriteobject-orientedprogramminglanguagebySunMicrosystems,Inc.inMay1995launchoftheJavaprogramminglanguageandtheJavaplatform(namelyJavaSE,JavaEE,ofJavaME)thegeneralexcellentversatility,efficiency,platformportability,andsecurityofJavatechnology,widelyusedinpersonalPC,thedatacenter,gameconsoles,scientificsupercomputers,mobilephonesandtheInternet,whiletheworld'slargestdeveloperofprofessionalcommunity.GlobalcloudcomputingandmobileInternetindustryenvironment,Javahassignificantadvantagesandbroadprospects.

  Withthecontinualdevelopmentandprogress,thecomputerhasbeenintegratedintoourdailylives.Inmanycases,alotofproblemstothinkthroughthehumanhandtopersonallyresolvetheverydifficult,thenwewillusethecomputertohelpussolvethesecomplexissues.TheTowerofHanoiproblemisthatthesemorecomplexproblems.

  TheEclipsesoftwaretosolvetheTowerofHanoiproblem.Afterrunningasingleinterface,theinterfaceonavarietyofoperatingtips,followthepromptstoperformvariousoperationswillbetherunningprocessandtheoutcomeoftheTowerofHanoigame.

  Keywords:

JavaTowerofHanoiEclipse

  目录

  摘要....................................................................................................................IAbstract.............................................................................................................II绪论....................................................................................................................11相关技术介绍.................................................................................................2

  开发工具........................................................................错误!

未定义书签。

  应用环境......................................................................................................2

  问题的提出..................................................................................................2

  任务设计内容...............................................................................................32系统需求分析.................................................................................................4

  界面及其布局设计........................................................................................4

  A、B、C座的实现方法..................................................................................4

  成员变量...................................................................................................5

  方法..........................................................................................................5

  圆盘的实现方法...........................................................................................6

  Disc成员变量...........................................................................................7

  Disc方法………………………………………………………………73系统总体设计.................................................................................................8

  总体类关系..................................................................................................8

  总体功能图..................................................................................................8

  总体流程图..................................................................................................94系统主要功能设计流程图..............................................................................10

  A、B、C座实现流程图……………………………………………………10

  圆盘画法流程图…………………………………………………………105系统详细设计……………………………………………………………126系统测试…………………………………………………………………17结论..................................................................................................................19致谢..................................................................................................................20参考文献...........................................................................................................21

  篇二:

Hannoi塔java课程设计

  文献综述

  题

  学院

  专

  班

  姓

  目:

Hannoi塔游戏和其java名称:

电子与信息工程学院业:

计算机科学与技术级:

计科12-3名:

12401010323

  定稿日期:

XX年1月10日

  1概述

  课程设计目的

  按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。

同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

  课程设计内容

  我设计的Hannoi塔,除了要编写的6个java文件所给出的类外,还需要java系统提供的一些重要的类,如JButton,JCheckBox等。

汉诺塔中有三个座,名字分别为A,B,C。

刚开始的时候A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上。

用户可以用鼠标选中盘子,然后通过拖动鼠标来移动盘子。

释放鼠标来放置该盘子。

程序要求用户在移动盘子的过程中,不允许吧大盘子放置在小盘子的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上

  2系统需求分析

  系统目标

  可以正常运行程序,并且按照设计目的预想的完成具体功能。

  主体功能

  1)设计GUI界面的Hannoi塔。

汉诺塔中有三个座,名字分别为A,B,C。

初始状态时A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上。

用户可以用鼠标选中盘子,然后通过拖动鼠标来移动盘子。

释放鼠标来放置该盘子。

  2)程序要求用户在移动盘子的过程中,不允许吧大盘子放置在小盘子的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上。

  3)用户可以通过Hannoi塔界面的提供的改变盘子数目功能来改变盘子的数目,同时可以改变盘子的大小以及改变盘子和界面的背景颜色,而且还可以选择控制背景音乐的播放。

  4)用户可以通过单击Hannoi塔界面上提供的按钮,让程序自动完成把A座上的盘子全部移动到C座上。

  5)用户在移动盘子的过程中,可以随时单击Hannoi塔界面上提供的按钮,重新开始。

  2

  开发环境

  JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。

3系统概要设计

  系统的功能模块划分

  1)(主类)

  HannoiWindow类负责创建Hannoi塔的主窗口,该类含有main方法,Hannoi塔从该类开始执行。

HannoiWindow类的成员变量中有五种重要类型的对象、一个int基本型数据和一个char型数组。

五种类型的对象分别是:

Tower、JmenuBar、JmenuItem和Jbutton对象。

  HannoiWindow类的主要成员的作用将在后面的详细设计中阐述。

  2)

  Tower类是包中Jpanel容器的子类,创建的容器被添加到HannoiWindow窗口的中心。

Tower类的成员变量中有四种重要类型的对象、一个int基本型数据和一个char型数组。

四种类型的对象分别是:

Disc、TowerPoint、HandleMouse、和AutoMoveDisc对象。

Tower类的主要成员的作用将在后面的详细设计中阐述。

  3)

  Disc类是Jbutton的一个子类,创建的对象时Tower容器中的一个按钮,用来表示Tower中的“盘子”。

  4)

  TowerPoint类负责在Tower中创建表示位置的塔点对象。

  5)

  HandleMouse类创建的对象负责处理鼠标事件。

  6)

  AutoMoveDisc类创建的对象负责自动移动盘子从一个座到另一个座。

  3

  4系统详细设计

  总体功能设计

  在设计hannoi塔时,需编写6个java源文件:

、、、、和。

  Hannoi塔除了要编写的6个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JMenuBar、JMenu、JMenuItem和JButton。

Hannoi塔所用到的一些重要的类以及之间的组合关系。

  4HannoiWindow类图HannoiWindow类的UML图图类之间的组合关系

  Tower类

  1、成员变量

  

(1)amountOfDisc是int型数据。

amountOfDisc值用来确定tower对象中盘子的数目,即确定tower对象中Disc类型数组disc的长度。

  

(2)disc是Disc型数组,该数组的长度由amountOfDisc值来确定。

Disc数组的每个单元中存放一个Disc对象,依次表明tower对象中有怎样多的盘子。

  (3)towerName是char型数组,长度为3,其三个单元的默认取值依次是A、B和C。

towerName是数组的单元的值用来确定tower中三个座的名字。

  (4)maxDiscWidth和minDiscWidth的值分别用来确定最大盘子的宽度和最小盘子的宽度,discHeight的值确定每个盘子的高度。

  (5)pointA、pointB和pointC都是TowerPoint型数组,三个数组的长度与盘子数目相同,即都是amountOfDisc。

pointA、pointB和pointC单元都是TowerPoint创建对象,分别用来表示Hannoi塔中三个座上的塔点。

A座、B座和C座上的三个塔点分别由pointA、pointB和pointC中的单元来确定。

每个座上的三个塔点都是从座顶依次对应数组的相应单元中的TowerPoint对象。

例如,A座最上面的塔点是pointA[0],中间的塔点是pointA[1],最下面的塔点是pointA[2]。

  (6)handleMouse是HandleMouse类创建的鼠标事件监视器,用来监视disc数组的Disc对象上触发的鼠标事件。

  (7)autoMoveDisc是AutoMoveDisc创建的对话框。

通过该对话框可以实现程序自动移动盘子。

  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窗口中的autoButton按钮时,窗口中的actionPerformed(ActionEvent)方法将被执行,该方法所进行的操作是让tower对象返回其中的AutoMoveDisc对象,该对象是一个对话框,用户可以通过该对话框让程序自动地移动盘子。

  (8)tower容器调用removeDisk()方法可以移调tower容器中的盘子。

  (9)tower容器调用paintComponent(Graphics)方法绘制出塔点的位置和必要的视图。

  5

  篇三:

JAVA汉诺塔图解

  JAVA汉诺塔图解

  一位法国数学家曾编写过一个印度的古老传说:

在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。

印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。

不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:

一次只移动一片,不管在哪根针上,小片必须在大片上面。

僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。

  不管这个传说的可信度有多大,如果考虑一下把64片金片,由一根针上移到另一根针上,并且始终保持上小下大的顺序。

这需要多少次移动呢?

这里需要递归的方法。

假设有n片,移动次数是f(n).显然f

(1)=1,f

(2)=3,f(3)=7,且f(k+1)=2*f(k)+1。

此后不难证明f(n)=2^n-1。

n=64时,

  f(64)=2^64-1=18446744073709551615

  假如每秒钟一次,共需多长时间呢?

一个平年365天有31536000秒,闰年366天有31622400秒,平均每年31556952秒,计算一下,

  18446744073709551615/31556952=年

  这表明移完这些金片需要5845亿年以上,而地球存在至今不过45亿年,太阳系的预期寿命据说也就是数百亿年。

真的过了5845亿年,不说太阳系和银河系,至少地球上的一切生命,连同梵塔、庙宇等,都早已经灰飞烟灭。

  汉诺塔问题,算法分析如下,设A上有n个盘子。

  如果n=1,则将圆盘从A直接移动到C。

  如果n=2,则:

  

(1)将A上的n-1(等于1)个圆盘移到B上;

  

(2)再将A上的一个圆盘移到C上;

  (3)最后将B上的n-1(等于1)个圆盘移到C上。

  如果n=3,则:

  A)将A上的n-1(等于2,令其为n`)个圆盘移到B(借助于C),步骤如下:

  

(1)将A上的n`-1(等于1)个圆盘移到C上。

  

(2)将A上的一个圆盘移到B。

  (3)将C上的n`-1(等于1)个圆盘移到B。

  B)将A上的一个圆盘移到C。

  C)将B上的n-1(等于2,令其为n`)个圆盘移到C(借助A),步骤如下:

  

(1)将B上的n`-1(等于1)个圆盘移到A。

  

(2)将B上的一个盘子移到C。

  (3)将A上的n`-(转载于:

小龙文档网:

java,汉诺塔,课程设计,心得体会)1(等于1)个圆盘移到C。

到此,完成了三个圆盘的移动过程。

  从上面分析可以看出,当n大于等于2时,移动的过程可分解为三个步骤:

第一步把A上的n-1个圆盘移到B上;第二步把A上的一个圆盘移到C上;第三步把

  B上的n-1个圆盘移到C上;其中第一步和第三步是类同的。

当n=3时,第一步和第三步又分解为类同的三步,即把n`-1个圆盘从一个针移到另一个针上,这里的n`=n-1。

  JAVA源代码

  import;

  import;

  publicclassHanoi

  {

  staticint[]a;

  staticint[]b;

  staticint[]c;

  staticintnum;

  staticcharA='A';

  staticcharB='B';

  staticcharC='C';

  publicstaticintget()

  {

  ("欢迎使用汉诺塔游戏图解,请输入汉诺塔层数");Scannersc

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1