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