版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计任务书学 院信息学院专 业学生姓名班级学号 课程设计题目基于Java的Hannoi塔软件设计实践教学要求与任务:采用java技术设计Hannoi塔软件,设计要求如下:(1) 设计GUI界面的Hannoi塔。Hannoi塔中有三个座,名字分别是A、B和C.初始状态是A座上有3个大小不等的盘子,这些盘子中从座底到座顶按着大小顺序依次摆放在A座上。用户可以用鼠标选中盘子,然后通过拖动鼠标来移动该盘子、释放鼠标来放置该盘子。(2) 程序要求用户在移动盘子的过程中,不允许把大盘放置在小盘的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上。(3) 用户可以通过Hannoi塔界面提供的菜
2、单来选择初级、中级和高级三个级别。初级级别A座上有3个大小不等盘子、中级级别A座上有4个大小不等盘子、高级级别A座上有5个大小不等盘子。(4) 用户可以通过单击Hannoi塔界面上提供的按钮,让程序自动完成把A座上的盘子全部移动到C座上。(5) 用户在移动盘子的过程中,可以随时单击Hannoi塔界面上提供的按钮,重新开始当前的级别。工作计划与进度安排: 第18周:布置课程设计任务,查阅资料,分组设计,程序调试。 第19周:程序调试,编写课程设计报告,验收,答辩。指导教师: 2012年 月 日专业负责人: 2012年 月 日学院教学副院长: 2012年 月 日目录成绩评定表.1课程设计任务书.2
3、绪论.3目录41 相关技术介绍.51.1 开发工具.51.2 应用环境.51.3 问题的提出.51.4 任务设计内容.62 系统需求分析.72.1 界面及其布局设计.72.2 A,B,C座的实现方法.72.2.1 成员变量.82.2.2 方法.82.3 圆盘的实现方法.92.3.1 Disc成员变量.102.3.2 Disc方法.103 系统总体设计.113.1 总体类关系.113.2 总体功能图.113.3 总体流程图.124 系统主要功能设计流程图.134.1 A,B,C座实现流程图.134.2 圆盘画法流程图.135 系统详细设计.156 源代码.207 系统测试.278 总结.28 绪
4、 论汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。解答结果请自己运行计算,程序见尾部。面对庞大的数字(移动圆片的次数),看来,众僧们耗尽毕生精力也不可能完成金片的移动。后来,这个传说就演变为汉诺塔游戏: (1) 有三根杆子A,B,C。A杆上有若干碟子 (2) 每次移动一块碟子,小的只能叠在大的上面 (3) 把所有碟子从A杆全部移到C杆上
5、经过研究发现,汉诺塔的破解很简单,就是按照移动规则向一个方向移动金片:如3阶汉诺塔的移动:AC,AB,CB,AC,BA,BC,AC。此外,汉诺塔问题也是程序设计中的经典递归问题。和汉诺塔故事相似的,还有另外一个印度传说:舍罕王打算奖赏国际象棋的发明人宰相西萨·班·达依尔。国王问他想要什么,他对国王说:“陛下,请您在这张棋盘的第1个小格里赏给我一粒麦子,在第2个小格里给2粒,第3个小格给4粒,以后每一小格都比前一小格加一倍。请您把这样摆满棋盘上所有64格的麦粒,都赏给您的仆人吧!”国王觉得这个要求太容易满足了,就命令给他这些麦粒。当人们把一袋一袋的麦子搬来开始计数时,国王才发
6、现:就是把全印度甚至全世界的麦粒全拿来,也满足不了那位宰相的要求。 那么,宰相要求得到的麦粒到底有多少呢?总数为1+2+22 + +263 =264-1和移完汉诺塔的次数一样。我们已经知道这个数字有多么大了。人们估计,全世界两千年也难以生产这么多麦子! 1 相关技术介绍1.1 开发工具Sun Microsystems公司在推出Java语言的同时,推出了一套开发工具JDK。Sun提供的基于字符模式的Java开发工具包JDK: Java开发工具(JDK)是许多Java专家最初使用的开发环境。Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。 Java源程序编写
7、借助于记事本,Editpuls,UltraEdit等第三方编辑工具。所有的Java文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心JavaAPI是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。JDK 是整个Java的核心,包括了Java运行环境(Java RuntimeEnvirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK,因此掌握JDK是学好Java的第一步。 JDK里面是java类库和java的语言规范,
8、它提供的是无论你用何种开发软件写java程序都必须用到的类库和java语言规范.没有jdk,你的java程序根本就不能用。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比SunJDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。1.2 应用环境(1) 操作系统:Wind
9、ows XP及以上版本(2) 应用软件:JDK2.0 Eclipse6.01.3 问题的提出随着计算机得普及,人们越来越多得接触到计算机,人们得生活工作中无处不有计算机得身影,人们面对长时间的难免会有倦怠的情绪,而人们大多得缓解情绪得网络活动其实并不能起到放松心情得作用。现代人得生活节奏越来越快,有没有一种快速缓解疲倦得游戏呢?我们提出设计一款益智得小游戏,这种游戏不会花太多时间,同时把玩家得思维带动起来,达到一举多得得效果。1.4 任务设计内容(1) 设计Hannoi塔中有三个座,名字分别是A、B和C。初始状态是A座上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上。用
10、户可以用鼠标选中盘子,然后通过拖动鼠标来移动该盘子、释放鼠标来放置该盘子;(2) 程序要求用户在移动盘子过程中,不允许把大盘放置在小盘的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上;(3) 用户可以通过Hannoi塔界面提供的菜单来选择初级、中级、高级三个级别。初级级别A座上有3个大小不等盘子、中级级别A座上有4个大小不等盘子、高级级别A座上有5个大小不等盘子。(4) 用户可以通过单击Hannoi塔界面上提供的按钮,让程序自动完成把A座上的盘子全部移动到C座上;(5) 用户在移动盘子的过程中,可以随时单击Hannoi塔界面上提供的按钮,重新开始当前的级别;(6) 有移动记录功能
11、,即显示用户完成移动盘子所移动的步骤;(7) 在自动移动过程中可以随时暂停、继续。2 系统需求分析2.1 界面及其布局设计 系统的整体布局为:BorderLayout布局, 采用了菜单、按钮、面板等组件,菜单主要包括选择级别盘子个数,,按钮的功能包括重新开始,自动演示,演示,暂停,继续,关闭。2.2 A、B、C座的实现方法 Tower类是javax.swing包中JPanel容器的一个子类,创建的对象tower是HannoiWindow窗口的成员之一,被添加到HannoiWindow窗口的中心位置。标明Tower类的主要成员变量和方法以及和HannoiWindow类之间组合关系的UML图如图2
12、-1所示。图2-1 Tower 类的UML图2.2.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和minDiscW
13、idth的值分别用来确定最大盘子的宽度和最小盘子的宽度,discHeight的值确定每个盘子的高度。(5) pointA、pointB和pointC都是TowerPoint型数组,三个数组的长度与盘子数目相同,即都是amountOfDisc。pointA、pointB和pointC单元都是TowerPoint创建对象,分别用来表示Hannoi塔中三个座上的塔点。A座、B座和C座上的三个塔点分别由pointA、pointB和pointC中的单元来确定。每个座上的三个塔点都是从座顶依次对应数组的相应单元中的TowerPoint对象。(6) handleMouse是HandleMouse类创建的鼠标
14、事件监视器,用来监视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容器调用setDi
15、scHeight(int)方法可以设置盘子的高度。(6) tower容器调用putDiscOnTower ()方法可以将盘子放置在Hannoi塔的A座上,即在pointA指定的塔点上放置disc数组的成员。(7) tower容器调用getAutoMoveDisc ()方法返回其中的AutoMoveDisc对象:autoMoveDisc。tower是HannoiWindow窗口中的成员,当用户单击HannoiWindow窗口中的autoButton按钮时,窗口中的actionPerformed(ActionEvent)方法将被执行,该方法所进行的操作是让tower对象返回其中的AutoMoveD
16、isc对象,该对象是一个对话框,用户可以通过该对话框让程序自动地移动盘子。(8) tower容器调用removeDisk ()方法可以移调tower容器中的盘子。(9) tower容器调用paintComponent (Graphics)方法绘制出塔点的位置和必要的视图。 因此Tower类创建的按钮的效果如图2-2所示。图2-2 Tower创建容器视图2.3 圆盘的实现方法Disc类是javax.swing包中Jbutton类的子类,所创建的对象称作Hannoi塔中的“盘子”。Tower类有Disc类型的数组disc。Disc数组的单元是用Disc创建的对象,被放置在Tower所创建的容器to
17、wer中,用来表示tower中的“盘子”。标明Disc类的主要成员变量、方法以及和Tower类之间组合关系的UML如图2-3所示。 图2-3 Disc类的UML图2.3.1 Disc成员变量(1) number的值确定所创建的“盘子”上的数字号码,通过该号码的大小来确定盘子的大小关系,即号码大的盘子大于号码小的盘子。(2) point是TowerPoint对象,是Disc所创建的“盘子”的一个重要成员。“盘子”被放置在tower容器的塔点上(TowerPoint对象称作塔点),“盘子”通过使用point对象表明自己所在的塔点。2.3.2 Disc方法(1) Disc()构造方法。创建盘子对象时
18、需要使用该构造方法。(2) setNumber(int)。盘子调用该方法设置其上的数字号码。(3) getNumber()方法。盘子调用该方法返回其上的数字号码。(4) setPoint(TowerPoint)方法。盘子调用该方法设置其所在的塔点。(5) getPoint()方法。盘子调用该方法返回其所在的塔点。因此Disc创建的按钮的效果如图2-4所示。图2-4 Disc创建的三个按钮3 系统总体设计3.1 总体类关系在设计Hannoi塔时,需编写6个JAVA源文件:HannoiWindow.Java 、TowerPoint.java、Disc.java、HandleMous.java和Au
19、toMoveDisc.java。Hannoi塔除了要编写的6个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JMenubar,JMenu,JMenuItem和JButton。Hannoi塔所用到得一些重要的类以及类之间的组合关系如图3-1所示:图3-1 类之间的组合关系3.2 总体功能图 根据游戏需求分析,游戏主界面有“选择级别”、“重新开始”、“自动演示”三个按钮,每个按钮分别实现“初级,中级,高级”、“运行游戏”、“自动演示”效果,因此做出总体功能图如图3-2所示: 图3-2 总体功能图3.3 总体流程图 根据游戏相关功能设计,得出总体流程图如图3-3所示: 图3-3
20、 总体流程图4 系统主要功能设计流程图4.1 A、B、C座实现流程图为了整体布局的美观,首先要画出A、B、C座,主要经过“画三条竖线”,“画三个点”、“画矩形区域”、“画座名”几个步骤,得出制作流程图如图4-1所示:图4-1 A、B、C座实现流程图4.2 圆盘画法流程图与此同时,圆盘的制作要经过“设置盘子编号”、“设置盘子塔点”、“将盘子放在指定位置”三个步骤,得出圆盘的制作流程图如图4-2所示:图4-2 圆盘画法流程图5 系统详细设计5.1 HannoiWindow.java(主类) HannoiWindow类负责创建Hannoi塔的主窗口,该类含有main方法,Hannoi塔从该类开始执行
21、。HannoiWindow类的成员变量中有五种重要类型的对象,一个int基本型数据和一个char行数组。五种类型的对象分别是JMenubar ,JMenu,JMenuItem和JButton对象。 HannoiWindow创建的窗口以及其中的主要成员对象如图5-1所示:图5-1 HannoiWindow窗口及主要的成员对象5.2 Tower.javaTower类是javax.swing报中的JPanel容器的子类,创建的容器被添加到HannoiWindow窗口的中心。Tower类的成员变量中有四种重要的类型对象、一个int基本型数据和一个char型数组。Tower创建的窗口以及其中的主要成员对
22、象如图5-2所示: 图5-2 Tower创建的tower容器5.3 Disc.java Disc类是JButton的一个子类,创建的对象是Tower容器中的一个按钮,用来表示Tower中的“盘子”。 Disc创建的窗口以及其中的主要成员对象如图5-3所示:图5-3 Disc创建的三个按钮5.4 TowerPoint.java TowerPint.Java类负责在Tower中创建表示位置的塔的对象。 Disc创建的窗口以及其中的主要成员对象如图5-4所示: 图5-4 TowerPoint绘制出的塔顶 TowerPoint所创建的对象将作为HannoiTower类中TowerPoint型数组poi
23、ntA、pointB和pointC中的元素。标明TowerPoint类的主要成员变量、方法以及Tower类之间组合关系的UML 图如图5-5所示。 TowerPointTower PointA:TowerPointPointB: TowerPointPointC: TowerPointx,y:int有盘子:boolean盘子:Disk Equals(TowerPoint):BooleanputDisc(Component,Container):voidgetDiscOnPoint(): DiscremoveDisc(Component,Container):voidTowerPoint(int
24、,int):无类型是否有盘子():Booleanset有盘子(boolean):voidgetX(): intgetY(): int放置盘子():void获取盘子():Disk 图5-5 TowerPoint类的UML图以下是UML图中有关数据和方法的详细说明。 成员变量 x和y是TowerPoint对象中的两个int型数据,用来表示塔点在容器tower中的坐标。tower容器的坐标原点是容器的左上角,向右是x轴的正方向,向下是y轴的正方向。有盘子是boolean数据,如果当前塔点上有盘子时,该数据为true;否则为false。盘子是Disk声明的对象,用来存放当前塔点上的盘子对象的引用,如果
25、当前塔点上有盘子,盘子存放的引用是null,即盘子是空对象。 方法TowerPoint(int,int)是构造方法,用来创建塔点对象。塔点对象调用是否有盘子()方法可以返回一个boolean数据,如果调用该方法的塔点上有盘子,是否有盘子()方法返回true;否则返回false。塔点对象调用set有盘子(boolean)方法可以根据参数的值设置当前塔点上是否有盘子。塔点对象调用getX()和getY()方法可以返回塔点的坐标中的x轴坐标和y轴坐标。塔点对象调用Equals(TowerPoint)方法可以判断当前塔点是否和参数指定的塔点相同。塔点对象调用Equals(TowerPoint)方法pu
26、tDisc(Component com,Container con)方法,将参数com指定的盘子放置在参数con指定的容器中,盘子所在位置由当前的塔点坐标所确定,即将盘子放置在当前塔点上。塔点对象调用getDiscOnPoint()方法可以返回当前塔点上的盘子。塔点对象调用removeDisc(Component com,Container con)方法可以移掉当前塔点上的盘子。5.5 HandleMouse.java HandleMouse类创建的对象负责处理鼠标事件。 HandleMouse类实现了MouseListener和MouseMotionListener接口,创建的对象handl
27、eMouse是tower容器的成员之一,负责监视tower容器中Disc盘子对象上的鼠标事件。当用户用鼠标点击tower中的盘子,并拖动鼠标时,handleMouse对象负责给出移动盘子的有关算法。标明HandleMouse类的主要成员变量、方法以及和Tower类之间的组合关系的UML图如图5-6所示。MouseMotionListenerMouseListenerTower HandleMousehandleMouse:handleMousepointA,pointB,pointC:TowerPointstartPoint,endPoint:TowerPointcon;ContainerHa
28、ndleMouse(Container con):无类型SetPointA(TowerPoint):voidSetPointB(TowerPoint):voidSetPointC(TowerPoint):voidmousePressed(MouseEvent):voidmouseDragged(MouseEvent):voidmouseReleased(MouseEvent):void图5-6 Tower类的UML图 5.6 AutoMoveDisc.java AutoMoveDisc类创建的对象负责走动移动盘子从一个座到另一个座。 AutoMoveDisc创建的窗口以及其中的主要成员对象如图
29、5-7所示: (a)自动移动盘子从A到C (b)对话框显示文字信息图5-7 AutoMoveDisc类创建的对话框AutoMoveDisc类实现了ActionListener接口,创建的对象autoMoveDisc是Tower的成员之一。标明AutoMoveDisc类的主要成员变量、方法、以及和Tower类之间组合关系的UML图如图5-8所示。ActionListener AutoMoveDiscAmountOfDisc: int ShowStep:JTextAreapointA,pointB,pointC, TowerPoint bStart,bStop,bContinue,bCldse:t
30、owerName: char JButtoncon: Container time: TimermoveStep:StringBufferTowerautoMoveDisc:AutoMoveDiscAutoMoveDisc(Container con):无类型SetPointA(TowerPoint):voidSetPointB(TowerPoint):voidSetPointC(TowerPoint):voidactionPerformed(ActionEvent):voidsetTowerName(char):voidsetAmountOfDisc(int):voidsetMoveStep
31、(int,char,char,char):voidAutoMoveDisc(char,char):void 图5-7 AutoMoveDisc类的UML图图5-8 AutoMoveDisc类的UML图6 源代码import javax.swing.*;import java.awt.*;import java.awt.event.*;public class HannoiWindow extends JFrame implements ActionListener Tower tower=null; int amountOfDisc=3; char towerName='A',
32、'B','C' JMenuBar bar; JMenu menuGrade; JMenuItem oneGradeItem,twoGradeItem,threeGradeItem; JButton renew=null; JButton autoButton=null; JPanel center=new JPanel(); HannoiWindow() tower=new Tower(towerName); tower.setAmountOfDisc(amountOfDisc); tower.setMaxDiscWidth(120); tower.setMin
33、DiscWidth(50); tower.setDiscHeight(16); tower.putDiscOnTower(); add(tower,BorderLayout.CENTER); bar=new JMenuBar(); menuGrade=new JMenu("选择级别"); oneGradeItem=new JMenuItem("初级"); twoGradeItem=new JMenuItem("中级"); threeGradeItem=new JMenuItem("高级"); menuGrade.a
34、dd(oneGradeItem); menuGrade.add(twoGradeItem); menuGrade.add(threeGradeItem); bar.add(menuGrade); setJMenuBar(bar); oneGradeItem.addActionListener(this); twoGradeItem.addActionListener(this); threeGradeItem.addActionListener(this); renew=new JButton("重新开始"); renew.addActionListener(this);
35、autoButton=new JButton("自动演示"); autoButton.addActionListener(this); JPanel north=new JPanel(); north.add(renew); north.add(autoButton); String mess="将全部盘子从"+towerName0+"座搬运到"+towerName1+ "座或"+towerName2+"座" JLabel hintMess=new JLabel(mess,JLabel.CENT
36、ER); north.add(hintMess); add(north,BorderLayout.NORTH); setResizable(false); setVisible(true); setBounds(60,60,460,410); validate(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public void actionPerformed(ActionEvent e) if(e.getSource()=oneGradeItem) amountOfDisc=3; tower.setAmountOfDisc(amount
37、OfDisc); tower.putDiscOnTower(); else if(e.getSource()=twoGradeItem) amountOfDisc=4; tower.setAmountOfDisc(amountOfDisc); tower.putDiscOnTower(); else if(e.getSource()=threeGradeItem) amountOfDisc=5; tower.setAmountOfDisc(amountOfDisc); tower.putDiscOnTower(); else if(e.getSource()=renew) tower.setA
38、mountOfDisc(amountOfDisc); tower.putDiscOnTower(); else if(e.getSource()=autoButton) tower.setAmountOfDisc(amountOfDisc); tower.putDiscOnTower(); int x=this.getBounds().x+this.getBounds().width; int y=this.getBounds().y; tower.getAutoMoveDisc().setLocation(x,y); tower.getAutoMoveDisc().setSize(280,t
39、his.getBounds().height); tower.getAutoMoveDisc().setVisible(true); validate(); public static void main(String args) new HannoiWindow(); Tower类import javax.swing.*;import java.awt.*;public class Tower extends JPanel int amountOfDisc=3; Disc disc; int maxDiscWidth,minDiscWidth,discHeight; char towerNa
40、me; TowerPoint pointA,pointB,pointC; HandleMouse handleMouse; AutoMoveDisc autoMoveDisc; Tower(char towerName) handleMouse=new HandleMouse(this); this.towerName=towerName; setLayout(null); setBackground(new Color(200,226,226); public void setAmountOfDisc(int number) if(number<=1) amountOfDisc=1;
41、else amountOfDisc=number; public void setMaxDiscWidth(int m) maxDiscWidth=m; public void setMinDiscWidth(int m) minDiscWidth=m; public void setDiscHeight(int h) discHeight=h; public AutoMoveDisc getAutoMoveDisc() return autoMoveDisc; public void putDiscOnTower() removeDisk(); int n=(maxDiscWidth-min
42、DiscWidth)/amountOfDisc; disc=new DiscamountOfDisc; for(int i=0;i<disc.length;i+) disci=new Disc(); disci.setNumber(i); int diskwidth=minDiscWidth+i*n; disci.setSize(diskwidth,discHeight); disci.addMouseListener(handleMouse); disci.addMouseMotionListener(handleMouse); pointA=new TowerPointamountO
43、fDisc; pointB=new TowerPointamountOfDisc; pointC=new TowerPointamountOfDisc; int vertialDistance=discHeight; for(int i=0;i<pointA.length;i+) pointAi=new TowerPoint(maxDiscWidth,100+vertialDistance); vertialDistance=vertialDistance+discHeight; vertialDistance=discHeight; for(int i=0;i<pointB.le
44、ngth;i+) pointBi=new TowerPoint(2*maxDiscWidth,100+vertialDistance); vertialDistance=vertialDistance+discHeight; vertialDistance=discHeight; for(int i=0;i<pointC.length;i+) pointCi=new TowerPoint(3*maxDiscWidth,100+vertialDistance); vertialDistance=vertialDistance+discHeight; for(int i=0;i<poi
45、ntA.length;i+) pointAi.putDisc(disci,this); handleMouse.setPointA(pointA); handleMouse.setPointB(pointB); handleMouse.setPointC(pointC); autoMoveDisc=new AutoMoveDisc(this); autoMoveDisc.setTowerName(towerName); autoMoveDisc.setAmountOfDisc(amountOfDisc); autoMoveDisc.setPointA(pointA); autoMoveDisc
46、.setPointB(pointB); autoMoveDisc.setPointC(pointC); validate(); repaint(); public void removeDisk() if(pointA!=null) for(int i=0;i<pointA.length;i+) pointAi.removeDisc(pointAi.getDiscOnPoint(),this); pointBi.removeDisc(pointBi.getDiscOnPoint(),this); pointCi.removeDisc(pointCi.getDiscOnPoint(),th
47、is); public void paintComponent(Graphics g) super.paintComponent(g); int x1,y1,x2,y2; x1=pointA0.getX(); y1=pointA0.getY()-discHeight/2; x2=pointAamountOfDisc-1.getX(); y2=pointAamountOfDisc-1.getY()+discHeight/2; g.drawLine(x1,y1,x2,y2); x1=pointB0.getX(); y1=pointB0.getY()-discHeight/2; x2=pointBamountOfDisc-1.getX(); y2=pointBamountOfDisc-1.getY()+discHeight/2; g.drawLine(x1,y1,x2,y2); x1=pointC0.getX(); y1=pointC0.getY()-discHeight/2; x2=pointCamountOfDisc-1.getX(); y2=pointCamountOfDisc-1.getY()+discHeight/2; g.drawLine(x1,y1,x2,y2); g.setColor(Color.blue); x1=pointAamountOfDisc-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46351-2025人工智能多算法管理技术要求
- GB/T 4086.1-2025数据分析与决策统计分布数值表第1部分:正态分布
- 化肥代理销售合同范本
- 劳动承包提成合同范本
- 印度药房转让合同范本
- 口才机构合作合同范本
- 资产管理合同的法律架构
- 合伙开店创业合同范本
- 公司注销委托合同范本
- 出租桥梁运输合同范本
- 公路养护管理计划与执行报告
- 2025年银行招聘各银行笔试真题(附答案)
- T/CCSAS 025-2023化工企业作业安全分析(JSA)实施指南
- MOOC 旅游学概论-中国地质大学(武汉) 中国大学慕课答案
- 新生儿肺出血-课件
- qcr - 铁路桥梁工程风险管理技术规范
- 《现当代文学》课程教学大纲
- 人工智能第2章知识表示课件
- 机动车检测站应急预案
- [PPT]汶川地震灾区水利水电工程震害调查及分析
- GB∕T 40802-2021 通用铸造碳钢和低合金钢铸件
评论
0/150
提交评论