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

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

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

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

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

院系:计算机与电子系

专业班:计算机应用技术0902班

姓名:高亚

学号:XX2911057

指导教师:彭文艺

XX 年6月

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

JAVA Tower of Hanoi-based Game

Design and Implementation

摘要

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏

控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

随着时代的不断发展进步,计算机已经融入我们的日常生活。很多时候,很多的问题想通过人的手来亲自解决已变得十分困难了,这时我们就要运用计算机来帮我们解决这些复杂的问题,汉诺塔问题就是这类较复杂的问题。

此次,我们通过Eclipse软件来解决汉诺塔问题。程序运行后会出现一个界面,界面上有各种操作提示,按照提示进行各种操作后会得到汉诺塔游戏的运行过程及结果。

关键词: Java 汉诺塔 Eclipse

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 excellent 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 world's largest developer of professional community. Global cloud computing and mobile Internet 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 will 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 operations will be the running process and the outcome of the Tower of Hanoi game.

Key words: Java Tower of Hanoi Eclipse

目录

摘要 ................................................ ................................................... ................. I Abstract .......................................... ................................................... ................ II 绪论 ................................................ ................................................... ................. 1 1 相关技术介绍 ................................................ . (2)

开发工具................................................. ....................... 错误!未定义书签。

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

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

(2)

任务设计内容 ................................................ ............................................... 3 2 系统需求分析 ................................................ . (4)

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

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

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

5

方法 ................................................ ...................................................

(5)

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

Disc成员变量 ................................................ . (7)

Disc方法 (7)

3 系统总体设计 ................................................ . (8)

总体类关系 ................................................ .. (8)

总体功能图 ................................................ .. (8)

总体流程图 ................................................

(9)

4 系统主要功能设计流程图 ................................................ (10)

A、B、C座实现流程图 (10)

圆盘画法流程图…………………………………………………………10 5 系统详细设计……………………………………………………………12 6 系统测试…………………………………………………………………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塔所用到的一些重要的类以及之间的组合关系。

4 HannoiWindow类图 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 ;

public class Hanoi

{

static int[] a;

static int[] b;

static int[] c;

static int num;

static char A='A';

static char B='B';

static char C='C';

public static int get()

{

("欢迎使用汉诺塔游戏图解,请输入汉诺塔层数"); Scanner scanner = new Scanner(); //读入语句

num= ();

("\n");return num;

}

public static void array(int n) //初始化数组,“三根柱子”,三个数组,ABC {a= new int[n];

b= new int[n];

c= new int[n];

for(int i=0;i {

a[i]=i+1;

}

(b,0); //数组B,C填满0,表示空柱子

(c,0);

}

//移动圆盘,根据移动方向,判断变化数组的序号public static int left(int[] s,int n){ int c = 0; for(int i=0;i=0;i--)if (s[i]==0) { c=i; break; } return c; }//汉诺塔圆盘移动主要实现算法 public static void run(int[]x,int[]y,int[]z,int n,char X,char Y,char Z) { if (n==1) { z[right(z,num)]=x[left(x,num)]; x[left(x,num)]=0; print(a,b,c,num); ( X+" >> "+Z ); ("\n"); } else if(n!=1) {run(x,z,y,n-1,X,Z,Y);z[right(z,num)]=x[left(x,num) ];x[left(x,num)]=0;print(a,b,c,num);( X+" >> "+Z );("\n");

} } //打印出“柱子”,“圆盘”,移动方向

public static void print(int[]a,int[]b,int[]c,int n) { for(int i=0;i {

07141326汉诺塔-课程设计

汉诺塔课程设计 报告 目录 一、需求分析 (3) 二、概要设计 (4) 三、详细设计 (6) 四、测试与分析 (7) 五、总结 (7)

六、附录:源程序清单 (8) 一、需求分析 1.1问题描述 汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。 这是一个著名的问题,几乎所有的教材上都有这个问题。由于条件是一次只能移动一个盘,且不允许大盘放在小盘上面,所以64个盘的移动次数是:

18,446,744,073,709,551,615 这是一个天文数字,若每一微秒可能计算(并不输出)一次移动,那么也需要几乎一百万年。我们仅能找出问题的解决方法并解决较小N值时的汉诺塔,但很难用计算机解决64层的汉诺塔。 后来,这个传说就演变为汉诺塔游戏: 1.有三根杆子A,B,C。A杆上有若干圆盘 2.每次移动一块圆盘,小的只能叠在大的上面 3.把所有圆盘从A杆全部移到C杆上 经过研究发现,汉诺塔的破解很简单,就是按照移动规则向一个方向移动圆盘:如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C 此外,汉诺塔问题也是程序设计中的经典递归问题。 将n个盘子从a座移动到c座可以分解为以下3个步骤: (1)将a上n-1个盘借助c座先移到b座上。 (2)把a座剩下的一个盘移到c座上。 (3)将n-1个盘从c座借助于a座移到c座上。 1.2基本要求 (1)输入的形式和输入值的范围: 输入圆盘的数量,类型为整型,大于零。 (2)输出的形式: 运行结果为用字母表示移动盘子的方案,而并非是真正移动盘子。 (3) 程序所能达到的功能; 输入圆盘数量为定值时的移盘方案。帮助我们更清晰的理解汉诺塔问题,及递归调用的应用。 二、概要设计 分析问题,找出移动圆盘的正确算法。 将n个盘子从a座移动到c座可以分解为以下3个步骤: (1)将a上n-1个盘借助c座先移到b座上。 (2)把a座剩下的一个盘移到c座上。 (3)将n-1个盘从c座借助于a座移到c座上。

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

java,汉诺塔,课程设计,心得体会 篇一:基于JAVA汉诺塔游戏设计与实现 基于JAVA汉诺塔游戏设计与实现 院系:计算机与电子系 专业班:计算机应用技术0902班 姓名:高亚 学号:XX2911057 指导教师:彭文艺 XX 年6月 基于JAVA汉诺塔游戏设计与实现 JAVA Tower of Hanoi-based Game Design and Implementation 摘要 Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 随着时代的不断发展进步,计算机已经融入我们的日

常生活。很多时候,很多的问题想通过人的手来亲自解决已变得十分困难了,这时我们就要运用计算机来帮我们解决这些复杂的问题,汉诺塔问题就是这类较复杂的问题。 此次,我们通过Eclipse软件来解决汉诺塔问题。程序运行后会出现一个界面,界面上有各种操作提示,按照提示进行各种操作后会得到汉诺塔游戏的运行过程及结果。 关键词: Java 汉诺塔 Eclipse 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 excellent 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 world's largest developer of professional community. Global cloud computing and mobile Internet industry environment, Java has significant advantages and broad prospects. With the continual development and progress, the

汉诺塔课程设计

汉诺塔课程设计 一、教学内容: 1、了解汉诺塔的历史。 2、讲解汉诺塔的游戏规则。 二、课程设计目的: 1、让伙伴们了解汉诺塔的历史,勾起孩子们的学习兴趣,让伙伴们更加热爱数学。 2、在掌握汉诺塔玩法的基础上,锻炼伙伴们的观察力,变通里,和右脑开发。 3、增强伙伴们的空间想象能力和动手能力。 4、让伙伴们体会到数学的神奇,从而对数学产生更加浓厚的兴趣。 三、培养技能:观察力、想象力、变通里、右脑开发。 四、所需工具:汉诺塔、记号笔。 五、教学流程概述: 第一节课:1、讲一个关于汉诺塔的故事。2、带领伙伴们一起观察和了解汉诺塔的游戏规则。(以三盘为例说明)(30分钟) 第二节课:汉诺塔4盘的移法。(30分钟) 第三节课:汉诺塔5盘的移法。(30分钟) 第四节课: 汉诺塔月底考核。(30分钟) 六、教学流程详细解读: 第一节课:让伙伴们了解汉诺塔的历史,勾起孩子们的学习 兴趣,让伙伴们更加热爱数学。 1、讲关于汉诺塔的故事: 在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄 铜板上插着三根宝石针。印度教的主神梵天在创造世界的时 候,在其中一根针上从下到上地穿好了由大到小的64片金 片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在 按照下面的法则移动这些金片:一次只移动一片,不管在哪 根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移

、告诉伙伴们游戏规则: 以三个环为例说明: (一)先让伙伴们自己观察有几个柱子,有几个盘,并且盘是怎么排列的? 答:有三根相邻的柱子,第一根柱子上从下到上放着3个不同大小的圆盘,并且顺序是由大到小依次叠放。 (二)分别为这3个相邻的柱子编号A柱、B柱、C柱;在为这3个圆盘编号盘1、盘2、盘3。 让伙伴们自己动脑想想:如何要把A柱上的3个盘子一个一个移动到C柱上,并且每次移动同一根柱子上都必须保持大点的盘子在下,小点的盘子在上。最后也要使移动到C 柱的圆盘从下到上按照盘3,2,1金字塔的形状排列。 (三)带领伙伴们一起动手操作: (1)、盘1移动到C柱。 (2)、盘2移动到B柱。 (3)、盘1在移动到B柱上,这时盘1在盘2上。 (4)、盘3移动到C柱上。 (5)、再将盘1移动到A柱,这时B柱就只剩盘2。 (6)、将盘2移动到C柱,在盘3上边。 (7)、再将盘1移动到C柱,这时就成功了。 (四)鼓励伙伴们再来一次,按照刚才的移动方法 将C柱的圆盘移动到A柱。 (五)等所有伙伴都移动成功都移动成功后,引导伙伴们仔细思考,看看各位伙伴在移动的过程中有发现什么规律和技巧没有? 带领伙伴再来熟悉一遍: 第一步:盘1移动到C柱;第二步:盘2移动到B柱;......第四步:盘3移动到C柱上......

汉诺塔课程设计

攀枝花学院课程设计 题目:汉诺塔演示程序设计院(系): 年级专业: 姓名: 学号: 指导教师: 二〇〇九年十二月十四日 攀枝花学院教务处制

攀枝花学院本科学生课程设计任务书 注:任务书由指导教师填写。

课程设计(论文)指导教师成绩评定表

摘要 汉诺塔(又称河内塔)问题是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。 利用计算机图形学进行汉诺塔演示程序设计,是利用C语言绘图函数实现汉诺塔的递归算法图形界面演示过程。通过C语言实现图形学的绘图,程序控制,以及区域填充,并根据汉诺塔的算法原理实现大小不同的盘子移动的全过程演示。 关键词汉诺塔,变换矩阵,种子填充算法,递归调用

目录 摘要 .......................................................................................................................................... I 1 需求分析 (1) 1.1 需求概述 (1) 1.2 需求环境 (1) 1.3 功能描述 (2) 2 概要设计 (3) 2.1 程序功能模块 (3) 2.2 程序流程图 (3) 2.3 数据结构的设计 (4) 3 详细设计 (5) 3.1 程序初始化 (5) 3.1.1 代码功能 (5) 3.1.2 功能实现代码 (5) 3.2 盘块的移动过程 (5) 3.2.1代码功能 (5) 3.2.2 功能实现代码 (5) 3.3 递归函数 (6) 3.3.1 流程图 (6) 3.3.2 功能实现代码 (7) 4 测试与运行 (8) 结束语 (9) 参考文献 (10)

汉诺塔课程设计

学 号: 200840420149 课 程 设 计 题 目 汉诺塔 教 学 院 计算机学院 专 业 计算机 班 级 网络技术 姓 名 指导教师 2010 年 12 月 17 日

课程设计任务书 2009 ~2010 学年第一学期 学生姓名:专业班级:网络技术 指导教师:工作部门:计算机学院 一、课程设计题目 汉诺威塔 二、课程设计内容(含技术指标) 1.在移动盘子的每一步骤,形象直观地显示各针上的盘子。 2.考虑到学“VC 语言”课程的学生同时学习了“数据结构”课程,所以用灵活的数据结构解决汉诺威塔问题,灵活的处理数据结构中的经典问题。 3.使用VC++,因用面向对象的方法去处理数据结构已经是当今的潮流。 三、进度安排 1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2. 完成最低要求:实现5层汉诺威塔的调整过程; 3.进一步要求:直至实现n=9时的情况。 四、基本要求 1.界面友好,函数功能要划分好 2.总体设计应画流程图 3.程序要加必要的注释 4.要提供程序测试方案 5.程序一定要经得起测试,宁可功能少一些,也要能运行起来。 教研室主任签名: 2010年12 月 17 日

目录 1、概述 (3) 2、设计目的 (4) 3、问题分析 (4) 4、逻辑设计 (5) 5、流程图 (5) 6、程序代码: (6) 7、程序调试与测试 (9) 8、结果分析 (12) 9、总结 (13) 一、概述 数据结构是计算机学科非常重要的一门专业基础理论课程,要想编写针对非数值计算问题的高质量程序,就必须要熟练的掌握这门课程设计的知识。另外,他与计算机其他课程都有密切联系,具有独特的承上启下的重要位置。拥有《数据结构》这门课程的知识准备,对于学习计算机专业的其他课程,如操作系统、数据库管理系统、软件工程的都是有益的。

c语言课程设计--汉诺塔

课程设计报告 课程设计名称:C语言课程设计 课程设计题目:汉诺塔问题求解演示 院(系):计算机学院 专业:计算机科学与技术 班级: 学号: 姓名: 指导教师: 完成时间:2010年3月18日

沈阳航空航天大学课程设计报告 目录 第1章需求分析 (3) 1.1 课程设计的题目及要求 (3) 1.2 总体分析 (3) 第2章系统设计 (4) 2.1 主要函数和函数功能描述 (4) 2.2 功能模块图 (4) 第3章详细设计 (5) 3.1主函数流程图 (5) 3.2各功能模块具体流程图 (6) 第4章调试分析 (10) 4.1.调试初期 (10) 4.2.调试中期 (10) 4.3.调试后期 (10) 参考文献 (11) 附录 (12)

第1章需求分析 1.1 课程设计的题目及要求 题目:汉诺塔问题求解演示 内容: 在屏幕上绘出三根针,其中一根针上放着N个从大到小的盘子。要求将这些盘子从这根针经过一个过渡的针移到另外一根针上,移动的过程中大盘子不能压在小盘子上面,且一次只能移动一个盘子。要求形象直观地演示盘子移动的方案和过程。 要求: 1)独立完成系统的设计,编码和调试。 2)系统利用C语言实现。 3)安照课程设计规范书写课程设计报告。 4)熟练掌握基本的调试方法,并将程序调试通过 1.2总体分析 本题目需要使用C语言绘制图形,所以需要turbo C,需要绘图函数,而汉诺塔的函数属于经典的函数,在书本上都学习过,所以这个题目的难点在于需要绘制汉诺塔图形。攻克这一点其他的问题都迎刃而解。但是我个人以前也没有学过一些关于turboC 方面的知识。所以我将重点放在了对#include下的一系列绘图函数的研究与应用,对屏幕上的图像坐标分析是一个难点。其中用到了graphics.h头文件中的bar, outtextxy, setfillstyle,closegraph函数。进行了画图(利用bar函数进行画框的操作),填充颜色(利用setfillstyle函数填充白色和黑色,以分辨图形与图形背景),在特定位置输出特定字符等操作(利用outtextxy函数)。

汉诺塔课程设计报告

汉诺塔游戏 学院:理学院 班级:信科102班 组长:李万东 组员1:袁雪娇 组员2:张瑜 设计期限2012 年3月1开始 至2012年6月20 结束 课程设计题目:汉诺塔游戏 课程设计目的: 《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JA V A程序设计》课程后,进行的一次全面的综合训练,JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。 随着社会的进步,我们用来娱乐的游戏世界也越来越丰富,越来越复杂。本程序的汉诺塔游戏不但包括了游戏最基本的功能,而且还能培养用户的逻辑思维能力,同时也给玩家提供了一定的娱乐空间。本游戏还包括一个自动演示搬移汉诺塔的功能,此功能能够帮助初次接触此游戏的用户了解此游戏的玩法。 课程设计理论: 本程序要求实现用图形界面,画出3个杆和若干个大小不一的矩形盘子,形成3个塔,分别为A塔,B塔,C塔,同时盘子数目可以人工设定。用户可以用鼠标选中盘子,然后通过拖动鼠标来移动该盘子、释放鼠标来放置该盘子。用户在移动盘子的过程中,可以随时单击汉诺塔菜单栏的菜单中提供的按钮,重新开 1格式已调整,word版本可编辑.

始游戏,并且可以通过单击汉诺塔菜单栏的菜单提供的按钮,让程序自动完成把A塔上的盘子全部移动到C塔上,实现自动演示。 汉诺塔算法属于递归算法,该算法过程为: 假定要把n个盘子按题目规定由A杆借助B杆移动到C杆。 第一步:先把上面的n-1个盘子借助C杆放到B杆。 第二步:把第n个盘子从A杆直接移到C杆。 第三步:把B杆上的n-1个盘子借助A杆移到B杆。 概要设计: 1.课程设计内容: 有三个表示塔的对象,分别命名为A、B和C。A塔上有若干个盘子,盘子的大小不等,并按着大小顺序依次摆放在A塔上,大盘在下,小盘在上。用户可以用鼠标拖动盘子,把A塔上的盘子全部移动到另外两个塔中的任何一个塔上。要求每次只能移动一个盘子,在任何时候不允许大盘压在小盘的上面。用户也可以选择让程序自动演示。选择自动演示后,程序将以动画形式演示把A塔上的盘子全部移到C塔的过程。 2.课程设计功能: (1)设计GUI界面的汉诺塔。汉诺塔中有三个座,名字分别是A、B和C。初始状态是A座上有四个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上。用户可以用鼠标选中盘子,然后通过拖动鼠标来移动该盘子、释放鼠标来放置该盘子。 (2)程序要求用户在移动盘子过程中,不允许把大盘子放在小盘子的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上。 (3)用户可以通过单击汉诺塔菜单栏的菜单提供的按钮,让程序自动完成把A座上的盘子全部移动到B座或C座上。 (4)用户在移动盘子的过程中,可以随时单击汉诺塔菜单栏的菜单提供的按钮,重新开始游戏。 3. 2.

汉诺塔游戏设计过程

兰州交通大学 数理与软件工程学院 课程设计报告 2011 ~2012学年第二学期 课程名称数据结构 设计题目汉诺塔游戏程序 班级信计1001班 小组成员张章、王欣、李贵生 报告者李贵生201005235 指导老师金静 2012年6月

一、实验目的: 通过此次C++实训,一方面加深了对C++语言的了解,而不只是单单的在课本中学到的那些理论。通过学生动手亲自编写,平时乏味的课程,变的生动有趣。平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。另一方面,通过学生小组完成任务,提高团队意识,增加凝聚力,让同学们意识到团结就是力量,每个人都是重要的一份子。 二、题目:汉诺塔游戏程序 <1> 问题描述:在平面上有三个位置A、B、C,在A位置上有n 个大小不等的圆盘、小盘压在大盘上形成圆盘堆。要求将A位置的N个圆盘通过B位置移动到C位置上,并按同样的顺序叠放。 移动圆盘时必须遵循以下规则: 1.每一次只能移动一个圆盘 2.圆盘可以放在A、B、C任何一个塔座上 3.任何时刻都不能将大圆盘压在小圆盘上 <2> 基本要求: 圆盘的个数从键盘输入(如3-64等);用动画的形式在屏幕上显示盘的移动。 三、问题分析和任务定义 1、已知有三个塔(1、 2、3)和n个从大到小的金碟子,初始状态时n个碟子按从大到小的次序从塔1的底部堆放至顶部。 2、要求把碟子都移动到塔2(按从大到小的次序从塔2的底部堆

放至顶部)。 3、每次移动一个碟子。 4、任何时候、任何一个塔上都不能把大碟子放到小碟子的上面。 5、可以借助塔3。 先考虑a杆下面的盘子而非杆上最上面的盘子,于是任务变成了: 1、将上面的N个盘子移到b杆上; 2、将a杆上剩下的盘子移到c杆上; 3、将b杆上的全部盘子移到c杆上。 将这个过程继续下去,就是要先完成移动n个盘子、n-1个盘子、n-2个盘子....1个盘的工作。 四、课题介绍: 4.1 汉诺塔问题初始模型: 4.2 实现步骤: 为满足题目中盘子的移动问题,必须遵循的条件是:一次

汉诺塔 面向对象课程设计

数据库课程设计报告------------题目:汉诺塔 学院名称:计算机学院 专业名称:计算机科学与技术 班级:计算机08-08班 学号:0804010807 姓名:田昊 指导教师:孙冬璞 起始时间:2011年1月5日-------2011年1月9日

摘要 汉诺塔(又称河内塔)问题是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。 利用计算机图形学进行汉诺塔演示程序设计,是利用C语言绘图函数实现汉诺塔的递归算法图形界面演示过程。通过C语言实现图形学的绘图,程序控制,以及区域填充,并根据汉诺塔的算法原理实现大小不同的盘子移动的全过程演示。 1 需求分析 1.1 需求概述 汉诺塔演示程序设计是计算机图形学中图形变换的内容之一。而图形学中的图形变换的概念是由简单图形生成复杂图形,可用二维图形表示三维形体,甚至可以对静态图形经过快速变换而获得图形的动态显示效果。其任务是研究各点坐标之间的变化规律。而本次课程设计就是利用C语言以及图形函数实现汉诺塔的递归算法来进行其盘块移动的全过程显示。在TC环境中要实现这样的功能,就要牵涉到图形设备接口的知识。Windows图形设备接口是为与设备无关的图形设计的,是Windows系统的重要组成部分,负责系统与用户或绘图程序之间的信息交换,并控制在输出设备上显示图形或文字。应用程序必须通知图形设备接口来加载特定的设备驱动,一旦驱动得以加载,就可以准备应用设备进行相关的操作这些任务都要通过创建和维护设备描述表来完成。在实现汉诺塔演示程序设计时,是利用坐标系统而得到的,而在Windows应用程序中有两种坐标系统:设备坐标系统和逻辑坐标系统。其中设备坐标系统中又有三种相互独立的坐标系统:屏幕坐标系统、窗口坐标系统和用户区坐标系统。这些坐标系统均以像素点来表示度量的单位。屏幕坐标系统使用整个屏幕作为坐标区域,原点为屏幕原点。窗口坐标系统使用了边界在内的应用程序的窗口作为坐标区域。窗口边界的左上角是坐标系统的原点。用户坐标系统是最经常使用的坐标系统。用户区是窗口工作区,不包括窗口边界、菜单条及滚动条等。用户一般只需操作应用程序的用户区,因此用户区坐标系统对大多数应用程序都是适用的。

C语言课程设计#汉诺塔#

汉诺塔动态演示 一课题分析 1.1 设计要求 在Visual c++环境下编写汉诺塔的程序并运行出汉诺塔游戏。能够改变汉诺塔塔盘的数量。可以电脑演示移动过程,也可以人为移动,并且能够控制塔盘移动速度。实现汉诺塔的简单动态演示。 1.1.1 目的 了解在开发环境中如何编辑,编译,连接和运行一个C语言程序。通过运行汉诺塔的程序,初步了解C语言程序的结构特点。掌握C语言数据类型的概念,学会使用C语言的相关运算符构成表达式。 1.1.2 背景 世界范围内信息技术迅猛发展,新的技术和方法层出不穷。C语言在计算机应用中发挥着重要作用,并且在全世界普及推广。作为当代大学生,有必要掌握和会运用C语言。 1.1.3 意义 这次课程设计,可以培养我们独立自主的学习能力,实事求是的学习态度,严谨治学的学习作风,通过实践,建立系统设计的整体思想,锻炼编写程序、调试程序的能力,学习文档编写规范,吸取他人经验、探索前言知识的习惯,树立团队协作精神。同时课程设计还可以弥补我们自身在实践时所缺少的经验。这次对于汉诺塔这个问题的研究是我在C 语言课程学习中递归函数的一次实际运用,对我的递归函数的理解会有更多的帮助。 1.2 实现功能 运用数据结构的相关知识,利用一定的算法制作出汉诺塔程序。能输入塔盘的数量(10以内)和塔盘移动速度,支持人和电脑操作,并且显示移动过程和移动次数,实现汉诺塔的动态演示。

图1 汉诺塔功能结构图 二整体设计2.1 框架设计

图2 汉诺塔流程图

三详细设计 3.1问题描述 假设有三个分别命名为A,B和C的塔座,在塔座B上插有n个直径大小各不相同、从小到大编号为1,2,…,n的圆盘。现要求将塔座B上的n个圆盘移至塔座A上并仍按同样顺序叠排,圆盘移动时必须遵守以下规则: (1)每次只能移动一个圆盘; (2)圆盘可以插在A,B和C中任一塔上; (3)任何时刻都不能将一个较大的圆盘压在较小的圆盘之上。 要求:用程序模拟上述问题解决办法,并输出移动的总次数,圆盘的个数从键盘输入;并想办法计算出程序运行的时间。 3.2 算法思路 3.2.1建立数学模型 这个问题可用递归法解决,并用数学归纳法又个别得出普遍解法: 假设塔座B上有3个圆盘移动到塔座A上: (1)将塔座B上2个圆盘借助塔座A移动到塔座C上; (2)将塔座B上1个圆盘移动到塔座A上; (3)将塔座C上2个圆盘借助塔座B移动到塔座A上。 其中第2步可以直接实现。第1步又可用递归方法分解为: 1.1"将塔座B上1个圆盘从塔座X移动到塔座A; 1.2"将塔座B上1个圆盘从塔座X移动到塔座C; 1.3"将塔座A上1个圆盘从塔座Z移动到塔座C。 第3步可以分解为: 将塔座C上1个圆盘从塔座Y移动到塔座B; 将塔座C上1个圆盘从塔座Y移动到塔座A; 将塔座B上1个圆盘从塔座X移动到塔座A。 综上所述:可得到移动3个圆盘的步骤为 B->A,B->C, A->C, B->A, C->B, C->A, B->A, 3.2.2 算法设计 将n个圆盘由B依次移到A,C作为辅助塔座。当n=1时,可以直接完成。否则,将塔座B 顶上的n-1个圆盘借助塔座A移动到塔座C上;然后将圆盘B上第n个圆盘移到塔座A上;最后将塔座C上的n-1个圆盘移到塔座A上,并用塔座B作为辅助塔座。

《汉诺塔游戏设计与制作》课程设计报告

《动漫与网络游戏设计》课程设计报告 题目:汉诺塔游戏 院系:信息科学系 专业:软件工程 年级: 14级 成员1:学号 14053078 姓名:曾繁荣成员2:学号 14053080 姓名:陈俊杰日期: 2017年1月2号 成绩:

题目 一、作品介绍 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 二、设计思路 1、已知有三个塔(1、 2、3)和n个从大到小的金碟子,初始状态时n个碟子按从大到小的次序从塔1的底部堆放至顶部。 2、要求把碟子都移动到塔2(按从大到小的次序从塔2的底部堆放至顶部)。 3、每次移动一个碟子。 4、任何时候、任何一个塔上都不能把大碟子放到小碟子的上面。 5、可以借助塔3。 先考虑a杆下面的盘子而非杆上最上面的盘子,于是任务变成了: 1)、将上面的N个盘子移到b杆上; 2)、将a杆上剩下的盘子移到c杆上; 3)、将b杆上的全部盘子移到c杆上。 将这个过程继续下去,就是要先完成移动n个盘子、n-1个盘子、n-2个盘子....1个盘的工作。

三、作品结构

四、设计步骤 为满足题目中盘子的移动问题,必须遵循的条件是:一次仅能移动一个盘,且不允许大盘放在小盘的上面。 设要解决的汉诺塔共有N个圆盘,对A杆上的全部N个圆盘从小到大顺序编号,最小的圆盘为1号,次之为2号,依次类推,则最下面的圆盘的编号为N。 第一步:先将问题简化。假设A杆上只有一个圆盘,即汉诺塔只有一层N,则只要将1号盘从A杆上移到B杆上即可。 第二步:对于一个有N(N>1)个圆盘的汉诺塔,将N个圆盘分成两部分:“上面的N-1个圆盘”看成一个整体,为了解决N个圆盘的汉诺塔。 五、实现步骤 (1)将A杆上面的N-1个盘子,借助B杆,移到C杆上。 图4—1 (2)将A杆上剩余的N号盘子移到B杆上。

《计算机图形学》课程设计论文(参考)

攀枝花学院 学生课程设计(论文) 题目:图书馆图书管理系统 学生姓名:黄志强学号:201110801008 所在院(系):计算机学院 专业:计算机科学与技术 班级: 2011级1班 指导教师:罗学刚 2012年6月13日

攀枝花学院本科学生课程设计任务书 注:任务书由指导教师填写。

课程设计(论文)指导教师成绩评定表

摘要 汉诺塔(又称河内塔)问题是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。 利用计算机图形学进行汉诺塔演示程序设计,是利用C语言绘图函数实现汉诺塔的递归算法图形界面演示过程。通过C语言实现图形学的绘图,程序控制,以及区域填充,并根据汉诺塔的算法原理实现大小不同的盘子移动的全过程演示。 关键词汉诺塔,变换矩阵,种子填充算法,递归调用

目录 摘要 .......................................................................................................................................... I 1 需求分析 (1) 1.1 需求概述 (1) 1.2 需求环境 (1) 1.3 功能描述 (2) 2 概要设计 (3) 2.1 程序功能模块 (3) 2.2 程序流程图 (3) 2.3 数据结构的设计 (4) 3 详细设计 (5) 3.1 程序初始化 (5) 3.1.1 代码功能 (5) 3.1.2 功能实现代码 (5) 3.2 盘块的移动过程 (5) 3.2.1代码功能 (5) 3.2.2 功能实现代码 (5) 3.3 递归函数 (6) 3.3.1 流程图 (6) 3.3.2 功能实现代码 (7) 4 测试与运行 (8) 结束语 (9) 参考文献 (10)

《新汉诺塔》课程设计

《新汉诺塔》课程设计

届课程设计 《汉诺塔》 课程设计说明书 学生姓名 学号 所属学院信息工程学院 专业计算机科学与技术班级 指导教师 教师职称讲师 塔里木大学教务处制

目录 前言 0 1. 数据结构简介 0 2. 应用技术领域及范围 0 3.设计的原理、方法和主要内容 (1) 正文 (2) 1. 设计目的 (2) 2. 设计要求 (2) 3.需求分析 (3) 3.1 汉诺塔的由来: (3) 3.2汉诺塔与宇宙寿命: (4) 4. 问题分析: (7) 5. 概要设计 (8) 5.1设计思想 (8) 5.2 实现方法 (8) 5.3 主要模块 (8) 5.4 模块关系 (8) 6. 详细设计 (9) 6.1 功能设计 (9) 6.2 算法分析 (10) 6.3 编写程序如下: (10) 6.4 程序执行过程分析: (12) 7. 调试分析: (13) 8.小结 (17) 致谢 (18) 参考文献 (19)

前言 1. 数据结构简介 数据结构是计算机程序设计的重要理论设计基础,它不仅是计算机学科的核心课程,而且成为其他理工专业的热门选修课。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。在计算机科学中,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象(数据元素)以及它们之间的关系和运算等的学科,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。“数据结构”在计算机科学中是一门综合性的专业基础课。数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数据结构这一门课的内容不仅是一般程序设计(特别是非数值性程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。 2. 应用技术领域及范围 汉诺塔的应用技术是来自于我们所学的数据知识和数学方面的学科,其中用到了数学递归,函数和数据的函数以及C语言等方面的知识。 汉诺塔的领域是在我的日常生活中的每一个细节中,反复的运用是我的数学知识在生活的体现,如做归一问题,循环问题,倒排问题,逻辑

汉诺塔问题

XXXX大学信息学院 课程设计报告 教师签名:xxxxx

题目1实验报告 1.数据结构定义 因为该算法需要用到循环队列、堆和线性表,因此采用以下数据类型: typedef struct { QElemType *base; // 初始化的动态分配存储空间 int front; // 头指针,若队列不空,指向队列头元素 int rear; // 尾指针,若队列不空,指向队列尾元素的下一个位置 }SqQueue;//循环队列 typedef struct { int *elem; int length; int listsize; }SqList;//堆排序 2.算法说明 void HeapAdjust(int flag,SqList &H,int s,int m) void HeapSort(int flag,SqList &H)//对H进行堆排序; Status InitQueue(SqQueue &Q)//构造一个空队列Q,该队列预定义大小为MAXQSIZE; Status EnQueue(SqQueue &Q,QElemType e) //插入元素e为Q的新的队尾元素; Status DeQueue(SqQueue &Q, QElemType &e) // 若队列不空, 则删除Q的队头元素, 用e 返回其值, 并返回OK; 否则返回ERROR; Status GetHead(SqQueue Q, QElemType &e)// 若队列不空,则用e返回队头元素,并返回OK,否则返回ERROR; Status QueueLength(SqQueue Q) // 返回Q的元素个数; Status QueueTraverse(SqQueue Q)// 若队列不空,则从队头到队尾依次输出各个队列元素,并返回OK;否则返回ERROR. 3.用户使用说明 运行程序,根据屏幕上的文字提示一步步操作。 4.个人测试结果(截图) 部分测试结果截图

java课程设计方案Hannoi汉诺塔游戏

HUBEINORMALUNIVERSITY Java程序设计 Hannoi塔游戏 论文题目Hannoi塔游戏 学生 指导教师 所在院系 专业名称 完成时间

摘要 《JAVA语言实用教程》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教案环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA语言实用教程》课程后,进行的一次全面的综合训练,JAVA语言实用教程的设计目的是加深对理论教案内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。 目录 一、课程设计任务及要求3 1、课程设计任务3 2、设计要求3 二、需求分析4 1、系统需求分析4 2、系统概述5 3、系统运行环境6 三、设计思路6 概要设计7 四、详细设计7 package Hannoi。7 HannoiWindow类7

AutoMoveDisc类15 Disc类21 HandleMouse类22 Tower类27 TowerPoint 类31 五、运行调试与分析讨论33 六、设计体会与小结36 1.设计体会36 2.小结36 参考文献37 致谢37 一、课程设计任务及要求 1、课程设计任务 设计GUI界面的Hannoi塔游戏,用户可以通过拖动鼠标移动各个塔上的盘子,程序也可以自动演示盘子的移动过程。 2、设计要求 (1)有三个表示塔的对象,分别命名为A、B和C。A塔上有

若干个盘子,盘子的大小不等,并按着大小顺序依次摆放在A 塔上,大盘在下,小盘在上。用户可以用鼠标拖动盘子,把A 塔上的盘子全部移动到另外两个塔中的任何一个塔上。要求每次只能移动一个盘子,在任何时候不允许大盘压在小盘的上面。 (2)用户也可以选择让程序自动演示。选择自动演示后,程序将以动画形式演示把A塔上的盘子全部移到C塔的过程,并将移动过程以文本形式显示在一个文本区中。 (3)可以由用户自己设置盘子数量和盘子大小。 (4)可以改变盘子的颜色、背景颜色以及背景音乐。 (5)游戏分为初、中、高三个等级。 (6)可以记录游戏时间并且设有从新开始按钮。 二、需求分析 1、系统需求分析 使用java面向对象语言设计汉诺塔游戏,此游戏要求:1)界面要求: (1)尽量使用图形界面实现,要符合日常软件使用规 范来设计菜单和界面。

汉诺塔实验报告

汉诺塔实验报告 2012 年 12 月 21 日 目录 1、概 述 ................................................................ 错误~未定义书签。4 2、实验目的 ........................................................ 错误~未定义书签。4 3、问题分 析 ..................................................................... ...................... 2 4、实验步 骤 ........................................................ 错误~未定义书签。5 5、流程 图 ..................................................................... .......................... 3 6、程序代 码: .................................................................... ................... 4 7、程序调试与测 试 ..................................................................... .......... 8 8、结 论 .............................................................. 错误~未定义书签。12

汉诺塔问题C语言程序设计

三峡大学理学院2011级电信专业 《高级语言程序设计》课程设计 说明书 设计题目: 汉诺塔的搬移过程设计 班级:高级语言程序设计1 班 学号:2011142227 姓名:徐飞 完成日期:2012 年6月20日 1设计任务 设计题目:用递归法计算解决汉诺塔问题,并能够演示解决汉诺塔问题过; 要求:设计一个运用递归法计算解决汉诺塔问题C语言程序; 2 汉诺(Hanoi)塔问题的提出 古代有一个梵塔,塔内有A,B,C,3个座,座A上有64个大小不等的盘子,大的在下,小的在上(如下图)。有一个和尚想把这64个盘子从座A全部移到座C ,在移动过程中可以借用座A,座B或座C,但每次只允许移动一个盘子,并且不允许大盘放在小盘的上面。 3编程思路 首先,要找出递归的两个关键点,即: 递归终止条件:只有一个盘子时,可以移动。 递归表达式:要找出递归表达式,可以如下设想:

下面以3个盘子为例说明详细的移动过程: (1)将座A上的2个盘子移动到座B上; (2)将座A上的1个盘子移动到座C上; (3)将座B上的2个盘子移动到座C上; 上面第1步可用递归方法分解为: (1)将座A上的1个盘子从座A移动到座C上;

(2)将座A上的1个盘子从座A移动到座B上; (3)将座C上的1个盘子从座C移动到座B上; 第(3)步可用递归方法分解为: (1)将座B上的1个盘子从座B移动到座A上; (2)将座B上的1个盘子从座B移动到座C上; (3)将座B上的1个盘子从座A移动到座C上; 第(1)步操作可归纳为:将座A上的2个盘子借助座C移到座B; 第(3)步操作可归纳为:将座B上的2个盘子借助座A移到座C; 因此,将n个盘子从座A移到座C可以描述为: (1)将n-1个盘子从座A借助座C移到座B; (2)将剩下的一个盘子从座A移到座C; (3)将n-1个盘子从座B借助座A移到座C; 3系统操作流程图; 4.程序说明;

Java课程设计报告(汉诺塔)

Java课程设计报告(汉诺塔)

东华理工大学 Java课程设计报告题目:汉诺塔 所在院系:理学院 学生姓名:漆俊、朱学曼、颜瑶 专业:信息与计算科学 班级:1223201-2 指导老师:黄国辉 2014年12月29日 - 2 -

目录一.概述 1.题目概述 2.题目分析 二.课程设计 1.课程设计目的 2.课程设计内容 3.课程设计环境 4.课程设计要求 三.系统需求分析 1.系统目标 2.主体功能 3.开发环境 四.系统概要设计 1.系统功能模块划分 2.流程图 3.自定义类说明 五.系统详细设计 六.测试 1.测试方案 2.测试结果 七.小结 八.参考文献 九.程序代码 - 3 -

一.概述 1.题目概述: Hannoi塔: 设计GUI界面的Hannoi塔,用户可以通过拖动鼠标移动各个塔上的盘子, 程序也可以自动演示盘子的移动过程。 设计要求 1.有三个表示塔的对象,分别命名为 A、B和C。A塔上有若干个盘子,盘子 的大小不等,并按着大小顺序依次摆放 在A塔上,大盘在下,小盘在上。用户 可以用鼠标拖动盘子,把 A 塔上的盘 子全部移动到另外两个塔中的任何一个 塔上。要求每次只能移动一个盘子,在 任何时候不允许大盘压在小盘的上面。 2.用户也可以选择让程序自动演示。 选择自动演示后,程序将以动画形式演 示把A塔上的盘子全部移到C塔的过程,并将移动过程以文本形式显示在一个文 本区中。 - 4 -

2.题目分析: (1)在窗口中画出初始时塔和碟子的状态。 (2)可以以自动或手动两种方式搬移碟子。 (3)自动搬移可以通过定时器或多线程的方法,每一次移动的时间间隔可以自定,以人眼观察比较舒服为宜,每一次的移动过程如能实现动画最好。 (4)定义塔的描述类和碟子的描述类。 (5)在程序中,碟子的数目及每次移动的时间间隔可以通过对话框设置(也应该有默认值)。 (6)支持暂停功和继续的功能(在自动搬移过程中可以暂停,并继续)。 (7)暂停后,可以将当前的状态保存(碟子和塔的组合关系)。 (8)可以从7中保存的文件中读出某个状态,并继续移动。 二.课程设计 - 5 -

Hannoi塔(汉诺塔)--Java课程设计报告

Java课程设计报告 题目汉诺塔 所在院系软件学院 学生姓名邓小文专业土木+软件工程班级08-1班学号14号 2010年7月17日

一、总体设计 1.本系统的主要功能(1)本软件是汉诺塔游戏;(2)可以实现计时功能;(3)游戏结束时记录排名; (4)在玩游戏的同时还可以欣赏歌曲;(5)不知如何玩时可以实现自动演示; 2.系统包含的类及类之间的关系 为了实现本软件的各项功能,对要在本软件中需要用到的源文件进行总体设计。本系统共包括12个java 源文件。1.各个类之间的关系如图1所示。 Hel Tower HannoiTower Musi Disk TowerPoint Time Record ShowRecor Peopl 图1-1各个类之间的关系 2.java 源文件及其功能,如表所示。 表1java 源文件及其功能

二、详细设计 为了实现总体设计中的各个类之间的接口连接,使玩家能够顺畅的使用本软件进行游戏,考虑用详细设计来给玩家一一介绍。 以下是对本软件的详细设计: 序号文件名主要功能备注 1 Tower 用户可以在主窗口选择开始搬运 盘子或自动演示。程序默认的情况 是手动搬运盘子 2HannoiTower 该文件生成的类负责创建Hannoi 塔,汉诺塔由A、B、C 三个塔组成, 可以用鼠标搬运各个塔上的盘子。3Disk 该文件生成的类负责创建盘子对 象 4 TowerPoint 该文件生成的类负责为Hannoi 塔 创建塔点对象,即盘子放置的位 置。 5Time 记录玩家完成游戏所需的时间 6People 记录成绩能够排进排行榜的选手7About 关与本软件的制作信息8Help 帮助主题9Record 记录 10Music 该文件负责生成一款播放器,可以选取玩家自己喜欢的歌曲欣赏。播放的歌曲需要是“wav”等 形式的。 11 ShowRecord 该文件用来实现玩家看英雄榜的情况。

相关主题
相关文档
最新文档