基于java的掃雷游戲課程設(shè)計(jì)

基于java的掃雷游戲課程設(shè)計(jì)

ID:24989470

大?。?07.00 KB

頁(yè)數(shù):15頁(yè)

時(shí)間:2018-11-17

基于java的掃雷游戲課程設(shè)計(jì)_第1頁(yè)
基于java的掃雷游戲課程設(shè)計(jì)_第2頁(yè)
基于java的掃雷游戲課程設(shè)計(jì)_第3頁(yè)
基于java的掃雷游戲課程設(shè)計(jì)_第4頁(yè)
基于java的掃雷游戲課程設(shè)計(jì)_第5頁(yè)
資源描述:

《基于java的掃雷游戲課程設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。

1、基于JAVA的掃雷小游戲一、引言本次課程設(shè)計(jì)目的在于設(shè)計(jì)開發(fā)一個(gè)類似windows自帶掃雷游戲的小游戲,實(shí)現(xiàn)基本的掃雷面板及掃雷的游戲功能、游戲數(shù)據(jù)存儲(chǔ)、游戲計(jì)時(shí)等功能。設(shè)計(jì)采用Windows下的eclipse開發(fā)工具由本人獨(dú)立完成。二、系統(tǒng)設(shè)計(jì)本游戲采用快速原型模型的軟件開發(fā)方法設(shè)計(jì),總共經(jīng)歷了八個(gè)版本的修改最終完成設(shè)計(jì)要求。在第一個(gè)版本中,實(shí)現(xiàn)如下功能:基于JFrame的掃雷框架的建立:使用JFrame建立起如圖的所示的程序框架,雷區(qū)為12*12,添加JPanel和JButton,采用setBounds的布局方式而非內(nèi)置的布局方法。基于Random方法的虛擬雷盤的建立和動(dòng)態(tài)修改:通過R

2、andom產(chǎn)生出一個(gè)14*14的數(shù)組,其中,二維數(shù)組邊緣對(duì)應(yīng)邊框標(biāo)記值為2,產(chǎn)生的雷點(diǎn)標(biāo)記為1,普通點(diǎn)標(biāo)記為0。再次建立一個(gè)12*12的數(shù)組對(duì)應(yīng)實(shí)際的游戲面板,初始值為0,遍歷14*14的數(shù)組中非邊緣的元素,將每個(gè)格子周圍的地雷數(shù)目賦值給對(duì)應(yīng)的12*12數(shù)組,地雷仍然用-1來表示,最后遍歷12*12的數(shù)組同時(shí)把數(shù)組中非0非-1的數(shù)繪制到JPanel上,值為-1的元素向面板對(duì)應(yīng)位置添加一個(gè)地雷的圖片(注:地雷圖片來自Windows7自帶掃雷游戲的截圖)。基于Button的雷區(qū)覆蓋面板建立以及虛擬雷盤的ActionListener的連接:將生成好的底板覆蓋上12*12的Button并且為每個(gè)B

3、utton添加ActionListener,實(shí)現(xiàn)點(diǎn)擊后隱藏對(duì)應(yīng)的Button功能。結(jié)果如下圖:重新開始及其按鍵功能的實(shí)現(xiàn):通過“重新開始”按鍵重新生成雷區(qū)以及重新覆蓋Button到所有格子。關(guān)于按鍵及其功能:通過“關(guān)于”按鍵彈出一個(gè)MessageDialog。在第二個(gè)版本中,實(shí)現(xiàn)如下功能:新增利用遞歸算法實(shí)現(xiàn)的一次點(diǎn)開一片區(qū)域功能:通過數(shù)據(jù)結(jié)構(gòu)中的走迷宮算法在按鍵監(jiān)聽中加入了連鎖點(diǎn)亮的算法,點(diǎn)亮該格,然后依次遍歷12*12表的周圍9格,發(fā)現(xiàn)為空格即遞歸調(diào)用遍歷算法,發(fā)現(xiàn)數(shù)字即點(diǎn)亮該格并return,初步實(shí)現(xiàn)了如圖所示的功能:新增虛擬訪問判定表的建立和刷新及修改:即通過查找已標(biāo)記的正確的雷并

4、且計(jì)數(shù),如果達(dá)到了設(shè)定了雷的最大值即執(zhí)行游戲結(jié)束的方法。新增失敗提示框和自動(dòng)刷新功能:即點(diǎn)亮了地雷的區(qū)域后,自動(dòng)彈出對(duì)話框提示失敗并且執(zhí)行游戲結(jié)束的方法。對(duì)原boom表進(jìn)行了改動(dòng),解決了虛擬表和實(shí)際表的下標(biāo)錯(cuò)位問題將原12*12的數(shù)組擴(kuò)充到14*14。在第三個(gè)版本中,實(shí)現(xiàn)如下功能:修復(fù)了一個(gè)導(dǎo)致重新開始后第一行雷點(diǎn)位置不變的BUG:重寫游戲結(jié)束的算法,改變循環(huán)的起始點(diǎn),使其可以正確生成虛擬的雷點(diǎn)。新增了右鍵標(biāo)記、取消雷點(diǎn)的功能:為每個(gè)Button添加了MouseListener從而實(shí)現(xiàn)了當(dāng)點(diǎn)擊鼠標(biāo)右鍵時(shí)可以修改Button上文字,顯示為雷,并且當(dāng)該Button已經(jīng)顯示了雷的時(shí)候再次右鍵該B

5、utton可以取消文字顯示。在第四個(gè)版本中,實(shí)現(xiàn)如下功能:調(diào)整了按鍵監(jiān)聽的點(diǎn)亮區(qū)域算法,當(dāng)且僅當(dāng)點(diǎn)擊處周圍沒有地雷時(shí)才會(huì)觸發(fā)openButton()算法,否則僅顯示當(dāng)前區(qū)域,提高了游戲性:重寫了Button的ActionListener,按條件區(qū)分是否執(zhí)行遞歸點(diǎn)亮算法,當(dāng)且僅當(dāng)單擊區(qū)域?yàn)榭盏臅r(shí)候才執(zhí)行點(diǎn)亮算法,否則僅點(diǎn)亮該區(qū)域。新增了基于System.currentTimeMillis()的計(jì)時(shí)器功能,計(jì)時(shí)器與重新開始游戲?qū)?yīng)同步更新:通過在游戲開始時(shí)獲取一個(gè)currentTimeMillis()以及實(shí)時(shí)監(jiān)控并刷新計(jì)時(shí)器窗口的值為當(dāng)前時(shí)間減去初始時(shí)間除以1000,為節(jié)約內(nèi)存,單獨(dú)為計(jì)時(shí)器開

6、辟了一個(gè)線程,每工作一次該線程休息0.5秒。在第五個(gè)版本中,實(shí)現(xiàn)如下功能:更改了獲勝和失敗后的提示信息:將本次游戲時(shí)間加入了游戲結(jié)束時(shí)的提示窗口。新增了“記錄”窗體的框架和面板:增加了一個(gè)新的JFrame,對(duì)應(yīng)“記錄”按鈕。在第六個(gè)版本中,實(shí)現(xiàn)如下功能:再次改進(jìn)了按鍵監(jiān)聽的點(diǎn)亮區(qū)域算法:進(jìn)行遞歸遍歷時(shí)將正相鄰和斜相鄰兩種情況分開,使斜相鄰的地雷值為0的格子不再會(huì)被自動(dòng)點(diǎn)亮,提高了游戲性,至此版本為止,該算法已經(jīng)完全符合預(yù)期要求。游戲后臺(tái)新加入了recordlist類,用來存儲(chǔ)和處理光榮榜的數(shù)據(jù):該類擁有10條記錄以及插入新數(shù)據(jù)到對(duì)應(yīng)位置的功能。對(duì)記錄窗體的改動(dòng):通過取消設(shè)定recordFr

7、ame類的mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);以及設(shè)定recFrame.hide();方法解決了關(guān)閉窗口時(shí)導(dǎo)致的程序異常終止的錯(cuò)誤。在第七個(gè)版本中,實(shí)現(xiàn)如下功能:記錄的讀取與存儲(chǔ):通過ObjectOutputStream和ObjectInputStream成功實(shí)現(xiàn)了對(duì)光榮榜文件的存取功能。并且重新定義了上一版本的光榮榜信息控件,增加了獲勝時(shí)修改

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。