版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、名目名目1 設(shè)計目的-22 總體設(shè)計-23 關(guān)鍵技術(shù) -33.1 系統(tǒng)的功能模塊劃分.33.1.1 PUZZLEFRAME.JAVA 類模塊.33.1.2 PUZZLEPAD.JAVA 類模塊.43.1.3 SQUAREPOINT.JAVA 類模塊.44程序流程-55 主要源代碼-75.1PUZZLEFRAME 模塊源程序.75.2 PUZZLEPAD 模塊源程序.105.3 SQUAREPOINT 類模塊源程序.176 運(yùn)行結(jié)果及結(jié)論-196.1 測試方案.196.2 運(yùn)行結(jié)果.196. 3 小結(jié).207.參考文獻(xiàn)-21精選文檔21 1 設(shè)計目的設(shè)計目的 本次課程設(shè)計是通過 Java 語言編
2、制一個魔板玩耍,它是一款經(jīng)典的智力玩耍。而 Java語言是當(dāng)今較為流行的網(wǎng)絡(luò)編程語言,它具有面對對象、跨平臺、分布應(yīng)用等特點。這次課程設(shè)計,還有利于加深對 Java 課程的進(jìn)一步了解,也可以鞏固所學(xué) Java 語言基本學(xué)問,增進(jìn) Java 語言編輯基本功,把握 JDK、Editplus、Eclipse、JCreator 等開發(fā)工具的運(yùn)用,拓寬常用類庫的應(yīng)用。使同學(xué)通過該教學(xué)環(huán)節(jié)與手段,把所學(xué)課程及相關(guān)學(xué)問加以融會貫穿,全面把握 Java 語言的編程思想及面對對象程序設(shè)計的方法。利用所學(xué)高級語言的語法特性,結(jié)合數(shù)據(jù)結(jié)構(gòu)算法、網(wǎng)絡(luò)學(xué)問、文件處理和數(shù)據(jù)庫等學(xué)問完成綜合題目的設(shè)計和代碼實現(xiàn),并培育熬煉
3、分析程序、撰寫報告等力量。2 2 總體設(shè)計總體設(shè)計在設(shè)計魔板玩耍時,要編寫 7 個 Java 源文件:PuzzleGame.java、PuzzlePad.java、Point.java、Block.java、HandleImage.java、VerifySuccess.java 和 HandleMove.java。魔板玩耍除了需要編寫的上述 7 個 Java 源文件所給出的類外,還需要 Java 系統(tǒng)供應(yīng)的一些重要的類,如 JMenuItem、JButton 和 JRadioButton 等類。魔板玩耍所用到的一些重要的類以及之間的組合關(guān)系如圖 1 所示。PuzzleGameJMenuPuzz
4、lePadJRadioButtonJButtonPointBlockHandleMoveImageHandleImageVerifySuccess圖圖 2-12-1 程序模塊程序模塊精選文檔33 3 關(guān)鍵技術(shù)關(guān)鍵技術(shù)3.13.1 系統(tǒng)的功能模塊劃分系統(tǒng)的功能模塊劃分在設(shè)計魔板玩耍時,需要編寫 3 個 java 源文件:PuzzleFrame.java、PuzzlePad.java、SquarePoint.java。魔板玩耍除了需要編寫的上述 3 個 Java 源文件所給出的類外,還需要 Java 系統(tǒng)供應(yīng)的一些重要的類,如 JMenuItem、JButton 和 JRadioButton 等類
5、。3.1.13.1.1 PuzzleFrame.javaPuzzleFrame.java 類模塊類模塊PuzzleFrame 類負(fù)責(zé)創(chuàng)建魔板玩耍的主窗口,該類含有 main 方法,程序從該類開頭。PuzzleFrame 類的成員變量中有 4 種重要類型的對象:PuzzlePad、JmenuItem、JRadioButton 和 JButton。PuzzleFrame 類的主要成員的作用將在后面的具體設(shè)計中闡述,PuzzleFrame 類主要成員變量(屬性)和主要方法如表 3-1、3-2 所示。成員變量描述變量類型名稱魔板開頭玩耍的按鈕選擇玩法PuzzlePadJbuttonJradioButt
6、onPuzzlePad開頭數(shù)字玩法,圖像玩法表表 3-13-1 PuzzleFrame.javaPuzzleFrame.java 主要成員變量(屬性)主要成員變量(屬性)名稱功能備注PuzzleFrameactionPerformedmain創(chuàng)建程序主窗口處理 ActionEvent 大事程序開頭運(yùn)行的方法構(gòu)造方法接口方法表表 3-23-2 PuzzleFrame.javaPuzzleFrame.java 主要方法主要方法精選文檔43.1.23.1.2 PuzzlePad.javaPuzzlePad.java 類模塊類模塊PuzzlePad 類創(chuàng)建的對象是 PuzzleFrame 類最重要的成
7、員之一,代表“魔板” 。該類的成員變量中有 5 種重要類型的對象:Point、Block 和 Image。PuzzlePad 類類主要成員變量(屬性)和主要方法如表 3-3、3-4 所示。描述變量類型名稱魔板中的行數(shù)和列數(shù)魔板中方塊的寬和高魔板中二維點數(shù)組魔板中而為方塊數(shù)組模板可能用到的圖像intintSquarePointJButtonImagerows,columswidth,heightpointblockimage表表 3-33-3 PuzzlePadPuzzlePad.java.java 主要成員變量(屬性)主要成員變量(屬性)名稱功能備注PuzzlePad隨機(jī)排列數(shù)字隨機(jī)排列圖像p
8、aintComponentactionPerformed創(chuàng)建魔板對象隨機(jī)排列魔板中方塊上的數(shù)字隨機(jī)排列魔板中方塊上的圖像繪制圖像處理 ActionEvent 大事構(gòu)造方法接口方法表表 3-43-4 PuzzlePadPuzzlePad.java.java 主要方法主要方法3.1.33.1.3 SquarePoint.javaSquarePoint.java 類模塊類模塊SquarePoint 類負(fù)責(zé)創(chuàng)建確定位置的對象,使用 Point 對象可以確定 Block 對象在PuzzlePad 對象中的位置,即確定“方塊”在“魔板”中的位置。SquarePoint.java 類主要成員變量(屬性)和主
9、要方法如表 3-5、3-6 所示。描述變量類型名稱推斷點上是否有方塊點上的方塊對象booleanJButton有方塊block表表 3-53-5 SquarePointSquarePoint.java.java 主要成員變量(屬性)主要成員變量(屬性)精選文檔5名稱功能備注SquarePointget 有方塊set 有方塊setBlockgetBlock創(chuàng)建“點”對象推斷點上是否有方塊設(shè)置點上是否有方塊在點上放置方塊獵取點上的方塊構(gòu)造方法表表 3-63-6 SquarePointSquarePoint.java.java 主要方法主要方法4 4程序流程程序流程依據(jù)對模板玩耍的功能分析,設(shè)計得到
10、魔板玩??偭鞒蹋鐖D 4-1 所示:精選文檔6圖圖 4-14-1 系統(tǒng)流程圖系統(tǒng)流程圖流程解釋:程序分為兩種玩法,數(shù)字玩法和圖片玩法,又分為初級和高級兩種模式,進(jìn)入玩耍選擇玩耍難度,后選擇玩法,數(shù)字或圖片玩法,系統(tǒng)將各切片挨次打亂,移動切片,推斷挨次是否正確,正確玩耍結(jié)束,不正確連續(xù)移動,程序結(jié)束。精選文檔75 5 主要源代碼主要源代碼5.1PuzzleFrame5.1PuzzleFrame 模塊源程序模塊源程序import java.awt.*;import java.awt.event.*;import javax.swing.*;public class PuzzleFrame exte
11、nds JFrame implements ActionListener PuzzlePad puzzlePad; JButton 開頭; JMenuBar bar; JMenu fileMenu; JMenuItem 初級,高級; JRadioButton 數(shù)字玩法,圖像玩法; ButtonGroup group=null; Container con=null; public PuzzleFrame() bar=new JMenuBar(); fileMenu=new JMenu(魔板玩耍); 初級=new JMenuItem(初級); 高級=new JMenuItem(高級); file
12、Menu.add(初級); fileMenu.add(高級); bar.add(fileMenu); setJMenuBar(bar); 初級.addActionListener(this); 高級.addActionListener(this);精選文檔8 開頭=new JButton(開頭玩); 開頭.addActionListener(this); group=new ButtonGroup(); 數(shù)字玩法=new JRadioButton(數(shù)字玩法,true); 圖像玩法=new JRadioButton(圖像玩法,false); group.add(數(shù)字玩法); group.add(
13、圖像玩法); puzzlePad=new PuzzlePad(3,3,50,50); con=getContentPane(); con.add(puzzlePad,BorderLayout.CENTER); JPanel pNorth=new JPanel(); pNorth.add(數(shù)字玩法); pNorth.add(圖像玩法); pNorth.add(開頭); con.add(pNorth,BorderLayout.NORTH); con.validate(); addWindowListener(new WindowAdapter() public void windowClosing
14、(WindowEvent e) System.exit(0); ); setVisible(true); setBounds(100,50,440,360); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=開頭) if(數(shù)字玩法.isSelected()精選文檔9 puzzlePad.隨機(jī)排列數(shù)字(); else if(圖像玩法.isSelected() puzzlePad.隨機(jī)排列圖像(); else if(e.getSource()=初級) con.remove(puzzlePad); puz
15、zlePad=new PuzzlePad(3,3,50,50); con.add(puzzlePad,BorderLayout.CENTER); con.validate(); this.validate(); else if(e.getSource()=高級) con.remove(puzzlePad); puzzlePad=new PuzzlePad(4,4,50,50); con.add(puzzlePad,BorderLayout.CENTER); con.validate(); this.validate(); public static void main(String args)
16、 new PuzzleFrame(); 精選文檔105.25.2 PuzzlePadPuzzlePad 模塊源程序模塊源程序import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.util.Vector;import java.awt.image.*;public class PuzzlePad extends JPanel implements ActionListener int rows ,colums; int width,height;
17、 SquarePoint point; JButton block; Vector vector; int leftX=50,leftY=50; Image image=null; Toolkit tool=null; MediaTracker mt; int 圖像的寬,圖像的高; Image blockImage; boolean 畫圖像=true; public PuzzlePad(int r,int c,int w,int h) setLayout(null); vector=new Vector(); rows=r; colums=c; width=w; height=h;精選文檔11
18、 tool=getToolkit(); try image=tool.createImage(dog.jpg); mt.addImage(image,1); mt.waitForAll(); catch(Exception e) block=new JButtonrowscolums; point=new SquarePointrowscolums; for(int i=0;irows;i+) for(int j=0;jcolums;j+) if(i=rows-1)&(j=colums-1) else blockij=new JButton(); blockij.setSize(wid
19、th,height); blockij.addActionListener(this); vector.add(blockij); for(int i=0;irows;i+) for(int j=0;jcolums;j+)精選文檔12 pointij=new SquarePoint(50+j*width,50+i*height); if(i=rows-1)&(j=colums-1) else pointij.setBlock(blockij,this); public void actionPerformed(ActionEvent e) JButton button=(JButton
20、)e.getSource(); int x=button.getBounds().x; int y=button.getBounds().y; int m=0,n=0; for(int i=0;irows;i+) for(int j=0;jcolums;j+) if(pointij.getX()=x&pointij.getY()=y) m=i; n=j; 精選文檔13 int 上=Math.max(0,m-1); int 下=Math.min(rows-1,m+1); int 左=Math.max(0,n-1); int 右=Math.min(colums-1,n+1); if(poi
21、nt上n.get 有方塊()=false) point上n.setBlock(button,this); pointmn.set 有方塊(false); else if(point下n.get 有方塊()=false) point下n.setBlock(button,this); pointmn.set 有方塊(false); else if(pointm左.get 有方塊()=false) pointm左.setBlock(button,this); pointmn.set 有方塊(false); else if(pointm右.get 有方塊()=false) pointm右.setBlo
22、ck(button,this); pointmn.set 有方塊(false); public void 隨機(jī)排列數(shù)字() vector.removeAllElements(); for(int i=0;irows;i+)精選文檔14 for(int j=0;j0) int n=(int)(Math.random()*vector.size(); JButton b=(JButton)vector.elementAt(n); b.setText(+i); b.setIcon(null); b.setBorder(BorderFactory.createLineBorder(Color.blue
23、,1); vector.remove(n); i+; 畫圖像=false; repaint(); public void 隨機(jī)排列圖像() try 圖像的寬=image.getWidth(this);精選文檔15 圖像的高=image.getHeight(this); int w=圖像的寬/colums; int h=圖像的高/rows; blockImage=new Imagerows*colums; int k=0; PixelGrabber pg=null; ImageProducer ip=null; for(int i=0;irows;i+) for(int j=0;jcolums;
24、j+) int pixels= new intw*h; pg=new PixelGrabber(image,j*w,i*h,w,h,pixels,0,w); pg.grabPixels(); ip=new MemoryImageSource(w,h,pixels,0,w); blockImagek=tool.createImage(ip); k+; vector.removeAllElements(); for(int i=0;irows;i+) for(int j=0;j0) int n=(int)(Math.random()*vector.size(); JButton b=(JButto
25、n)vector.elementAt(n); b.setIcon(new ImageIcon(blockImagenum); b.setBorder(null); b.setText(); vector.remove(n); num+; 畫圖像=true; repaint(); catch(Exception ee) public void paintComponent(Graphics g) super.paintComponent(g); g.setColor(Color.black); g.fillRect(leftX,leftY,colums*width,rows*height); i
26、f(畫圖像=true) g.drawImage(image,colums*width+80,height,colums*width,rows*height,this); for(int i=0;irows;i+)精選文檔17 g.setColor(Color.white); g.drawLine(colums*width+80,height+i*height, colums*width+80+colums*width,height+i*height); for(int j=0;jcolums;j+) g.drawLine(colums*width+80+j*width,height, colu
27、ms*width+80+j*width,height+rows*height); g.setColor(Color.black); g.fillRect(colums*width+80+(colums-1)*width, height+(rows-1)*height, width, height); 5.35.3 SquarePointSquarePoint 類模塊源程序類模塊源程序import java.awt.*;import javax.swing.JButton;public class SquarePoint int x,y; boolean 有方塊; JButton block=n
28、ull; Container con=null; public SquarePoint(int x,int y) this.x=x;精選文檔18 this.y=y; public boolean get 有方塊() return 有方塊; public void set 有方塊(boolean boo) 有方塊=boo; public int getX() return x; public int getY() return y; public void setBlock(JButton block,Container con) this.con=con; this.block=block; con.add(block);
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024出口貨物代理合同協(xié)議書
- 2024廣西某小區(qū)環(huán)境景觀工程合同
- 2024裝修合同范本(家裝、公裝、標(biāo)準(zhǔn)版)
- 軟件技術(shù)開發(fā)協(xié)議
- 消防安全操作員培訓(xùn)合同范本
- 涉外勞務(wù)合同的國際法律適用
- 2024監(jiān)控施工合同模板
- 2024產(chǎn)權(quán)交易委托合同適用于轉(zhuǎn)讓方采取拍賣、招投標(biāo)方式
- 深圳市注冊會計師執(zhí)業(yè)責(zé)任保險協(xié)議
- 2024對水果冷飲配送商監(jiān)管協(xié)議
- 2024-2025一年級上冊科學(xué)教科版2.5《通過感官來發(fā)現(xiàn)》課件
- 中醫(yī)護(hù)理進(jìn)修匯報
- 2024年國開電大 高級財務(wù)會計 形考任務(wù)4答案
- 2024年1月1378國開電大本科管理英語3期末考試試題及答案
- 最終版家具招標(biāo)文件
- 5國家機(jī)構(gòu)有哪些 第二課時(教學(xué)設(shè)計)部編版道德與法治六年級上冊
- 公路工程臨時用電施工方案
- 北師大版二年級數(shù)學(xué)上冊《數(shù)學(xué)好玩》(大單元教學(xué)設(shè)計)
- DL5009.3-2013 電力建設(shè)安全工作規(guī)程 第3部分:變電站
- 當(dāng)代社會政策分析 課件 第13、14章 反貧困社會政策、公益慈善政策
- 人防疏散基地建設(shè)技術(shù)標(biāo)準(zhǔn) DG-TJ08-2419-2023
評論
0/150
提交評論