类,如JButton,JCheckBox等.汉诺塔中有三个座,名字分别为A,B,C.刚开始的时候A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上.用户可以用鼠标选中盘子,然后通过拖动鼠标来移动盘子.释放鼠标来放置该盘子.程序要求用户在移动盘子的过程中,不允许吧大盘子放置在小盘子的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上.用户可以通过Hannoi塔界面的提供的改变盘子数目功能来改变盘子的数目,同时可以改变盘子的大小以及改变盘子和界面的背景颜色,而且还可以选择控制背景音乐的播放.用户可以通过单击Hannoi塔界面上提供的按钮,让程序自动完成把A座上的盘子全部移动到C座上.用户在移动盘子的过程中,可以随时单击Hannoi塔界面上提供的按钮,重新开始.2.2概要设计;完成汉诺塔的"自动移动演主要要实现的功能有:完成汉诺塔的"手工移动
演示"示";增加计时功能,即显示用户完成移动盘子所花费的时间;用户可以设置最大和最小盘子的大小;用户可以选择播放和暂停背景音乐;用户可以设置盘子的数目;用户可以设置盘子的颜色以及背景颜色;用户可以将自动移动盘子的文本信息保存到文件;
2.2.1自定义类说明***********************************************************类名:JButton**作用:自定义主类,实现圆盘的类Disc继承JButton类*继承的父类:Disc类**实现的接口:没有***********************************************************
2
辽宁工业大学课程设计说明书(论文)
表1-成员变量表2.1JButton成员变量员变控盘子数目开始开始游戏背景颜色盘子颜色表2-方法表表2Chesspad方法方法名fillRect()g.fillOval()drawString()setBackground()Timer(inta,Objectb)stop()writeactionPerformedevaluate功能绘制出矩形区域绘制相同数目点绘制出A,B,C座设置背景颜色和盘子颜色创建一个计时器停止计时器计时保存文件事件处理评估备注构造方法构造方法构造方法构造方法构造方法接口方法接口方法变StringStringStringStringString类JLabelrenew.setTextrenew.setTextbgcolorpzcolor称
3
辽宁工业大学课程设计说明书(论文)
2.4详细设计HannoiWindow.javaimportjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.Timer;importsun.audio.*;importjava.util.*;importjava.util.Date;importjava.io.*;publicclassHannoiWindowextendsJFrameimplementsActionListener,ItemListener{Towertower=null;intamountOfDisc=3;char[]towerName={'A','B','C'};JButtonrenew=null;JButtonautoButton=null;Timert;JTextFieldtimeShow,w11,h11,w22,h22;JPanelpanel1,panel2;JSplitPanerightPanel,leftPanel;TowerPoint[]pointD;TowerPoint[]pointE;JPanelcenter=newJPanel();longtime1=0,leftTime,leftHour,leftMinute,leftSecond;FlowLayoutflow;JComboBoxli;JButtonbt1,bt2;JPanelmax,min;JLabelshumu;JPanelyanse;JButtonbgcolor,pzcolor;JCheckBoxyinyue;ContinuousAudioDataStreamcas;HannoiWindow(){tower=newTower(towerName);tower.setAmountOfDisc(amountOfDisc);tower.setMaxDiscWidth(120);tower.setMinDiscWidth(50);tower.setDiscHeight(16);tower.putDiscOnTower();t=newTimer(1000,this);t.setInitialDelay(1000);timeShow=newJTextField(10);
4
辽宁工业大学课程设计说明书(论文)
timeShow.setHorizontalAlignment(SwingConstants.RIGHT);timeShow.setEditable(false);