ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:352.01KB ,
资源ID:16989571      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16989571.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汉诺塔课程设计报告Word文件下载.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汉诺塔课程设计报告Word文件下载.docx

1、把B杆上的n-1个盘子借助A杆移到B杆。概要设计:1.课程设计内容:有三个表示塔的对象,分别命名为A、B和C。A塔上有若干个盘子,盘子的大小不等,并按着大小顺序依次摆放在A塔上,大盘在下,小盘在上。用户可以用鼠标拖动盘子,把A 塔上的盘子全部移动到另外两个塔中的任何一个塔上。要求每次只能移动一个盘子,在任何时候不允许大盘压在小盘的上面。用户也可以选择让程序自动演示。选择自动演示后,程序将以动画形式演示把A塔上的盘子全部移到C塔的过程。2.课程设计功能:(1)设计GUI界面的汉诺塔。汉诺塔中有三个座,名字分别是A、B和C。初始状态是A座上有四个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次

2、摆放在A座上。(2)程序要求用户在移动盘子过程中,不允许把大盘子放在小盘子的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上。(3)用户可以通过单击汉诺塔菜单栏的菜单提供的按钮,让程序自动完成把A座上的盘子全部移动到B座或C座上。(4)用户在移动盘子的过程中,可以随时单击汉诺塔菜单栏的菜单提供的按钮,重新开始游戏。3.流程图:程序的调试与分析:1.游戏主界面图 1 主界面 此时游戏的初始盘子为4个,用户直接点击方块进行拖拽移动,移动到所需要的位置。2.移动盘子图 2 拖拽盘子 依次拖拽盘子,直至盘子移动到B塔或者C塔。3.移动成功图 3 移动成功 将所有的盘子移动到B塔或者C塔,就

3、会自动弹出“亲,恭喜你完成游戏!”。4.重新开始图 4-1 点击“重新开始” 点击“游戏”-“重新开始”,就会弹出窗口,如图4-2图 4-2 重新开始 点击“是”,会重新绘制盘子,回复的初始位置;点击“否”,游戏将继续5.难易程度图 5-1 点击“难易程度”点击“游戏”-“难易程度”就会弹出窗口5-2图 5-2 选择难以级别在“难易程度”窗口中点击下拉按钮就会出现图5-3图 5-3 难以程度6.四种级别比较 图 6-1 简单:四层 图 6-2 中等:五层 图 6-3 困难:五层 图 6-4 中等:超难7.游戏攻略图 7-1 点击游戏攻略“简单:四层”“难易程度”-“简单:四层”,游戏就会自动演

4、示游戏攻略8.游戏介绍图 8 游戏介绍 点击“确定”按钮或者是点击“关闭”按钮,“游戏介绍”窗口将关闭9.工作人员图 8 工作人员点击“确定”按钮或者是点击“关闭”按钮,“工作人员”窗口将关闭10.课程设计时遇到的困难及解决方法 10.1 课程设计时遇到的困难 10.1.1 课程设计过程中原想盘子通过图片形式显示,但是实现不了 10.1.2 课程设计过程中盘子的位置不好控制 10.1.3 课程设计过程中显示字体用标签形式显示,但是这样有的不太协调 10.1.4 课程设计过程中原本要加入移动盘子的步数和所用时间,但是不太容易解决 10.2 课程设计时遇到困难的解决方法 10.2.1 为了解决盘子

5、的显示,将盘子的显示方式改为二维作图方式 10.2.2 为了解决控制盘子的位置,将盘子放置在一个四边形的容器中,然后通过四边形容器的左上角坐标和四边形容器的宽和高来空值盘子的位置 10.2.3 为了解决显示文字的位置协调问题,将文字通过二维作图方式绘制 10.2.4 由于时间和精力有限,用户移动盘子的步数和所用时间从功能中删除程序清单:源代码:package hannuota;import java.awt.*;import java.awt.event.*;import javax.swing.*;/游戏界面public class Hannuota extends JFrame imple

6、ments ActionListener, Runnable JFrame f; HannoiTower tower=null; char towerName=A,BC; int DiskCount,DiskWidth,DiskHeight; Thread thread; /定义声明菜单栏及菜单栏内的菜单,菜单项 JMenuBar caidanlan=new JMenuBar(); JMenu youxi=new JMenu(游戏); JMenuItem chongxinkaishi=new JMenuItem(重新开始 JMenuItem nanyichengdu=new JMenuItem

7、(难易程度 JMenuItem tuichu=new JMenuItem(退出 JMenu bangzhu=new JMenu(帮助 JMenuItem youxijieshao=new JMenuItem(游戏介绍 JMenuItem gongzuorenyuan=new JMenuItem(工作人员 JMenu youxigonglue=new JMenu(游戏攻略 JMenuItem jiandan=new JMenuItem(简单:四层 JMenuItem zhongdeng=new JMenuItem(中等:五层 JMenuItem kunnan=new JMenuItem(困难:六

8、层 JMenuItem chaonan=new JMenuItem(超难:七层 public Hannuota() thread=new Thread(this); DiskCount=4; DiskWidth=150; DiskHeight=20; tower=new HannoiTower(DiskCount,DiskWidth,DiskHeight,towerName); /声明字体设置的初始值 Font font=new Font(宋体,Font.PLAIN,14); Font font1=new Font(,Font.PLAIN,16); /设置布局格式和各个组件的位置 add(to

9、wer,BorderLayout.CENTER); /添加菜单栏中的菜单和菜单项 setJMenuBar(caidanlan); caidanlan.add(youxi); caidanlan.add(bangzhu); youxi.add(chongxinkaishi); youxi.addSeparator(); youxi.add(nanyichengdu); youxi.add(tuichu); bangzhu.add(youxigonglue); bangzhu.addSeparator(); bangzhu.add(youxijieshao); bangzhu.add(gongzu

10、orenyuan); youxigonglue.add(jiandan); youxigonglue.add(zhongdeng); youxigonglue.add(kunnan); youxigonglue.add(chaonan); /给菜单项注册事件监听者 chongxinkaishi.addActionListener(this); nanyichengdu.addActionListener(this); tuichu.addActionListener(this); youxijieshao.addActionListener(this); gongzuorenyuan.addA

11、ctionListener(this); jiandan.addActionListener(this); zhongdeng.addActionListener(this); kunnan.addActionListener(this); chaonan.addActionListener(this); /设置菜单及菜单项的字体、字形、字号 youxi.setFont(font); bangzhu.setFont(font); chongxinkaishi.setFont(font); nanyichengdu.setFont(font); tuichu.setFont(font); you

12、xijieshao.setFont(font); gongzuorenyuan.setFont(font); youxigonglue.setFont(font); jiandan.setFont(font); zhongdeng.setFont(font); kunnan.setFont(font); chaonan.setFont(font); public void run() this.remove(tower); tower=new HannoiTower(DiskCount,DiskWidth,DiskHeight,towerName); validate(); tower.zid

13、ongyanshi(DiskCount,towerName0 ,towerName1,towerName2); /点击事件响应 public void actionPerformed(ActionEvent e) String cmd=e.getActionCommand(); String title=; String message= int type; /定义弹出对话框的类型对象 if(cmd.equals() int response = JOptionPane.showConfirmDialog(this, 立即开始一个新游戏吗?,重新开始提示消息 JOptionPane.YES_N

14、O_OPTION, JOptionPane.INFORMATION_MESSAGE); if (response = JOptionPane.NO_OPTION) return; else if(!(thread.isAlive() this.remove(tower); tower=new HannoiTower(DiskCount,DiskWidth,DiskHeight,towerName); add(tower,BorderLayout.CENTER); validate(); int messageType=JOptionPane.QUESTION_MESSAGE; String r

15、esult= String values=, title= message=请选择游戏的难以级别: result=(String)JOptionPane.showInputDialog(this,message,title,messageType,null,values,values0); if(result=) DiskCount=4; this.remove(tower); tower=new HannoiTower(DiskCount,DiskWidth,DiskHeight,towerName); add(tower,BorderLayout.CENTER); validate();

16、DiskCount=5; DiskCount=6; DiskCount=7;您要退出游戏吗?退出提示消息 else System.exit(0); type=JOptionPane.PLAIN_MESSAGE;游戏介绍:汉诺塔又称河内塔,汉诺塔是源于印度一个古老的益智传说:n + 上帝创造世界的时候做了三根金刚石柱,在一根柱子上从下往n + 上按大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下n 面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小n 圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。n操作说明:直接通过鼠标左击按下鼠标,然后进行拖拽,拖到相应的位置n JOptio

17、nPane.showMessageDialog(this,message,title,type);设计者 组长:李万东n 组员:袁雪娇n张 瑜n if(e.getSource()=jiandan) DiskCount=4; this.remove(tower); tower=new HannoiTower(DiskCount,DiskWidth,DiskHeight,towerName); add(tower,BorderLayout.CENTER); validate(); if(! thread=new Thread(this); try thread.start(); catch(Exc

18、eption eee) if(e.getSource()=zhongdeng) DiskCount=5; if(e.getSource()=kunnan) DiskCount=6; if(e.getSource()=chaonan) DiskCount=7; /主方法 public static void main(String args) Hannuota f=new Hannuota(); f.setTitle(汉诺塔游戏 f.setBounds(300, 200, 800, 450); f.setVisible(true); /手动搬运盘子class Disk extends Butto

19、n int number; boolean TopDisk=false; public Disk(int number,HannoiTower con) this.number=number; setBackground(Color.black); addMouseMotionListener(con); addMouseListener(con); public boolean getTopDisk() /getTopDisk:获得上方的盘子 return TopDisk; public void setTopDisk(boolean b) /setTopDisk:放置上方的盘子 TopDisk=b; public int getNumber() /getNumber:获得盘子的数量 return number;class TowerPoint int x,y; boolean HDi

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

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