




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、«面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計報告題 目:Hannoi塔游戲院(系):信息科學(xué)與工程學(xué)院專業(yè)班級:計算機科學(xué)與技術(shù) 1003班學(xué)生姓名:梁曉明學(xué) 號:學(xué)101183107指導(dǎo)教師:殳奕20 13年6 月8 日至20 13年6 月2日華中科技大學(xué)武昌分校制面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計任務(wù)書一、設(shè)計(調(diào)查報告/論文)題目Hannoi塔游戲二、設(shè)計(調(diào)查報告/論文)主要內(nèi)容內(nèi)容:設(shè)計GUI界面的Hannoi塔。漢諾塔中有三個座,名字分別為 A, B, C。初始狀態(tài)時 A塔上有3個大小不等的盤子,這些盤子從座底到座頂按著大小順序依次擺放在 A座上。 用戶可以用鼠標(biāo)選中盤子,然后通過拖動鼠標(biāo)來移動盤子
2、。釋放鼠標(biāo)來放置該盤子。基本功能與要求:1程序要求用戶在移動盤子的過程中,不允許吧大盤子放置在小盤子的上面,用戶 最終要完成的是把A座上的全部盤子移動到B座或C座上。2用戶可以通過Hannoi塔界面的提供的改變盤子數(shù)目功能來改變盤子的數(shù)目,同時可以改變盤子的大小以及改變盤子和界面的背景顏色,而且還可以選擇控制背景音樂的播放。3用戶可以通過單擊Hannoi塔界面上提供的按鈕,讓程序自動完成把A座上的盤子 全部移動到C座上。4用戶在移動盤子的過程中,可以隨時單擊Hannoi塔界面上提供的按鈕,重新開始。三、原始資料1 .面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計指導(dǎo)書2 .耿祥義.JAVA大學(xué)實用教程.北京:清華大
3、學(xué)出版社,2009.四、要求的設(shè)計(調(diào)查/論文)成果1 .課程設(shè)計報告2 .課程設(shè)計軟件五、進程安排布置任務(wù),查找資料、需求分析1天總體設(shè)計1天詳細(xì)設(shè)計1.5天編制源程序?qū)崿F(xiàn)3.5天測試與修改1天撰寫課設(shè)報告2天六、主要參考資料1張廣彬.Java課程設(shè)計案例精編(第二版).北京:清華大學(xué)出版社,2011.2耿祥義.Java課程設(shè)計(第二版).北京:清華大學(xué)出版社,2008.3耿祥義.JAVA大學(xué)實用教程.北京:清華大學(xué)出版社,2009.4鄒林達(dá).陳國君Java2程序設(shè)計基礎(chǔ).北京:清華大學(xué)出版社,2010.5鄒林達(dá).Java2程序設(shè)計基礎(chǔ)實驗指導(dǎo).北京:清華大學(xué),2010.指導(dǎo)教師(簽名)20
4、1需求與總體設(shè)計 11.1設(shè)計目標(biāo) 11.2主體功能11.3流程圖21. 4類圖22詳細(xì)設(shè)計 31.1 總體功能設(shè)計 31.2 HannoiWindow 類 32. 3 Tower 類 32. 4 Di sc 類52.1 TowerPoint 類 52.2 HandleMouse 類 62.3 AutoMoveDisc 類 63編碼實現(xiàn) 73.1 HannoiWindow.java 73.2 Tower.java 93.3 Disc.java 133.4 TowerPoint.java143.5 HandleMouse.java153.6 AutoMoveDisc.java 204系統(tǒng)測試 2
5、64.1 測試方案 264.2 測試結(jié)果 265總結(jié) 281 需求與總體設(shè)計1.1 設(shè)計目的可以正常運行程序,并且按照設(shè)計目的預(yù)想的完成具體功能能夠全面、深入理解和熟練掌握所學(xué)內(nèi)容,并能夠用其分析、設(shè)計和解答類似問題;對此能夠較好地理解和掌握,能夠進行簡單分析和判斷;能編寫出具有良好風(fēng)格的程序 。掌握J(rèn)AVA程序設(shè)計的基本技能和面向?qū)ο蟮母拍詈头椒私舛嗑€程、安全和網(wǎng)絡(luò)等編程技術(shù)。同時培養(yǎng)學(xué)生進行分析問題、解決問題的能力;培養(yǎng)學(xué)生進行設(shè)計分析、設(shè)計方法、設(shè)計操作與測試、設(shè)計過程的觀察、理解和歸納能力的提高。 JAVA 程序設(shè)計的設(shè)計目的是加深對理論教學(xué)內(nèi)容的理解和掌握,使學(xué)生較系統(tǒng)地掌握程序設(shè)
6、計及其在網(wǎng)絡(luò)開發(fā)中的廣泛應(yīng)用,基本方法及技巧,為學(xué)生綜合運用所學(xué)知識,利用軟件工程為基礎(chǔ)進行軟件開發(fā)、并在實踐應(yīng)用方面打下一定基礎(chǔ)。1.2 主體功能( 1)設(shè)計GUI界面的Hannoi塔。漢諾塔中有三個座,名字分別為 A, B, C。初始 狀態(tài)時A 塔上有3 個大小不等的盤子,這些盤子從座底到座頂按著大小順序依次擺放在A座上。用戶可以用鼠標(biāo)選中盤子,然后通過拖動鼠標(biāo)來移動盤子。釋放鼠標(biāo)來放置該 盤子。( 2)程序要求用戶在移動盤子的過程中,不允許吧大盤子放置在小盤子的上面,用戶最終要完成的是把 A座上的全部盤子移動到B座或C座上。( 3)用戶可以通過Hannoi 塔界面的提供的改變盤子數(shù)目功能
7、來改變盤子的數(shù)目,同時可以改變盤子的大小以及改變盤子和界面的背景顏色,而且還可以選擇控制背景音樂的播放。( 4)用戶可以通過單擊Hannoi 塔界面上提供的按鈕,讓程序自動完成把 A 座上的盤子全部移動到C座上。( 5)用戶在移動盤子的過程中,可以隨時單擊Hannoi 塔界面上提供的按鈕,重新開始。271.3流程圖IB uttont1.4類圖Hannoi Window*M 任口 L-rrn + -二 mdlqzoLIKfU口T 二 wgtP znlt2詳細(xì)設(shè)計2.1 總體功能設(shè)計在設(shè)計 hannoi 塔時,需編寫 6 個 java 源文件:HannoiWindow.java、Tower.jav
8、a、 TowerPoint.java 、Disc.java 、 HandleMouse.java 和 AutoMoveDisc.java 。Hannoi塔除了要編寫的6個Java源文件所給出的類外,還需要Java系統(tǒng)提供的一 些重要的類,如 JMenuBaK JMenu JMenuItem和JButton。Hannoi塔所用到的一些重 要的類以及之間的組合關(guān)系。2.2 HannoiWindow 類Tower-ToweraiHDinitOfDisc mttc-erNa-diarVwT8v«P8TraA/rterbaiJMemBaimenuGTaderJA laiu&neCh a
9、dLdtnkt wcGiad et ail thre eGr adet air endt e m'hAAAJ- 7-2、-乜3renew autoBiltanzBui onHam fliwindmvQ:無類型X lainf String): voi d.x;tiohPxfbiiiKdan ciiE 野三皿菖'而d2.3 Tower 類1、成員變量(1)amountOfDisc是int型數(shù)據(jù)。amountOfDisc值用來確定tower對象中盤子的數(shù) 目,即確定tower對象中Disc類型數(shù)組disc的長度。(2)disc是Disc型數(shù)組,該數(shù)組的長度由amountOfDisc值
10、來確定。Disc數(shù)組的每 個單元中存放一個Disc對象,依次表明tower對象中有怎樣多的盤子。(3)towerName是char型數(shù)組,長度為3,其三個單元的默認(rèn)取值依次是 A、B和C。towerName是數(shù)組的單元白值用來確定tower中三個座的名字。(4)maxDiscWidth和minDiscWidth的值分別用來確定最大盤子的寬度和最小盤子 的寬度,discHeight的值確定每個盤子的高度。(5)pointA、pointB和pointC都是TowerPoint型數(shù)組,三個數(shù)組的長度與盤子數(shù) 目相同,即都是 amountOfDisc。pointA、pointB 和 pointC 單元
11、都是 TowerPoint 創(chuàng)建 對象,分別用來表示Hannoi塔中三個座上的塔點。A座、B座和C座上的三個塔點分別 由pointA、pointB和pointC中的單元來確定。每個座上的三個塔點都是從座頂依次對 應(yīng)數(shù)組的相應(yīng)單元中的TowerPoint對象。例如,A座最上面的塔點是pointA0,中間 的塔點是pointA1,最下面的塔點是pointA2。(6)handleMouse是HandleMouse類創(chuàng)建的鼠標(biāo)事件監(jiān)視器,用來監(jiān)視disc數(shù)組的Disc對象上觸發(fā)的鼠標(biāo)事件。autoMoveDisc是AutoMoveDisc創(chuàng)建的對話框。通過該對話框可以實現(xiàn)程序自動 移動盤子。2、方法T
12、ower(char口)是構(gòu)造方法,負(fù)責(zé)完成tower容器的初始化。(2)tower 容器調(diào)用 setAmountOfDisc(int)方法可以設(shè)置 amountOfDisc 的值。(3)tower容器調(diào)用setMaxDiscWidth(int) 方法可以設(shè)置最大的盤子的大小。(4) tower 容器調(diào)用setMinDiscWidth(int)方法可以設(shè)置最小的盤子的大小。(5) tower容器調(diào)用setDiscHeight(int)方法可以設(shè)置盤子的高度。(6)tower容器調(diào)用putDiscOnTower()方法可以將盤子放置在 Hannoi塔的A座上, 即在pointA指定的塔點上放置di
13、sc數(shù)組的成員。tower 容器調(diào)用 getAutoMoveDisc()方法返回其中的AutoMoveDisc對象:autoMoveDisco tower 是 HannoiWindow窗口中的成員,當(dāng)用戶單擊 HannoiWindowW口 中的autoButton按鈕時,窗口中的 actionPerformed(ActionEvent)方法將被執(zhí)行,該方法所進行的操作是讓tower對象返回其中的AutoMoveDisc對象,該對象是一個對話 框,用戶可以通過該對話框讓程序自動地移動盤子。(8) tower容器調(diào)用removeDisk ()方法可以移調(diào)tower容器中的盤子。(9) tower
14、容器調(diào)用paintComponent (Graphics) 方法繪制出塔點的位置和必要的 視圖。Tower創(chuàng)建的容器效果如圖所示。B座2.4 Disc 類TButtOUH' wwvwww蛔:DtscD+J戚城:期出痂(05£彳感嬲/(圜:預(yù)如聯(lián)助jffigl): *錄就現(xiàn)成嫂默加。g<mtO:勰然泳十2.5 TowerPoint 類TowerM抑haveDix: booleain-TrlrYTpnrTTFr TrTTFirTTTrTTTTr颯r 陛Jt朝喊:胴目燉巾 出血比岫獻(xiàn)嬲工皿直設(shè)固聞Linfl:無類型,加瞰瞰嘿融坨:風(fēng)賑映1qli 渡 L加nerH 皿無類型,
15、vol” R如g voidU*JU Contamer2.6 HandleMouse 類Jfe噸忠岫熙(Cont疝ier): 助政m網(wǎng)北R宜時ijjjID: 案甲a?曲加/耳外射期): sctp.5>imCi 方那弁£muD 二磁煤需gjpR需JEVU: voidEd-由息與黑班1弱區(qū)3g口貓E三黑©: void,-12.7 AutoMoveDisc 類3 編碼實現(xiàn)3.1HannoiWindow.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class HannoiWi
16、ndow extends JFrame implements ActionListener Tower tower=null;int amountOfDisc=3;char towerName='A','B','C'JMenuBar bar;JMenu menuGrade;JMenuItem oneGradeItem,twoGradeItem,threeGradeItem;JButton renew=null;JButton autoButton=null;JPanel center=new JPanel();HannoiWindow()towe
17、r=new Tower(towerName);tower.setAmountOfDisc(amountOfDisc);tower.setMaxDiscWidth(120);tower.setMinDiscWidth(50);tower.setDiscHeight(16);tower.putDiscOnTower();add(tower,BorderLayout.CENTER);bar=new JMenuBar();menuGrade=new JMenu(" 選擇級別 ");oneGradeItem=new JMenuItem("初級 ");twoGrad
18、eItem=new JMenuItem("中級 ");threeGradeItem=new JMenuItem(" 高級 ");menuGrade.add(oneGradeItem);menuGrade.add(twoGradeItem);menuGrade.add(threeGradeItem);bar.add(menuGrade);setJMenuBar(bar);oneGradeItem.addActionListener(this);twoGradeItem.addActionListener(this);threeGradeItem.addAc
19、tionListener(this);renew=new JButton(" 重新開始 ");renew.addActionListener(this);autoButton=new JButton(" 自動演示 ");autoButton.addActionListener(this);JPanel north=new JPanel();north.add(renew);north.add(autoButton);String mess=" 將全部盤子從"+towerName0+" 座搬運到 "+towerNam
20、e1+"座或 "+towerName2+" 座"JLabel hintMess=new JLabel(mess,JLabel.CENTER);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
21、 e)if(e.getSource()=oneGradeItem)amountOfDisc=3;tower.setAmountOfDisc(amountOfDisc);tower.putDiscOnTower();else if(e.getSource()=twoGradeItem)amountOfDisc=4;tower.setAmountOfDisc(amountOfDisc);tower.putDiscOnTower();else if(e.getSource()=threeGradeItem)amountOfDisc=5;tower.setAmountOfDisc(amountOfDi
22、sc);tower.putDiscOnTower();else if(e.getSource()=renew)tower.setAmountOfDisc(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
23、().setLocation(x,y);tower.getAutoMoveDisc().setSize(280,this.getBounds().height);tower.getAutoMoveDisc().setVisible(true);validate();public static void main(String args)new HannoiWindow();3.2 Tower.javaimport javax.swing.*;import java.awt.*;public class Tower extends JPanelint amountOfDisc=3;Disc di
24、sc;int maxDiscWidth,minDiscWidth,discHeight;char towerName;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 setAmountOfDis
25、c(int number) if(number<=1)amountOfDisc=1;elseamountOfDisc=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(
26、) removeDisk();int n=(maxDiscWidth-minDiscWidth)/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)
27、;pointA=new TowerPointamountOfDisc;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(i
28、nt i=0;i<pointB.length;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(in
29、t i=0;i<pointA.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);autoMov
30、eDisc.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(),this);
31、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.g
32、etX();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.getX()-maxDiscWidth/2;y1=pointA
33、amountOfDisc-1.getY()+discHeight/2;x2=pointCamountOfDisc-1.getX()+maxDiscWidth/2;y2=pointCamountOfDisc-1.getY()+discHeight/2;int length=x2-x1,height=6;g.fillRect(x1,y1,length,height);int size=5;for(int i=0;i<pointA.length;i+)g.fillOval(pointAi.getX()-size/2,pointAi.getY()-size/2,size,size);g.fill
34、Oval(pointBi.getX()-size/2,pointBi.getY()-size/2,size,size);g.fillOval(pointCi.getX()-size/2,pointCi.getY()-size/2,size,size);g.drawString(towerName0+"座",pointAamountOfDisc-1.getX(),pointAamountOfDisc-1.getY()+50);g.drawString(towerName1+"座",pointBamountOfDisc-1.getX(),pointBamou
35、ntOfDisc-1.getY()+50);g.drawString(towerName2+"座",pointCamountOfDisc-1.getX(),pointCamountOfDisc-1.getY()+50); 3.3 Disc.javaimport javax.swing.*;import java.awt.*;public class Disc extends JButtonint number;TowerPoint point;Disc()setBackground(Color.cyan);public void setNumber(int n) numbe
36、r=n;public int getNumber() return number;public void setPoint(TowerPoint p) point=p;public TowerPoint getPoint() return point;3.4 TowerPoint.javaimport java.awt.*;public class TowerPointint x,y;boolean haveDisc;Disc disc=null;public TowerPoint(int x,int y)this.x=x;this.y=y;public boolean isHaveDisc(
37、)return haveDisc;public void setHaveDisc(boolean boo) haveDisc=boo;public int getX() return x;public int getY() return y;public boolean equals(TowerPoint p)if(p.getX()=this.getX()&&p.getY()=this.getY() return true;elsereturn false;public void putDisc(Component com,Container con)disc=(Disc)co
38、m;con.setLayout(null);con.add(disc);int w=disc.getBounds().width;int h=disc.getBounds().height;disc.setBounds(x-w/2,y-h/2,w,h);haveDisc=true;disc.setPoint(this);con.validate();public Disc getDiscOnPoint() return disc;public void removeDisc(Component com,Container con) if(com!=null)con.remove(com);co
39、n.validate();3.5 HandleMouse.javaimport java.awt.event.*;import java.awt.*;public class HandleMouse implements MouseListener,MouseMotionListener TowerPoint pointA,pointB,pointC;TowerPoint startPoint=null,endPoint=null;int leftX,leftY,x0,y0;boolean move=false,countTime=false;Container con;HandleMouse
40、(Container con) this.con=con;public void setPointA(TowerPoint pointA) this.pointA=pointA;public void setPointB(TowerPoint pointB)this.pointB=pointB;public void setPointC(TowerPoint pointC) this.pointC=pointC;public void mousePressed(MouseEvent e) move=false;Disc disc=null;disc=(Disc)e.getSource();st
41、artPoint=disc.getPoint();x0=e.getX();y0=e.getY();int m=0;for(int i=0;i<pointA.length;i+)if(pointAi.equals(startPoint)m=i;if(m>0&&(pointAm-1.isHaveDisc()=false) move=true;break;else if(m=0) move=true;break;for(int i=0;i<pointB.length;i+) if(pointBi.equals(startPoint)m=i;if(m>0&
42、;&(pointBm-1.isHaveDisc()=false) move=true;break;else if(m=0)move=true;break;for(int i=0;i<pointC.length;i+)if(pointCi.equals(startPoint)m=i;if(m>0&&(pointCm-1.isHaveDisc()=false) move=true;break;else if(m=0) move=true;break;public void mouseMoved(MouseEvent e)public void mouseDrag
43、ged(MouseEvent e)Disc disc=null;disc=(Disc)e.getSource();leftX=disc.getBounds().x;leftY=disc.getBounds().y;int x=e.getX();int y=e.getY();leftX=leftX+x;leftY=leftY+y;if(move=true)disc.setLocation(leftX-x0,leftY-y0);public void mouseReleased(MouseEvent e)Disc disc=null;disc=(Disc)e.getSource();Rectang
44、le rect=disc.getBounds();boolean location=false;int x=-1,y=-1;for(int i=0;i<pointA.length;i+)x=pointAi.getX();y=pointAi.getY();if(rect.contains(x,y)endPoint=pointAi;if(i=pointA.length-1&&endPoint.isHaveDisc()=false)location=true;break;else if(i<pointA.length-1&&pointAi+1.isHave
45、Disc()=true&&endPoint.isHaveDisc()=false&&pointAi+1.getDiscOnPoint().getNumber()>disc.getNumber()location=true;break;for(int i=0;i<pointB.length;i+)x=pointBi.getX();y=pointBi.getY();if(rect.contains(x,y)endPoint=pointBi;if(i=pointB.length-1&&endPoint.isHaveDisc()=false)
46、location=true;break;elseif(i<pointB.length-1&&pointBi+1.isHaveDisc()=true&&endPoint.isHaveDisc()=false&&pointBi+1.getDiscOnPoint().getNumber()>disc.getNumber()location=true;break;for(int i=0;i<pointC.length;i+)x=pointCi.getX();y=pointCi.getY();if(rect.contains(x,y)en
47、dPoint=pointCi;if(i=pointC.length-1&&endPoint.isHaveDisc()=false) location=true;break;else if(i<pointC.length-1&&pointCi+1.isHaveDisc()=true &&endPoint.isHaveDisc()=false &&pointCi+1.getDiscOnPoint().getNumber()>disc.getNumber()location=true;break;if(endPoint!=n
48、ull&&location=true)endPoint.putDisc(disc,con);startPoint.setHaveDisc(false);elsestartPoint.putDisc(disc,con);public void mouseEntered(MouseEvent e)public void mouseExited(MouseEvent e)public void mouseClicked(MouseEvent e)3.6 AutoMoveDisc.javaimport java.awt.*;import java.awt.event.*;import
49、javax.swing.*;public class AutoMoveDisc extends JDialog implements ActionListener int amountOfDisc=3;TowerPoint pointA,pointB,pointC;char towerName;Container con;StringBuffer moveStep;JTextArea showStep;JButton bStart,bStop,bContinue,bClose;Timer time;int i=0,number=0;AutoMoveDisc(Container con)setM
50、odal(true);setTitle(" 自動演示搬盤子過程");this.con=con;moveStep=new StringBuffer();time=new Timer(1000,this);time.setInitialDelay(10);showStep=new JTextArea(10,12);bStart=new JButton(" 演示 ");bStop=new JButton(" 暫停 ");bContinue=new JButton(" 繼續(xù) ");bClose=new JButton(&q
51、uot; 關(guān)閉 ");bStart.addActionListener(this);bStop.addActionListener(this);bContinue.addActionListener(this);bClose.addActionListener(this);JPanel south=new JPanel();south.setLayout(new FlowLayout();south.add(bStart);south.add(bStop);south.add(bContinue);south.add(bClose);add(new JScrollPane(showS
52、tep),BorderLayout.CENTER);add(south,BorderLayout.SOUTH);setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);towerName=new char3;addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)time.stop();setVisible(false););public void setPointA(TowerPoint pointA) this.pointA=pointA;pu
53、blic void setPointB(TowerPoint pointB) this.pointB=pointB;public void setPointC(TowerPoint pointC) this.pointC=pointC;public void setTowerName(char name)if(name0=name1|name0=name2|name1=name2)towerName0='A'towerName1='B'towerName2='C'elsetowerName=name;public void setAmountOf
54、Disc(int n) amountOfDisc=n;public void actionPerformed(ActionEvent e) if(e.getSource()=time)number+;char cStart,cEnd;if(i<=moveStep.length()-2)cStart=moveStep.charAt(i);cEnd=moveStep.charAt(i+1);showStep.append("("+number+")從"+cStart+”座搬一個盤子到"+cEnd+"座n");autoMoveDisc(cStart,cEnd);i=i+2;if(i>=moveStep.length()-1)time.stop
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 防彈玻璃施工方案
- 戶內(nèi)沉箱滲水施工方案
- TACCEM 129-2024 糧食環(huán)鏈刮板輸送機
- 鐵路伸縮縫圖片施工方案
- 威海鋁鎂錳屋面施工方案
- 密閉空間安全施工方案
- 農(nóng)田水利灌溉施工方案
- 三門峽止水螺栓施工方案
- 浙江廚房排風(fēng)工程施工方案
- 垃圾焚燒爐渣再利用項目環(huán)境影響報告表(公示稿)環(huán)評報告表
- 2025年貴州貴安新區(qū)產(chǎn)業(yè)發(fā)展控股集團有限公司招聘筆試參考題庫附帶答案詳解
- 機械制造技術(shù)基礎(chǔ)(課程課件完整版)
- 煤礦崗位標(biāo)準(zhǔn)化作業(yè)流程
- (民法典版)離婚登記申請受理回執(zhí)單
- 食品質(zhì)量控制管理方案
- ISO9001_2016年[全套]質(zhì)量管理體系文件
- 普通中專畢業(yè)生登記表格模板(共4頁)
- 電子病歷及病歷信息標(biāo)準(zhǔn)化(第五講)
- 鐵路建設(shè)項目工程試驗室管理標(biāo)準(zhǔn)TB104422009
- SPSS術(shù)語中英文對照詳解
- 第六章、光致抗蝕劑PPT課件
評論
0/150
提交評論