資源描述:
《java_掃雷游戲課程設(shè)計(jì)報(bào)告》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、濱江學(xué)院2011~2012學(xué)年第2學(xué)期《數(shù)字圖像處理》課程論文題目Java設(shè)計(jì)掃雷游戲?qū)I(yè)通信工程姓名王李超學(xué)號(hào)201023340382012年06月05日設(shè)計(jì)通信編程課程論文Java設(shè)計(jì)掃雷游戲王李超,20102334038南京信息工程大學(xué)濱江學(xué)院電子工程系,南京210041.設(shè)計(jì)內(nèi)容及要求1.1掃雷游戲的基本要求Windows2000/XP系統(tǒng)提供的掃雷游戲是一個(gè)很有趣的游戲。本章的課程設(shè)計(jì)使用Java語言編寫一個(gè)與其類似的掃雷游戲。具體要求如下:(1)掃雷游戲分為初級(jí)、中級(jí)和高級(jí)三個(gè)級(jí)別,掃雷英雄榜存儲(chǔ)每個(gè)級(jí)別的最好成績,即挖出全部的地雷且用時(shí)最少者。單擊游戲菜單可以選擇“
2、初級(jí)”、“中級(jí)”和“高級(jí)”或“查看英雄版”。(2)選擇級(jí)別后將出現(xiàn)相應(yīng)級(jí)別的掃雷區(qū)域,這是用戶使用鼠標(biāo)左鍵單擊雷區(qū)中任何一個(gè)方塊便啟動(dòng)計(jì)時(shí)器。(3)用戶要揭開某個(gè)方塊,可單擊它。若所揭方塊下有淚,用戶便輸了這一局,若所揭方塊下五雷,則顯示一個(gè)數(shù)字,該數(shù)字代表方塊的周圍的8個(gè)方塊中共有多少顆雷。(4)如果用戶認(rèn)為某個(gè)方塊下埋著雷,單擊右鍵可以在方塊上標(biāo)識(shí)一個(gè)用戶認(rèn)為是雷的圖標(biāo),即給出一個(gè)掃雷標(biāo)記。用戶每標(biāo)記出一個(gè)掃雷標(biāo)記(無論用戶的標(biāo)記是否正確),程序?qū)@示的剩余雷數(shù)減少一個(gè)。(5)掃雷勝利后(用時(shí)最少者),程序彈出保存成績的對(duì)話框。(6)用戶可以選擇標(biāo)記疑問的方塊,用可以勾選游戲
3、菜單下的標(biāo)記(或者用快捷鍵alt+G然后M)即可,此時(shí)雙擊右鍵并可出現(xiàn)“?”標(biāo)記。另有顏色選項(xiàng),當(dāng)用戶勾選此項(xiàng)時(shí),游戲?qū)⒁宰畹蛨D像像素來顯示。(7)如果用戶需要即使提示聲,并可選中聲音選項(xiàng),此時(shí)將聽到計(jì)時(shí)的卡塔聲。當(dāng)用戶點(diǎn)中雷時(shí),將有爆炸聲產(chǎn)生,勝利時(shí),將有凱旋的旋律播放,此時(shí)企鵝出現(xiàn)歡悅表情。1.2需實(shí)現(xiàn)的主要功能(1)用戶可以自定義級(jí)別并且可以任意輸入雷數(shù);(2)具有計(jì)時(shí)功能,即顯示用戶完成移動(dòng)盤子所花費(fèi)的時(shí)間;(3)用戶可以選擇是否有音效;(4)自動(dòng)保存掃雷英雄榜;2.需求分析2.1掃雷棋盤的布局設(shè)計(jì)系統(tǒng)的整體布局為:CardLayout布局,采用了菜單、按鈕、面板…等組件
4、,菜單主要包括開始,選擇級(jí)別,標(biāo)記,掃雷英雄榜,退出,按鈕的功能是重新開始新的游戲。2.2雷區(qū)的設(shè)計(jì)MineArea類是javax.swing包中Jpanel容器的子類,實(shí)現(xiàn)了ActionListener和MouseListener接口,所創(chuàng)建的對(duì)象:mineArea是MineGame類中最重要的成員之一,作為一個(gè)容器添加到MineGame窗口的中心。標(biāo)明MineArea類的主要成員變量、方法以及和MineGame類之間組合關(guān)系的UML圖如圖2-1所示。圖2-1MineArea類的UML圖以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說明。1、成員變量(1)block是Block類型的數(shù)組
5、,用來確定雷區(qū)有多少需進(jìn)行掃雷的方塊。(2)blockView是BlockView類型的數(shù)組,負(fù)責(zé)為block數(shù)組中的Block對(duì)象提供視圖。(3)lay是LayMines類型的對(duì)象,負(fù)責(zé)設(shè)置block數(shù)組中的哪些方塊是雷或不是雷。(4)record負(fù)責(zé)提供保存成績的界面,是一個(gè)對(duì)話框,默認(rèn)不可見。用戶只有掃雷成功后(用時(shí)最少),才可以看見對(duì)話框。(5)reStart是一個(gè)按鈕對(duì)象,用戶單擊它重新開始游戲。(6)time是計(jì)時(shí)器對(duì)象,負(fù)責(zé)計(jì)算用戶的用時(shí)。2、方法(1)initMineArea(int,int,int,int)方法可根據(jù)參數(shù)提供的數(shù)據(jù)設(shè)置雷區(qū)的寬度、高度、雷的數(shù)目以
6、及雷區(qū)的級(jí)別。(2)actionPerformed(ActionEvent)是MineArea類實(shí)現(xiàn)的ActionListener接口中的方法。當(dāng)用戶單擊blockView中的某個(gè)方塊時(shí),actionPerformed(ActionEvent)方法負(fù)責(zé)執(zhí)行有關(guān)算法,例如,當(dāng)用鼠標(biāo)左鍵單擊方塊上的按鈕后,若該方塊下有雷,actionPerformed(ActionEvent)方法將使用戶輸?shù)舯揪?,若該方塊下無雷,actionPerformed(ActionEvent)方法將顯示blockView對(duì)象中的標(biāo)簽,該標(biāo)簽上是一個(gè)數(shù)字,該數(shù)字代表當(dāng)前方塊的周圍的8個(gè)方塊中共有多少顆雷。(3
7、)show()方法是一個(gè)遞歸方法。actionPerformed(ActionEvent)方法執(zhí)行時(shí)將調(diào)用show方法進(jìn)行掃雷。(4)mousePressed(MouseEvent)方法是MineArea類實(shí)現(xiàn)的MouseListener接口中的方法,當(dāng)用戶按下鼠標(biāo)有件事mousePressed(MouseEvent)方法負(fù)責(zé)讓方塊上顯示一個(gè)探雷標(biāo)記。(5)inquireWin()方法用來判斷用戶是否掃雷成功,如果成功該方法負(fù)責(zé)讓record對(duì)話框可見。所謂掃雷成功是指不僅找到了