Java課程設計掃雷_第1頁
Java課程設計掃雷_第2頁
Java課程設計掃雷_第3頁
Java課程設計掃雷_第4頁
Java課程設計掃雷_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目錄 I 1 課程設計目的 2 功能描述 . 1 2.1 設計背景 1 2.2 需求分析 1 3 設計方案論證 2 3.1 概要設計 2 3.2 設計流程圖 4 4 詳細設計 . 5 4.1 MineGame 類 5 4.2 MineArea 類 5 4.3 Block 類 6 4.4 BlockView 類 6 4.5 LayMines 類 7 4.6 Record 類 7 4.7 ShowRecord 類 8 5 運行結果分析 11 13 6 設計體會 . 參考文獻 1 課程設計目的 本次課程設計是用 Java 語言及相關知識設計一個掃雷游戲系統(tǒng),完成掃雷 游戲的基本功能, 并在此基礎上,

2、 自行完善和優(yōu)化系統(tǒng)功能。 理解掌握選擇游戲 級別,記錄游戲時間和保存游戲成績的方法,學習程序設計的基本思路和方法, 培養(yǎng)計算機專業(yè)學生運用所學知識解決計算機應用領域內實際問題能力, 進一步 提高自身動手操作能力和用 Java 語言綜合編程能力,程序調試技能。 2 功能描述 2.1 設計背景 圖形用戶界面簡稱GUI,是用圖形的方式,借助菜單、按鈕等標準界面元素 和鼠標操作, 幫助用戶方便地向計算機系統(tǒng)發(fā)出指令、 啟動操作, 并將系統(tǒng)的運 行結果同樣以圖形的方式顯示給用戶的技術。JAVA的圖形用戶界面技術即為使 用java.awt包來創(chuàng)建圖形界面的方法,包括 AWT組件、窗口和菜單設計、布局 管

3、理期以及繪圖操作等。 AWT既抽象窗口工具集,用于圖形用戶界面的開發(fā)。AWT的功能包括以下 方面: (1)豐富的圖形界面組件。 (2)強大的事件處理模型圖形和圖形工具,暴扣形狀、顏色和字體。 (3)布局管理器,可以進行靈活的窗口布局,設計特定窗口的尺寸和屏幕 分率。 (4)無關數(shù)據(jù)傳送類, 可以通過本地平臺的剪貼板來進行剪切和粘貼操作。 打印和無鼠標操作。 Java.awt是java基本包中最大的一個,其中定義了所有的GUI組件類,以及 其他用于構造圖形界面的類。 2.2 需求分析 (1)掃雷游戲分為初級、中級和高級三個級別,掃雷英雄榜存儲每個級別 的最好成績, 即挖出全部的地雷且用時最少者。

4、 單擊游戲菜單可以選擇 “初級”、 “中級”和“高級”或查看“英雄榜” 。 (2)選擇級別后將出現(xiàn)相應級別的掃雷區(qū)域,這時用戶使用鼠標左鍵單擊 雷區(qū)中的任何一個方塊便啟動計時器。 (3)用戶要揭開某個方塊,可單擊它。若所揭方塊下有雷,用戶便輸了這 一局,若所揭方塊下無雷,則顯示一個數(shù)字,該數(shù)字代表方塊的周圍的8個方塊 中共有多少顆雷。 (4)如果用戶認為某個方塊下埋著雷,單擊右鍵可以在方塊上表示一個用 戶認為是雷的圖標,即給出一個掃雷標記。用戶每標記一個掃雷標記(無論用戶 的標記是否正確),程序將顯示的剩余雷數(shù)減少一個。 (5)掃雷勝利后(用時最少者),程序彈出保存成績的對話框。 3設計方案論

5、證 3.1概要設計 在設計掃雷游戲時,需要編寫7個Java源程序:MineGame.java、 Min eArea.java、Block.java 、BlockView.java 、Lay Min es.java、Record.java 和 ShowRecord.java。 掃雷游戲除了需要編寫上述7個Java源文件所給出的類外,還需要Java系 統(tǒng)提供的一些重要的類,如 File、JButton和JLabel等類。掃雷游戲所用到的 一些重要的類以及之間的組合關系如圖31所示。 圖3 1類之間的組與關系 3.1.1 MineGame.java(主類) Min eGam類負責創(chuàng)建掃雷游戲機主窗口

6、,該文件含有 main方法,掃雷游戲 從該類開始執(zhí)行。Min eGame類主要有三種類型的成員:File、Mi neArea和 ShowRecordX寸象。 3.1.2 MineArea.java MineArea類創(chuàng)建的對象是MineArea類最重要的成員之一,代表“掃雷區(qū)域”。 該類的成員變量中有 5個重要類型的對象:Block、BlockView、LayMines和Record0 3.1.3 Block.java Block 類是雷區(qū)中“方塊”的類封裝,含有關于“方塊”的屬性以及操作, 即負責為雷區(qū)創(chuàng)建代表“方塊”的 Block 對象。 3.1.4 BlockView.java Bloc

7、kView 是 JPanel 容器的子類, BlockView 創(chuàng)建的對象負責為 Block 對象 提供視圖,以便用戶通過該視圖與 Block 對象交互。 BlockView 對象使用一個標 簽和按鈕為 Block 對象提供視圖, 標簽和按鈕按著卡片布局 (CardLayout )層疊 在一起,默認狀態(tài)下按鈕遮擋住標簽。 當用戶單擊按鈕后, 如果 Block 對象是雷, BlockView 對象中的標簽顯示的是雷的圖標;如果 Block 對象不是是雷,標簽顯 示的是當前 Block 對象周圍雷的總數(shù)。 3.1.5 LayMines.java LayMines 類對象不需要視圖,在游戲中不需要看

8、見該對象。 LayMines 對象 使用隨機算法指定 MineArea 對象中的哪些 Block 對象是雷,哪些 Block 對象不 是雷。 3.1.6 Record.java Record 類是 JDialog 對話框的子類,當用戶掃雷成功時, Record 對象負責 保存用戶的成績到文件。 3.1.7 ShowRecord.java ShowRecord類是JDialog對話框的子類,當用戶查看掃雷的最好成功時, ShowRecord對象負責讀取文件數(shù)據(jù)的界面。 7 3.2設計流程圖 該游戲的整體設計流程圖如圖32所示: 圖32游戲設計流程圖 4 詳細設計 4.1 MineGame 類 M

9、ineGame類是javax.swing 包中JFrame的一個子類,并實現(xiàn)了 ActionListener 接口,該類的主要成員變量和方法: 成員變量 1) bar 和 fileMenu 提供菜單操作,單擊游戲菜單中的選項為“初級” 、“中 級”和“高級”或“掃雷英雄榜” 。 2) mineArea是掃雷區(qū)域,提供有關掃雷的主要功能。 3) “英雄榜”負責存放三個級別的掃雷最好的成績。 4) showHeroRecord 負責顯示英雄榜中的數(shù)據(jù)。 方法 1) MineGame( ) 是構造方法,負責完成窗口的初始化。 2) actionPerformed(ActionEvent)方 法 是

10、MineGame 類 實 現(xiàn) 的 ActionListener 接口中的方法,該方法負責執(zhí)行菜單發(fā)出的有關命令。用戶選 擇菜單中項可觸發(fā) ActionListener 事件,導致 actionPerformed(ActionEvent) 方法執(zhí)行相應的操作,例如將創(chuàng)建的雷區(qū)設置為初級、中級或高級等。 3) main(String ) 方法是程序運行的入口方法。 4.2 MineArea 類 MineArea 類 是 javax.swing 包 中 JPanel 容 器 的 子 類 , 實 現(xiàn) 了 ActionListener 和 MouseListener 接口,所創(chuàng)建的對象: mineAre

11、a 是 MineArea 類中最重要的成員之一,作為一個容器添加到窗口的中心。 MineArea 類的主要 成員變量、方法: 成員變量 1) block 是 Block 類型的數(shù)組,用來確定雷區(qū)有多少需進行掃雷的方塊。 2) blockView 是 BlockView 類型的數(shù)組,負責為 block 數(shù)組中的 Block 對 象提供視圖。 3) lay 是 LayMines 類型的對象,負責設置 block 數(shù)組中的哪些方塊是雷或 不是雷。 4) record 負責提供保存成績的界面,是一個對話框,默認不可見。用戶只 有掃雷成功后(用時最少者) ,才可以看見該對話框。 6) reStart 是

12、一個按鈕對象,用戶單擊它重新開始游戲。 7) time 是計時器對象,負責計算用戶的用時。 方法 1) initMineArea(int,int,int,int)方法可根據(jù)參數(shù)提供的數(shù)據(jù)設置雷區(qū)的 寬度、高度、雷的數(shù)量以及雷區(qū)的級別。 2) actionPerformed(ActionEvent)是 MineArea 類實現(xiàn)的 ActionListener 接 口 中 的 方 法 。 當 用 戶 單 擊 blockView 中 的 某 個 方 塊 時 , actionPerformed(ActionEvent) 方法負責執(zhí)行有關算法, 例如,當用鼠標左鍵單 擊方塊上的按鈕后, 若方塊下有雷,

13、actionPerformed(ActionEvent) 方法將使用 戶輸?shù)舯揪?,若該方塊下無雷, actionPerformed(ActionEvent) 方法將顯示 BlockView 對象中的標簽,該標簽上是一個數(shù)字,該數(shù)字代表當前方塊的周圍的 8 個方塊中共有多少顆雷。 3) Show( ) 方法是一個遞歸方法。 actionPerformed(ActionEvent)方法執(zhí)行 時將調用方法進行掃雷。 4) mousePressed(MouseEve nt)方法是 Min eArea 類實現(xiàn)的 MouseListe ner 接口中的方法, 當用戶按下鼠標右鍵時, actionPerfo

14、rmed(ActionEvent) 方法負 責讓方塊上線是一個探雷標記。 5) inquireWin( ) 方法用來判斷用戶是否掃雷成功,如果成功該方法負責讓 record 對話框可見。所謂掃雷成功是指不僅找到全部的雷而且用時最少。 4.3 Block 類 Block 類創(chuàng)建的對象是數(shù)組 block 的單元中的對象。 Block 型數(shù)組 block 是 MineArea 類的重要成員之一。 Block 類的主要成員變量和方法: 成員變量 1) name是方塊上的名字。 2) arou ndMi neNumber是方塊周圍雷的數(shù)目。 3) mineIcon 是方塊上雷的圖標。 4) isMine

15、 用來表示方塊是否是雷。 5) isMark 用來表示方塊是否被標記。 6) isOpen 用來表示方塊是否被挖開。 方法 1) setAroundMineNumber(int)方法用來設置 aroundMineNumber的值。 2) getAroundMineNumber()方法用來獲取 aroundMineNumber的值。 4.4 BlockView 類 BlockView 類是 javax.swing 包中 JPanel 類的子類,創(chuàng)建的對象是數(shù)組 blockView 的單元中的對象。 blockView 是 BlockView 類的最重要的成員之一。 BlockView 類的主要成

16、員變量和方法: 成員變量 1) blockNameOrIcon 用來顯示 Block 對象的 name、 number 和 mineIcon 屬 性。 2) blockCover 用來遮擋 card 卡片式布局。 方法 1)giveView(Block block)方法給參數(shù)指定的 Block 對象提供視圖,如果 Block 對象的 isMine 屬性為 true ,即方塊是雷,那么 blockNameOrIcon 標簽上 設置的文本就是Block對象的name屬性的值,同時blockNameOrlcon標簽上設 置的圖標就是 Block 對象的 mineIcon 制定的圖標。如果 Block

17、 對象的 isMine 屬 性 為 false , blockNameOrlcon 標 簽 上 設 置 的 文 本 是 Block 對 象 的 aroun dMi neNumber屬性的值,即周圍雷的數(shù)目。 2) seeBlockNameOrlcon( ) 方法讓用戶看見視圖中的標簽,無法看見按鈕。 3) seeBlockCover( ) 方法讓用戶看見視圖中的按鈕,無法看見標簽。 4.5 LayMines 類 LayMi nes類創(chuàng)建的對象lay是Min eArea中最重要的成員。該類的主要成員 變量和方法: 成員變量 minelcon 用來存放一個格式 gif 的圖像。 方法 layMin

18、esForBlock(Block,int) 方法對參數(shù)指定的 Block 數(shù)組進行設置, 其中 int 參數(shù)制定雷的數(shù)目。 當指定 Block 數(shù)組中某個單元中的方塊是雷時, 就 將該方塊上的圖標設置為 minelcon 。當指定 Block 數(shù)組中某個單元中的方塊不 是雷時,就將該方塊上的名字設置為周圍的雷的數(shù)目。 4.6 Record 類 Record 是 javax.swing 包 中 JDialog 對 話 框 的 子 類 , 并 實 現(xiàn) 了 Actio nListe ner 接口。Record 創(chuàng)建的對象:record 是 Min eArea 類的成員之一, 當用戶掃雷成功時,該對象

19、提供了保存成績到文件的界面。 Record 類的主要成 員變量、方法: 成員變量 1)textName提供用戶掃雷優(yōu)勝者輸出姓名。 2)用戶單擊“確定”按鈕,可以保存成績。 方法 1)actionPerformed(ActionEvent)方法是 Record 類實現(xiàn)的 ActionListener 接口中的方法,當用戶單擊“確定”按鈕后,該方法被執(zhí)行,所執(zhí)行的操作就是 獲取用戶輸入的名字和用時,然后調用 writeRecord(String,String) 方法將信 息寫入到“英雄榜”中。 2)writeRecord(String,String)負責將有關信息,例如掃雷的用時、掃雷 的級別以

20、及掃雷優(yōu)勝者的姓名等信息寫入到“英雄榜”文件。 4.7 ShowRecord 類 ShowRecord 是 javax.swing 包中 JDialog 對話框 的子類,并實現(xiàn)了 ActionListener 接口。ShowRecord創(chuàng)建的對象 showHeroRecord是 MineGame類 ( 主類)的成員之一,當用戶查看“英雄榜”菜單項時,該對畫框可見,提供了查 看掃雷的最好成績的界面。ShowRecord類的主要成員變量、方法: 成員變量 1) File 存放文件的引用。 2) 用戶單擊“顯示成績”按鈕,可以查看各個級別掃雷的最好成績。 3) 用戶單擊“重新記分”按鈕,可以將“英雄

21、榜”中的成績恢復為初始值。 方法 1 ) actionPerformed(ActionEvent) 方法是 ShowRecord 類 實現(xiàn)的 ActionListener 接口中的方法,當用戶單擊“顯示成績”按鈕后,該方法被執(zhí) 行,所執(zhí)行的操作就是調用 readAndShow( ) 方法。 2)readAndShow( ) 方法負責讀取存放在文件中的各個級別的掃雷最好成績 以及掃雷者姓名,并顯示這些先關信息。 5運行結果分析 掃雷游戲主界面的運行效果如圖 51所示: 圖5 1游戲主界面 通過Min eGame創(chuàng)建的窗口可以選擇游戲的級別,例如選擇初級,選擇后的 窗口界面如圖52所示: 圖52初

22、級游戲界 MineArea創(chuàng)建的掃雷區(qū)域效果如圖5 3和圖5 4所示。其中圖53為掃雷進 行中的效果,圖54為掃雷失敗效果: 圖53掃雷進行效果圖 圖54掃雷失敗效果圖 ShowRecorc創(chuàng)建的對象負責提供顯示成績的界面,效果如圖5 5所示: 圖55成績結果圖 6設計體會 通過這次的課程設計,我對Java這門語言有了更深刻的理解。其中包括類、 對象、接口、繼承、方法以及 Java語言中的常用包等的使用方法,特別是圖形 用戶界面里各種組件的創(chuàng)建,事件處理等相關知識。使我對Java語言是一種非 常難懂的語言的思想有了極大的改觀。 我認為Java語言是一門很基礎的語言,所有的計算機語言都是相通的,只 要一門學會了,其他語言就會很容易學會。我之前對c語言的基礎掌握的并不 是很好,所以導致我在學習JAVA的時候有些吃力,通過Java的學習也使我翻回 去重新學習和鞏固了 c語言的相關知識,使我的基礎更加的扎實。雖然學會了 Java語言的大部分基礎知識,但要掌握好 Java并不是一件簡單的事情。僅僅

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論