freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于java的掃雷游戲課程設(shè)計(已修改)

2025-06-19 08:19 本頁面
 

【正文】 基于 JAVA 的掃雷小游戲 一、 引言 本次課程設(shè)計目的在于設(shè)計開發(fā)一個類似 windows自帶掃雷游戲的小游戲,實現(xiàn)基本的掃雷面板及掃雷的游戲功能、游戲數(shù)據(jù)存儲、游戲計時等功能。設(shè)計采用 Windows下的 eclipse開發(fā)工具由本人獨立完成。 二、 系統(tǒng)設(shè)計 本游戲采用快速原型模型的軟件開發(fā)方法設(shè)計,總共經(jīng)歷了八個版本的修改最終完成設(shè)計要求。 在第一個版本中,實現(xiàn)如下功能: 基于 JFrame的掃雷框架的建立: 使用 JFrame建立起如圖的所示的程序框架,雷區(qū)為 12*12,添加 JPanel和 JButton,采用 setBounds的布局方式而非內(nèi)置的布局方法。 基于 Random方法的虛擬雷盤的建立和動態(tài)修改: 通過 Random產(chǎn)生出一個 14*14的數(shù)組,其中,二維數(shù)組邊緣對應(yīng)邊框標記值為 2,產(chǎn)生的雷點標記為 1,普通點標記為 0。再次建立一個 12*12的數(shù)組對應(yīng)實際的游戲面板,初始值為 0,遍歷 14*14的數(shù)組中非邊緣的元素,將每個格子周圍的地雷數(shù)目賦值給對應(yīng)的 12*12數(shù)組,地雷仍然用 1來表示,最后遍歷 12*12的數(shù)組同時把數(shù)組中非 0非 1的數(shù)繪制到 JPanel上,值為 1的元素向面板對應(yīng)位置添加一個地雷的圖片(注:地雷圖 片來自 Windows7自帶掃雷游戲的截圖)。 基于 Button的雷區(qū)覆蓋面板建立以及虛擬雷盤的 ActionListener的連接: 將生成好的底板覆蓋上 12*12的 Button并且為每個 Button添加ActionListener,實現(xiàn)點擊后隱藏對應(yīng)的 Button功能。結(jié)果如下圖: 重新開始及其按鍵功能的實現(xiàn): 通過“重新開始”按鍵重新生成雷區(qū)以及重新覆蓋 Button到所有格子。 關(guān)于按鍵及其功能: 通過“關(guān)于”按鍵彈出一個 MessageDialog。 在第二個版本中,實現(xiàn)如下 功能: 新增利用遞歸算法實現(xiàn)的一次點開一片區(qū)域功能 : 通過數(shù)據(jù)結(jié)構(gòu)中的走迷宮算法在按鍵監(jiān)聽中加入了連鎖點亮的算法,點亮該格,然后依次遍歷 12*12表的周圍 9格,發(fā)現(xiàn)為空格即遞歸調(diào)用遍歷算法,發(fā)現(xiàn)數(shù)字即點亮該格并 return,初步實現(xiàn)了如圖所示的功能: 新增虛擬訪問判定表的建立和刷新及修改: 即通過查找已標記的正確的雷并且計數(shù),如果達到了設(shè)定了雷的最大值即執(zhí)行游戲結(jié)束的方法。 新增失敗提示框和自動刷新功能: 即點亮了地雷的區(qū)域后,自動彈出對話框提示失敗并且執(zhí)行游戲結(jié)束的方法。 對原 boom表進行了改動 ,解決了虛擬表和實際表的下標錯位問題 將原 12*12的數(shù)組擴充到 14*14。 在第三個版本中,實現(xiàn)如下功能: 修復(fù)了一個導(dǎo)致重新開始后第一行雷點位置不變的 BUG: 重寫游戲結(jié)束的算法,改變循環(huán)的起始點,使其可以正確生成虛擬的雷點。 新增了右鍵標記、取消雷點的功能: 為每個 Button添加了 MouseListener從而實現(xiàn)了當點擊鼠標右鍵時可以修改 Button上文字,顯示為雷,并且當該 Button已經(jīng)顯示了雷的時候再次右鍵該 Button可以取消文字顯示。 在第四個版本中,實現(xiàn)如下功能: 調(diào)整了按鍵監(jiān)聽的 點亮區(qū)域算法,當且僅當點擊處周圍沒有地雷時才會觸發(fā)openButton()算法,否則僅顯示當前區(qū)域,提高了游戲性: 重寫了 Button的 ActionListener,按條件區(qū)分是否執(zhí)行遞歸點亮算法,當且僅當單擊區(qū)域為空的時候才執(zhí)行點亮算法,否則僅點亮該區(qū)域。 新增了基于 ()的計時器功能,計時器與重新開始游戲?qū)?yīng)同步更新: 通過在游戲開始時獲取一個 currentTimeMillis()以及實時監(jiān)控并刷新計時器窗口的值為當前時間減去初始時間除以 1000,為節(jié)約內(nèi)存 ,單獨為計時器開辟了一個線程,每工作一次該線程休息 。 在第五個版本中,實現(xiàn)如下功能: 更改了獲勝和失敗后的提示信息: 將本次游戲時間加入了游戲結(jié)束時的提示窗口。 新增了“記錄”窗體的框架和面板: 增加了一個新的 JFrame,對應(yīng)“記錄”按鈕。 在第六個版本中,實現(xiàn)如下功能: 再次改進了按鍵監(jiān)聽的點亮區(qū)域算法: 進行遞歸遍歷時將正相鄰和斜相鄰兩種情況分開,使斜相鄰的地雷值為 0的格子不再會被自動點亮,提高了游戲性,至此版本為止,該算法已經(jīng)完全符合預(yù)期要求。 游戲后臺新加入了 recordlist類, 用來存儲和處理光榮榜的數(shù)據(jù): 該類擁有 10條記錄以及插入新數(shù)據(jù)到對應(yīng)位置的功能。 對記錄窗體的改動: 通過取消設(shè)定 recordFrame類的()。以及設(shè)定()。方法解決了關(guān)閉窗口時導(dǎo)致的程序異常終止的錯誤。 在第七個版本中,實現(xiàn)如下功能: 記錄的讀取與存儲: 通過 ObjectOutputStream和 ObjectInputStream成功實現(xiàn)了對光榮榜文件的存取功能。并 且重新定義了上一版本的光榮榜信息控件,增加了獲勝時修改光榮榜并且自動保存文件的功能,同時新增 nameInput窗口類到游戲結(jié)束時并且成績足以進入光榮榜時調(diào)用的方法中,用于輸入獲取進入光榮榜的玩家信息。 在最終版本中,實現(xiàn)如下功能: 記錄與游戲的同步措施: 通過更改 FileOutputStream的實現(xiàn)位置到 nameInputer中的actionListener中并且將 recordlist和 usedTime以參數(shù)形式通過構(gòu)造函數(shù)傳入 nameInputer類中成功實現(xiàn)了光榮榜數(shù)據(jù)文件的存取。 三、 系統(tǒng)實現(xiàn) Sweeper類: import .*。 import .*。 import .*。 import 。 import .*。 public class sweeper{ Button boom[][] = new Button[14][14]。 int visualBoom[][] = new int[14][14]。 int visitTest[][] = new int[14][14]。 int numOfBoom = 0。 Label timeLabel = new Label()。 timeRunnable runnable = new timeRunnable()。 Thread timeThread = new Thread(runnable)。 long startTime。 long usedTime。 JFrame mainframe。 myPanel panel。 Image boomImage = new ImageIcon().getImage()。 recordlist list = new recordlist()。 JButton startButton。 JButton aboutButton。 JButton recordButton。 //類的屬性 void createWindow(){ //創(chuàng)建基礎(chǔ)框架 mainframe = new
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1