




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、量城工甯院Java程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告XXX魔板游戲?qū)I(yè)XXX學(xué)生姓名XXX班級(jí)XXX學(xué)號(hào)XXX指導(dǎo)教師XXX完成日期XXX目 錄 21概 述 11.1 課程設(shè)計(jì)目的 11.2 課程設(shè)計(jì)內(nèi)容 12系統(tǒng)需求分析 12.1 系統(tǒng)目標(biāo) 12.2 主體功能 12.3 開(kāi)發(fā)環(huán)境 23系統(tǒng)概要設(shè)計(jì) 23.1 系統(tǒng)的功能模塊劃分 23.2 系統(tǒng)流程圖 44系統(tǒng)詳細(xì)設(shè)計(jì) 75測(cè)試 85.1 測(cè)試方案 85.2 測(cè)試結(jié)果 86小結(jié) 9參考文獻(xiàn) 10附 錄 11附錄1源程序清單 11附錄1 1.1PUZZLEFRAM模塊源程序 11附錄1.2 PUZZLEPALB塊源程序 13附錄1.3 SQUAREPOINT模
2、塊源程序 20模板游戲的設(shè)計(jì)1概 述1.1 課程設(shè)計(jì)目的利用所學(xué)高級(jí)語(yǔ)言的語(yǔ)法特性,結(jié)合數(shù)據(jù)結(jié)構(gòu)算法、網(wǎng)絡(luò)知識(shí)、文件處理和數(shù) 據(jù)庫(kù)等知識(shí)完成綜合題目的設(shè)計(jì)和代碼實(shí)現(xiàn),并培養(yǎng)鍛煉分析程序、撰寫(xiě)報(bào)告等能 力。1.2 課程設(shè)計(jì)內(nèi)容(1)設(shè)計(jì)一款經(jīng)典的智力游戲,魔板游戲。魔板由 3*3或4*4個(gè)格子組成。 對(duì)于3*3魔板,在前8個(gè)格子里隨即放置8個(gè)編號(hào)1-8的方塊,最后一個(gè)格子是未 放置方塊的空格子;對(duì)于 4*4的魔板,在前15格子里隨即放置15編號(hào)1-15的方 塊,最后一個(gè)格子是未放置方塊的空格子。(2)用鼠標(biāo)單擊任何與空格子水平或垂直相鄰的方塊可以把該方塊移入空格 子,而當(dāng)前方塊移動(dòng)之前所在的格子
3、成為空格子。通過(guò)不斷地移動(dòng)方塊可以將方塊 一行一行地按數(shù)字順序排好,例如,對(duì)于 3*3格子組成的魔板,要求方塊最后排列 的順序如圖6.1所示。(3)魔板游戲也可以使用圖像來(lái)代替數(shù)字。例如,對(duì)于 4*4的魔板,將一幅 圖像分成4*4幅小圖像,除去最后一幅小圖像(圖像的右下角),將其余各幅小圖 像打亂順序后放在魔板方塊上,最終目標(biāo)是通過(guò)移動(dòng)方塊恢復(fù)原始圖像(不包括圖 像的右下角)。(4)魔板游戲分為兩個(gè)級(jí)別,用戶(hù)可以通過(guò)界面上提供的菜單來(lái)選擇“初級(jí)” 或“高級(jí)”兩個(gè)級(jí)別。對(duì)于“初級(jí)”級(jí)別,魔板由3*3個(gè)格子組成;對(duì)于“高級(jí)”級(jí)別,魔板由4*4個(gè)格子組成2系統(tǒng)需求分析2.1 系統(tǒng)目標(biāo)設(shè)計(jì)GUI界面的
4、魔板游戲程序。2.2 主體功能這個(gè)程序定義了一些組件,工具欄按鈕,文本區(qū)和菜單。魔板游戲程序設(shè)計(jì)通過(guò) PuzzleFrame.java PuzzlePad.java SquarePoint.java3 個(gè)類(lèi)來(lái)實(shí)現(xiàn)魔板游戲的整體 功能。2.3 開(kāi)發(fā)環(huán)境操作系統(tǒng):Microsoft Windows XP/7開(kāi)發(fā)工具:jdk1.6.0_22 、UltraEdit3系統(tǒng)概要設(shè)計(jì)3.1 系統(tǒng)的功能模塊劃分在設(shè)計(jì)魔板游戲時(shí),需要編寫(xiě)3個(gè)java源文件:PuzzleFrame.java PuzzlePad.java SquarePoint.java魔板游戲除了需要編寫(xiě)的上述 3個(gè)Java源文件所給出的類(lèi)外,
5、還需要Java系 統(tǒng)提供的一些重要的類(lèi),如 JMenuItem、JButton和JRadioButton等類(lèi)。魔板游戲的 總體功能圖如圖3-1所示。主界面選擇級(jí)別選擇圖像圖像玩法圖3-1總體功能圖3.1.2 PuzzleFrame.java 類(lèi)模塊PuzzleFrame類(lèi)負(fù)責(zé)創(chuàng)建魔板游戲的主窗口,該類(lèi)含有main方法,程序從該類(lèi)開(kāi)始。PuzzleFrame類(lèi)的成員變量中有 4種重要類(lèi)型的對(duì)象:PuzzlePad JmenuItemJRadioButton和JButton。PuzzleFrame類(lèi)的主要成員的作用將在后面的詳細(xì)設(shè)計(jì)中闡述,PuzzleFrame類(lèi)主要成員變量(屬性)和主要方法如表
6、3-1、3-2所示成員變量描述變量類(lèi)型名稱(chēng)開(kāi)始游戲的按鈕選擇玩法選擇級(jí)別PuzzlePadJbuttonJradioButtonJmenuItemPuzzlePad開(kāi)始數(shù)字玩法,圖像玩法初級(jí),高級(jí)表3-1PuzzleFrame.java主要成員變量(屬性)名稱(chēng)功能備注PuzzleFrame actionPerformed main創(chuàng)建程序主窗口處理ActionEvent事件程序開(kāi)始運(yùn)行的方法構(gòu)造方法接口方法表 3-2 PuzzleFrame.java 主要方法3.1.3 PuzzlePad.java 類(lèi)模塊PuzzlePad類(lèi)創(chuàng)建的對(duì)象是PuzzleFrame類(lèi)最重要的成員之一,代表“魔板”。
7、該類(lèi)的成員變量中有5種重要類(lèi)型的對(duì)象:Point、Block和Image。PuzzlePad類(lèi)類(lèi) 主要成員變量(屬性)和主要方法如表 3-3、3-4所示。描述變量類(lèi)型名稱(chēng)魔板中的行數(shù)和列數(shù)introws,colums魔板中方塊的寬和高intwidth,height魔板中二維點(diǎn)數(shù)組SquarePoint口point魔板中而為方塊數(shù)組JButtonblock模板可能用到的圖像Imageimage表3-3PuzzlePad.java主要成貝變重(屬性)名稱(chēng)功能備注PuzzlePad創(chuàng)建魔板對(duì)象構(gòu)造方法隨機(jī)排列數(shù)字隨機(jī)排列魔板中方塊上的數(shù)字隨機(jī)排列圖像隨機(jī)排列魔板中方塊上的圖像paintCompone
8、nt繪制圖像actionPerformed處理ActionEvent事件接口方法表 3-4 PuzzlePad.java主要方法3.1.4 SquarePoint.java 類(lèi)模塊SquarePoint類(lèi)負(fù)責(zé)創(chuàng)建確定位置的對(duì)象,使用 Point對(duì)象可以確定Block對(duì)象 在PuzzlePad對(duì)象中的位置,即確定“方塊”在“魔板”中的位置。 SquarePoint.java 類(lèi)主要成員變量(屬性)和主要方法如表 3-5、3-6所示。描述變量類(lèi)型名稱(chēng)判斷點(diǎn)上是否有方塊boolean有方塊點(diǎn)上的方塊對(duì)象JButtonblock表3-5SquarePoint.java主要成員變量(屬性)名稱(chēng)功能備注S
9、quarePoint創(chuàng)建“點(diǎn)”對(duì)象構(gòu)造方法get后力塊判斷點(diǎn)上是否有方塊set后力塊設(shè)置點(diǎn)上是否有方塊setBlock在點(diǎn)上放置方塊getBlock表 3-6 SquarePoint.java主要方法3.2 系統(tǒng)流程圖根據(jù)對(duì)模板游戲的功能分析,設(shè)計(jì)得到魔板游戲總流程,如圖 2-2所示:開(kāi)始圖2-2系統(tǒng)流程圖4系統(tǒng)詳細(xì)設(shè)計(jì)4.1運(yùn)行效果1、將三個(gè)java文件和圖像文件保存到一個(gè)文件夾中,例如 C:moban。將三個(gè) java文件分別編譯生成相應(yīng)的字節(jié)碼文件(class)。然后,用java解釋器運(yùn)行主類(lèi): C:mobanjava PuzzleFrame 效果如圖 4-1、4-2 所示。圖4-1數(shù)字
10、玩法主界面圖4-2圖像玩法主界面本程序?qū)崿F(xiàn)的游戲分為初級(jí)和高級(jí)模式,可以在單機(jī)選擇級(jí)別之后進(jìn)行選擇級(jí) 別模式。初級(jí)的話(huà)共分為9格魔板,一個(gè)為空,8個(gè)魔板上下左右自由移動(dòng),直至 排列完成;高級(jí)的話(huà)分為16格魔板,一個(gè)為空,15個(gè)魔板上下左右自由移動(dòng),直 至排列完成。該游戲可分為數(shù)字玩法和圖像玩法,在單擊圖像玩法或者數(shù)字玩法之 后可以進(jìn)行相應(yīng)的玩法選擇,選擇之后單擊開(kāi)始。如果玩家想重新開(kāi)始,只需要再 次單擊開(kāi)始按鈕即可。5測(cè)試5.1 測(cè)試方案游戲難度級(jí)別設(shè)置為初級(jí)級(jí)別,進(jìn)行測(cè)試。用 java解釋器運(yùn)行主類(lèi):C:mobanjava PuzzleFrame5.2 測(cè)試結(jié)果圖5-1測(cè)試結(jié)果6小結(jié)這次我做
11、的課題是“模板游戲”,通過(guò)這次的課程設(shè)計(jì),我不僅拓寬了自己 的知識(shí)面,還在實(shí)踐過(guò)程中鞏固和加深了自己所學(xué)的理論知識(shí),使自己的技術(shù)素質(zhì) 和實(shí)踐能力有了進(jìn)一步的提高,同時(shí)我的專(zhuān)業(yè)水平也有了很大的進(jìn)步。同時(shí),在軟件開(kāi)發(fā)方面也累積了不少經(jīng)驗(yàn),對(duì) java的知識(shí)重要性的認(rèn)識(shí)更深 了。通過(guò)設(shè)計(jì)過(guò)程的鍛煉,自己分析問(wèn)題和解決問(wèn)題的能力都得到了鍛煉和提高, 完善了自己的知識(shí)結(jié)構(gòu),加深了對(duì)所學(xué)知識(shí)的理解。這次課程設(shè)計(jì)完成后,體會(huì)頗多,在學(xué)與做的過(guò)程中,取長(zhǎng)補(bǔ)短,不斷學(xué)習(xí)新 的知識(shí),吸取經(jīng)驗(yàn),達(dá)到進(jìn)步的目的。在學(xué)與做的過(guò)程中自身的努力以及相關(guān)圖書(shū) 資料的幫助,對(duì)java編程的理解也從能夠使用提高到了熟練使用,對(duì)程
12、序開(kāi)發(fā)的 一般過(guò)程和對(duì)數(shù)據(jù)庫(kù)知識(shí)的運(yùn)用也有了進(jìn)一步的了解。通過(guò)課程設(shè)計(jì),我學(xué)習(xí)到不少的 JAVA編程語(yǔ)言的知識(shí),但由于自己的理論知 識(shí)水平有限,實(shí)踐知識(shí)和設(shè)計(jì)經(jīng)驗(yàn)不足,在設(shè)計(jì)過(guò)程中難免存在一些問(wèn)題,甚至錯(cuò) 誤。這些我會(huì)在以后的工作學(xué)習(xí)和實(shí)踐中加以改進(jìn)和提高。通過(guò)這次課程設(shè)計(jì)使我獲得了很多東西。其一編程的重要步驟是分析。分析 問(wèn)題的本身和現(xiàn)實(shí)要求。分析過(guò)程中采用畫(huà)流程圖的方法能使我的思路特別清晰。 拿到一個(gè)題目不要僅僅局限在一種思想上, 要盡量的多嘗試其他的做法,然后比較, 集各家之所長(zhǎng),拿出最優(yōu)秀的程序來(lái)。參考文獻(xiàn)1耿祥義,張躍平.Java2實(shí)用教程(第三版)M.北京:清華大學(xué)出版社,2006
13、2耿祥義.Java課程設(shè)計(jì)(第三版)M.北京:清華大學(xué)出版社,20043張躍平.Java2實(shí)用教程實(shí)驗(yàn)指導(dǎo)與習(xí)題解答(第三版)M.北京:清華大學(xué)出 版社,2004附錄1源程序清單附錄1 I.IPuzzleFrame模塊源程序import java.awt.*;import java.awt.event.*;import javax.swing.*;public class PuzzleFrame extends JFrame implements ActionListener PuzzlePad puzzlePad;JButton 開(kāi)始;JMenuBar bar;JMenu fileMenu;
14、JMenuItem初級(jí),高級(jí);JRadioButton數(shù)字玩法,圖像玩法;ButtonGroup group=null;Container con=null;public PuzzleFrame()bar=new JMenuBar();fileMenu=new JMenu("魔板游戲");初級(jí)=new JMenuItem("初級(jí)");高級(jí)=new JMenuItem("高級(jí)");fileMenu.add(初級(jí));fileMenu.add(高級(jí));bar.add(fileMenu);setJMenuBar(bar);初級(jí).addActi
15、onListener(this);高級(jí).addActionListener(this);開(kāi)始=new JButton("開(kāi)始玩");開(kāi)始.addActionListener(this);group=new ButtonGroup();數(shù)字玩法=new JRadioButton("數(shù)字玩法",true);圖像玩法=new JRadioButton("圖像玩法",false);group.add頷字玩法);group.add(ffl像玩法);puzzlePad=new PuzzlePad(3,3,50,50);con=getContent
16、Pane();con.add(puzzlePad,BorderLayout.CENTER);JPanel pNorth=new JPanel();pNorth.add(數(shù)字玩法);pNorth.add(圖像玩法);pNorth.add(開(kāi)始);con.add(pNorth,BorderLayout.NORTH);con.validate();addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)System.exit(0););setVisible(true);setBounds(100,50
17、,440,360);validate。;public void actionPerformed(ActionEvent e) if(e.getSource()=開(kāi)始)if(數(shù)字玩法.isSelected()puzzlePad隨機(jī)排列數(shù)字();else if(圖像玩法.isSelected()puzzlePad隨機(jī)排歹!J圖像();else if(e.getSource()=0 級(jí))con.remove(puzzlePad);puzzlePad=new PuzzlePad(3,3,50,50);con.add(puzzlePad,BorderLayout.CENTER);con.validate
18、();this.validate();else if(e.getSource()=S 級(jí))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口)new PuzzleFrame();附錄1.2 PuzzlePad模塊源程序import java.awt.*;import java.awt.event.*;import java
19、x.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;SquarePoint point口;JButton block;Vector vector;int leftX=50,leftY=50;Image image=null;Toolkit tool=null;MediaTracker
20、 mt;int圖像的寬,圖像的高;Image blockImage口;boolean 畫(huà)圖像=true;public PuzzlePad(int r,int c,int w,int h)setLayout(null);vector=new Vector();rows=r;colums=c;width=w;height=h;tool=getToolkit();tryimage=tool.createImage('氣球.jpg");mt.addImage(image,1);mt.waitForAll();catch(Exception e)block=new JButtonrow
21、scolums;point=new SquarePointrowscolums;for(int i=0;i<rows;i+)for(int j=0;j<colums;j+)if(i=rows-1)&&(j=colums-1)elseblockij=new JButton();blockij.setSize(width,height);blockij.addActionListener(this);vector.add(blockij);for(int i=0;i<rows;i+)for(int j=0;j<colums;j+)pointij=new Sq
22、uarePoint(50+j*width,50+i*height);if(i=rows-1)&&(j=colums-1)elsepointij.setBlock(blockij,this);public void actionPerformed(ActionEvent e)JButton button=(JButton)e.getSource();int x=button.getBounds().x;int y=button.getBounds().y;int m=0,n=0;for(int i=0;i<rows;i+)for(int j=0;j<colums;j+
23、)if(pointij.getX()=x&&pointij.getY()=y)m=i;n=j;int ±=Math.max(0,m-1);int 下=MNh.min(rows-1,m+1);int 左=Math.max(0,n-1);int 右=Math.min(colums-1,n+1);if(point上n.get 有方塊()=false)point上n.setBlock(button,this);pointmn.set 有方塊(false);else if(point下n.get 有方塊()=false)point下n.setBlock(button,this)
24、;pointmn.set 有方塊(false);else if(pointm左.get 有方塊()=false)pointm左.setBlock(button,this);pointmn.set 有方塊(false);else if(pointm右.get 有方塊()=false)pointm右.setBlock(button,this);pointmn.set 有方塊(false);public void隨機(jī)排列數(shù)字()vector.removeAllElements();for(int i=0;i<rows;i+)for(int j=0;j<colums;j+)if(i=row
25、s-1)&&(j=colums-1)elsevector.add(blockij);int i=1;while(vector.size()>0)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,1);vector.remove(n);i+;畫(huà)圖像=false;repaint()
26、;public void隨機(jī)排列圖像()try圖像的寬=image.getWidth(this);圖像的高=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;i<rows;i+)for(int j=0;j<colums;j+)int pixels二 new intw*h;pg=new PixelGrabber(image,j*w,i
27、*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;i<rows;i+)for(int j=0;j<colums;j+)if(i=rows-1)&&(j=colums-1)elsevector.add(blockij);int num=0;while(vector.size()>0)int n=(int)(Math
28、.random()*vector.size();JButton b=(JButton)vector.elementAt(n);b.setIcon(new ImageIcon(blockImagenum);b.setBorder(null);b.setText("");vector.remove(n);num+;畫(huà)圖像=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);if(畫(huà)圖像二工
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023一年級(jí)數(shù)學(xué)上冊(cè) 六 認(rèn)識(shí)圖形第2課時(shí) 我說(shuō)你做教學(xué)設(shè)計(jì) 北師大版
- 2023七年級(jí)英語(yǔ)下冊(cè) Unit 7 It's raining Section A 第1課時(shí)(1a-2d)教學(xué)設(shè)計(jì) (新版)人教新目標(biāo)版
- 七年級(jí)地理上冊(cè) 第三章 第三節(jié) 降水的變化與分布教學(xué)設(shè)計(jì)3 (新版)新人教版
- 2024-2025學(xué)年高中物理 第二章 機(jī)械波 5 波的干涉、衍射教學(xué)設(shè)計(jì)2 教科版選修3-4
- 10我們愛(ài)和平 教學(xué)設(shè)計(jì)
- 4《少讓父母為我操心》教學(xué)設(shè)計(jì)-2023-2024學(xué)年道德與法治四年級(jí)上冊(cè)統(tǒng)編版
- 2024八年級(jí)英語(yǔ)下冊(cè) Unit 1 Spring Is ComingLesson 2 It's Getting Warmer教學(xué)設(shè)計(jì)(新版)冀教版
- 三年級(jí)信息技術(shù)下冊(cè) 第5課《描繪美麗的大自然》教學(xué)設(shè)計(jì)2 川教版
- 13 精衛(wèi)填海教學(xué)設(shè)計(jì)-2024-2025學(xué)年四年級(jí)上冊(cè)語(yǔ)文統(tǒng)編版
- 2024秋三年級(jí)英語(yǔ)上冊(cè) Module 4 Unit 2 Its black dog教學(xué)設(shè)計(jì) 外研版(三起)
- 公安審訊技巧課件
- CSSD滅菌物品召回管理
- 4.1 公民基本義務(wù)課件 2024-2025學(xué)年統(tǒng)編版道德與法治八年級(jí)下冊(cè)
- 第三單元第三課信息檢索的方法教學(xué)設(shè)計(jì) 2024-2025學(xué)年西交大版(2024)初中信息技術(shù)七年級(jí)上冊(cè)
- 2025廣德輔警考試題庫(kù)
- 軟件開(kāi)發(fā)java筆試題及答案
- 小學(xué)綜合實(shí)踐三年級(jí)下冊(cè)巧手工藝坊教學(xué)課件
- 2025年紹興職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)帶答案
- DB61T 5113-2024 建筑施工全鋼附著式升降腳手架安全技術(shù)規(guī)程
- 2025年供水安全考試試題及答案
- 腹外疝圍手術(shù)期護(hù)理
評(píng)論
0/150
提交評(píng)論