課程設(shè)計魔板游戲_第1頁
課程設(shè)計魔板游戲_第2頁
課程設(shè)計魔板游戲_第3頁
課程設(shè)計魔板游戲_第4頁
課程設(shè)計魔板游戲_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

學(xué)號20142014-2015學(xué)年第2學(xué)期《面向?qū)ο蟪绦蛟O(shè)計》課程設(shè)計報告題目:魔板游戲設(shè)計專業(yè):計算機(jī)科學(xué)與技術(shù)班級:12級(3)班姓名:陳曉彤指導(dǎo)教師:史學(xué)梅成績:計算機(jī)學(xué)院2015年4月24日目錄1設(shè)計目的及內(nèi)容 1課程設(shè)計目的 1課程設(shè)計內(nèi)容 12系統(tǒng)需求分析 1系統(tǒng)目標(biāo) 1主體功能 1開發(fā)環(huán)境 13概要設(shè)計 2系統(tǒng)的功能模塊劃分 2類模塊 2類模塊 2類模塊 3系統(tǒng)流程圖 34設(shè)計過程與分析 55設(shè)計結(jié)果與測試 6參考文獻(xiàn): 131設(shè)計目的及內(nèi)容課程設(shè)計目的利用所學(xué)高級語言的語法特性,結(jié)合數(shù)據(jù)結(jié)構(gòu)算法、網(wǎng)絡(luò)知識、文件處理和數(shù)據(jù)庫等知識完成綜合題目的設(shè)計和代碼實現(xiàn),并培養(yǎng)鍛煉分析程序、撰寫報告等能力。課程設(shè)計內(nèi)容(1)設(shè)計一款經(jīng)典的智力游戲,魔板游戲。魔板由3*3或4*4個格子組成。對于3*3魔板,在前8個格子里隨即放置8個編號1-8的方塊,最后一個格子是未放置方塊的空格子;對于4*4的魔板,在前15格子里隨即放置15編號1-15的方塊,最后一個格子是未放置方塊的空格子。(2)用鼠標(biāo)單擊任何與空格子水平或垂直相鄰的方塊可以把該方塊移入空格子,而當(dāng)前方塊移動之前所在的格子成為空格子。通過不斷地移動方塊可以將方塊一行一行地按數(shù)字順序排好,例如,對于3*3格子組成的魔板,要求方塊最后排列的順序如圖所示。(3)魔板游戲也可以使用圖像來代替數(shù)字。例如,對于4*4的魔板,將一幅圖像分成4*4幅小圖像,除去最后一幅小圖像(圖像的右下角),將其余各幅小圖像打亂順序后放在魔板方塊上,最終目標(biāo)是通過移動方塊恢復(fù)原始圖像(不包括圖像的右下角)。2系統(tǒng)需求分析系統(tǒng)目標(biāo)設(shè)計GUI界面的魔板游戲程序。主體功能這個程序定義了一些組件,工具欄按鈕,文本區(qū)和菜單。魔板游戲程序設(shè)計通過、、3個類來實現(xiàn)魔板游戲的整體功能。開發(fā)環(huán)境操作系統(tǒng):MicrosoftWindows7開發(fā)工具:、3概要設(shè)計系統(tǒng)的功能模塊劃分在設(shè)計魔板游戲時,需要編寫3個java源文件:、、。魔板游戲除了需要編寫的上述3個Java源文件所給出的類外,還需要Java系統(tǒng)提供的一些重要的類,如JMenuItem、JButton和JRadioButton等類。類模塊PuzzleFrame類負(fù)責(zé)創(chuàng)建魔板游戲的主窗口,該類含有main方法,程序從該類開始。PuzzleFrame類的成員變量中有4種重要類型的對象:PuzzlePad、JmenuItem、JRadioButton和JButton。PuzzleFrame類的主要成員的作用將在后面的詳細(xì)設(shè)計中闡述,PuzzleFrame類主要成員變量(屬性)和主要方法如表所示。表格SEQ表格\*ARABIC1主要成員變量(屬性)成員變量描述變量類型名稱魔板PuzzlePadPuzzlePad開始游戲的按鈕Jbutton開始選擇玩法JradioButton數(shù)字玩法,圖像玩法表格SEQ表格\*ARABIC2主要方法名稱功能備注PuzzleFrameactionPerformedmain創(chuàng)建程序主窗口處理ActionEvent事件程序開始運(yùn)行的方法構(gòu)造方法接口方法類模塊PuzzlePad類創(chuàng)建的對象是PuzzleFrame類最重要的成員之一,代表“魔板”。該類的成員變量中有5種重要類型的對象:Point、Block和Image。PuzzlePad類類主要成員變量(屬性)和主要方法如表所示。表格SEQ表格\*ARABIC3主要成員變量(屬性)描述變量類型名稱魔板中的行數(shù)和列數(shù)魔板中方塊的寬和高魔板中二維點(diǎn)數(shù)組魔板中而為方塊數(shù)組模板可能用到的圖像intintSquarePoint[][]JButtonImagerows,columswidth,heightpointblockimage表格SEQ表格\*ARABIC4主要方法名稱功能備注PuzzlePad隨機(jī)排列數(shù)字隨機(jī)排列圖像paintComponentactionPerformed創(chuàng)建魔板對象隨機(jī)排列魔板中方塊上的數(shù)字隨機(jī)排列魔板中方塊上的圖像繪制圖像處理ActionEvent事件構(gòu)造方法接口方法類模塊SquarePoint類負(fù)責(zé)創(chuàng)建確定位置的對象,使用Point對象可以確定Block對象在PuzzlePad對象中的位置,即確定“方塊”在“魔板”中的位置。類主要成員變量(屬性)和主要方法如表所示。表格5主要成員變量(屬性)描述變量類型名稱判斷點(diǎn)上是否有方塊點(diǎn)上的方塊對象booleanJButton有方塊block表格6主要方法名稱功能備注SquarePointget有方塊set有方塊setBlockgetBlock創(chuàng)建“點(diǎn)”對象判斷點(diǎn)上是否有方塊設(shè)置點(diǎn)上是否有方塊在點(diǎn)上放置方塊獲取點(diǎn)上的方塊構(gòu)造方法系統(tǒng)流程圖根據(jù)對模板游戲的功能分析,設(shè)計得到魔板游戲總流程,如圖所示:圖SEQ圖\*ARABIC1系統(tǒng)流程圖4設(shè)計過程與分析由于我們要將這個游戲?qū)懗梢粋€應(yīng)用程序,所以首先要設(shè)計一下游戲的框架和菜單。

游戲的框架采用標(biāo)準(zhǔn)的Windows框架,在上面有標(biāo)題欄、菜單欄,以方便玩家控制游戲。我們應(yīng)該先做好這一部分。菜單欄包括魔板游戲??蚣苤虚g嵌入顯示單選按鈕和按鈕。然后,應(yīng)該在一個面板上構(gòu)建游戲的界面,將這個面板嵌入到游戲的大框架里。這樣整個游戲的界面就出來了。

對菜單以及界面上的控制按鈕進(jìn)行響應(yīng),并相應(yīng)地來控制游戲。這時我們需要添加對菜單和按鈕的事件響應(yīng)方法。

在游戲面板構(gòu)建好這后,我們應(yīng)該讓游戲能夠玩起來,這一部分主要是編寫一些算法,用來控制游戲。這里我們還應(yīng)該增加對鼠標(biāo)事件的響應(yīng),讓玩家用鼠標(biāo)控制游戲。為了實現(xiàn)魔板游戲的所有需求,設(shè)計應(yīng)分為三個部分:首先需要設(shè)計此魔板游戲的的界面以及其框架布局。魔板游戲的基本框架從上由下依次是、菜單欄、游戲操作主界面。菜單欄包含了魔板游戲一個菜單選項,并對各個菜單項以及界面上的小方格控制按鈕進(jìn)行事件響應(yīng),相應(yīng)地來成功控制魔板游戲中的有關(guān)操作。其次則需設(shè)計魔板游戲的“拼圖”功能設(shè)計,需要設(shè)計在主界面中加載大圖片并將其分割到9個或16個小方格里,在設(shè)置方格為按鈕事件響應(yīng),然后編寫算法控制小方格的移動,移動方向總是朝沒有圖案的空方格上移動,同時還需要在游戲中設(shè)置預(yù)覽功能,讓玩家在游戲的任何時候都能預(yù)覽他們要完成的拼圖。

魔板游戲的程序由三個類構(gòu)成,其中類PuzzleFrame包含main()方法;PuzzlePad類中則含五個方法:方法PuzzlePad()、方法actionPerformed()、方法隨機(jī)排列數(shù)字()、方法隨機(jī)排列圖像()和方法paintComponent

();SquarePoint類中則包含了方法SquarePoint(int

x,int

y)此魔板游戲由三個類實現(xiàn)所有設(shè)計需求。第一個類PuzzleFrame定義了一個main()方法,創(chuàng)建了PuzzleFrame類實例,設(shè)置了程序的入口同時也設(shè)置了魔板游戲的Windows窗口主界面的菜單欄以及主界面分散按鈕上的各個連接。

第二個類SquarePoint包含了一個SquarePoint(int

x,int

y)方法,這個方法控制主界面上分散的小圖片受到鼠標(biāo)的按鈕響應(yīng)后圖片的移動,它控制小圖片往沒有圖片的空位置移動。

第三個類PuzzlePad中則含五個方法:方法PuzzlePad()添加圖片和設(shè)置小方格的布局;方法actionPerformed()實現(xiàn)小方格的移動規(guī)則;方法隨機(jī)排列數(shù)字()和方法隨機(jī)排列圖像()實現(xiàn)點(diǎn)擊開始玩按鈕時,隨機(jī)產(chǎn)生一個圖片和數(shù)字的排列;方法paintComponent()實現(xiàn)小方格中黑色小方格功能實現(xiàn)。5設(shè)計結(jié)果與測試圖SEQ圖\*ARABIC2初級魔板游戲數(shù)字玩法import.*;import.*;publicclassBlockextendsJTextField{Pointpoint;Objectobject;Block(){setEditable(false);setHorizontalAlignment;setFont(newFont("Arial",,16));setForeground;}publicvoidsetAtPoint(Pointp){point=p;}publicPointgetAtPoint(){returnpoint;}publicvoidsetObject(Objectobject){=object;if(objectinstanceofInteger){Integernumber=(Integer)object;setText(""+());}elseif(objectinstanceofImage){repaint();}}publicObjectgetObject(){returnobject;}publicvoidpaintComponent(Graphicsg){(g);intw=getBounds().width;inth=getBounds().height;try{((Image)object,0,0,w,h,this);}catch(Exceptionexp){}}}圖SEQ圖\*ARABIC3高級魔板游戲數(shù)字玩法publicclassPoint{intx,y;booleanhaveBlock;Blockblock=null;publicPoint(intx,inty){=x;=y;}publicbooleanisHaveBlock(){returnhaveBlock;}publicvoidsetHaveBlock(booleanboo){haveBlock=boo;}publicintgetX(){returnx;}publicintgetY(){returny;}publicbooleanequals(Pointp){if()==()&&()==())returntrue;elsereturnfalse;}publicvoidsetBlock(Blockblock){=block;}publicBlockgetBlock(){returnblock;}圖SEQ圖\*ARABIC4初級魔板游戲圖像玩法publicImage[]getImages(Imageimage,introws,intcolums){Image[]blockImage=newImage[rows*colums];try{imageWidth=(this);imageHeight=(this);intw=imageWidth/colums;inth=imageHeight/rows;intk=0;PixelGrabberpg=null;ImageProducerip=null;for(inti=0;i<rows;i++){for(intj=0;j<colums;j++){intpixels[]=newint[w*h];pg=newPixelGrabber(image,j*w,i*h,w,h,pixels,0,w);();ip=newMemoryImageSource(w,h,pixels,0,w);blockImage[k]=(ip);k++;}}}圖SEQ圖\*ARABIC5高級魔板游戲圖像玩法publicvoidactionPerformed(ActionEvente){if()==startButton){if()){();}elseif()){(image);();}}elseif()==oneGrade){(1);}elseif()==twoGrade){(2);}elseif()==newImage){FileNameExtensionFilterfilter=newFileNameExtensionFilter("JPG&GIFImages","jpg","gif");JFileChooserchooser=newJFileChooser();(filter);intstate=(null);Filefile=();if(file!=null&&state=={try{image=().toURL());(image);}catch(Exceptionexp){}

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論