掃雷畢業(yè)設(shè)計(jì)---基于java掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  基于Java掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn) </p><p>  院 系:計(jì)算機(jī)與電子系</p><p>  專(zhuān) 業(yè) 班:計(jì)算機(jī)應(yīng)用技術(shù)0902班</p><p><b>  姓 名: </b></p><p><b>  學(xué) 號(hào): </b></p>&l

2、t;p><b>  指導(dǎo)教師: </b></p><p>  2012 年 6月 </p><p>  基于Java掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  Design and Implementation of Java Minesweeper Game</p><p><b>  摘 要</b

3、></p><p>  Java是一種可以撰寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計(jì)語(yǔ)言和Java平臺(tái)的總稱(chēng)。在硬件或操作系統(tǒng)平臺(tái)上安裝一個(gè)Java平臺(tái)之后,Java應(yīng)用程序就可運(yùn)行。Java是一種簡(jiǎn)單的,面向?qū)ο蟮?,分布式的,解釋型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異、多線程的動(dòng)態(tài)語(yǔ)言。Java 技術(shù)具有卓越的通用性

4、、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于個(gè)人PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開(kāi)發(fā)者專(zhuān)業(yè)社群。在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢(shì)和廣闊前景。</p><p>  近年來(lái)Java作為一種新的語(yǔ)言,以其簡(jiǎn)單性,平臺(tái)無(wú)關(guān)性和可移植性等優(yōu)點(diǎn),得到了廣泛的應(yīng)用,特別是Java與萬(wàn)維網(wǎng)的完美結(jié)合,使其成為網(wǎng)絡(luò)編程和嵌入式編程領(lǐng)域的首選編程語(yǔ)言。JBui

5、lder是Bonrla公司用于快速開(kāi)發(fā)Java應(yīng)用的一款優(yōu)秀的集成開(kāi)發(fā)環(huán)境,它以其友好的的開(kāi)發(fā)界面,強(qiáng)大的組件支持等優(yōu)點(diǎn),得到了廣大程序員的接受與認(rèn)可。</p><p>  本論文研究的是以Eclipse為開(kāi)發(fā)環(huán)境,設(shè)計(jì)并開(kāi)發(fā)一款掃雷游戲,其功能類(lèi)似于Windows操作系統(tǒng)自帶的掃雷游戲。論文首先介紹了制作游戲的整體思路及整個(gè)游戲設(shè)計(jì)的流程規(guī)劃,然后介紹了雷區(qū)的布置及地雷隨機(jī)產(chǎn)生的實(shí)現(xiàn)方法;重點(diǎn)介紹了在游戲過(guò)程中

6、各事件的處理。</p><p>  關(guān)鍵詞:Java 掃雷 Eclipse </p><p><b>  Abstract</b></p><p>  Java is a cross-platform application software can write object-oriented programming language,

7、the general term of the Java programming language by Sun Microsystems, Inc. in May 1995 and the Java platform. Hardware or operating system platform to install a Java platform, Java applications can run. Java is a simple

8、, object-oriented, distributed, interpreted, robust security, the structure-neutral, portable, high-performance, multithreaded dynamic language. Has excellent versatility, efficiency, pl</p><p>  Java in rec

9、ent years as a new language, with its advantages of simplicity, platform independence and portability, get a wide range of applications, especially Java and the World Wide Web perfect binding, making it the network progr

10、amming and embedded programming the preferred programming language. JBuilder is an excellent integrated development environment Borlan company for rapid development of Java applications, and its friendly development inte

11、rface, powerful component supports, etc., has bee</p><p>  This thesis is based on the Eclipse development environment, design and develop a mine-sweeping game, its function is similar to minesweeper game th

12、at comes with Windows operating system. The paper first introduces the idea of making the game as a whole and the entire game design process planning, and randomly generated minefield layout and mine; focuses on the hand

13、ling of events in the course of the game.</p><p>  Key words: Java Minesweeping Eclipse</p><p><b>  目 錄</b></p><p><b>  摘要Ⅰ</b></p><p>  Abs

14、tractⅡ</p><p><b>  緒論1</b></p><p><b>  1 開(kāi)發(fā)環(huán)境2</b></p><p>  1.1 開(kāi)發(fā)工具2</p><p>  1.2 應(yīng)用環(huán)境2</p><p>  1.3 編寫(xiě)意義2</p>&l

15、t;p>  1.4 任務(wù)設(shè)計(jì)內(nèi)容3</p><p>  2 可行性分析和需求分析4</p><p>  2.1 可行性分析4</p><p>  2.2 需求分析5</p><p><b>  3 概要設(shè)計(jì)6</b></p><p><b>  4 詳細(xì)設(shè)計(jì)

16、8</b></p><p>  4.1 MineGame類(lèi)8</p><p>  4.2 MineArea類(lèi)9</p><p>  4.3 Block類(lèi)11</p><p>  4.4 BlockView類(lèi)12</p><p>  4.5 LayMines類(lèi)12</p>&

17、lt;p>  4.6 Record類(lèi)13</p><p>  4.7 showRecord類(lèi)14</p><p>  5 系統(tǒng)測(cè)試16</p><p><b>  結(jié)論20</b></p><p><b>  致謝21</b></p><p><b

18、>  參考文獻(xiàn)22</b></p><p><b>  緒 論</b></p><p>  掃雷一詞有多個(gè)意思。掃雷游戲是微軟于1992年附帶在其操作系統(tǒng)中的小游戲,它通過(guò)點(diǎn)擊格子并以出現(xiàn)的數(shù)字來(lái)判斷附近地雷的數(shù)量,將全部地雷做上標(biāo)記即可勝利;軍事上的掃雷(mine clearing)是指搜索和清除地雷、陸軍水雷及其他爆炸物的行動(dòng);掃雷又被引作網(wǎng)絡(luò)

19、用語(yǔ)。</p><p>  掃雷最原始的版本可以追溯到1973年一款名為“方塊”的游戲,不久之后,“方塊”被改寫(xiě)成了游戲“Rlogic”,在“Rlogic”里,玩家的任務(wù)是作為美國(guó)海軍陸戰(zhàn)隊(duì)隊(duì)員,為指揮中心探出一條沒(méi)有地雷的安全路線,如果路全被地雷堵死就算輸。兩年后,湯姆·安德森在“Rlogic”的基礎(chǔ)上又編寫(xiě)出了游戲“地雷”,由此奠定了現(xiàn)代掃雷游戲的雛形。 </p><p> 

20、 1981年,微軟公司的羅伯特·杜爾和卡特·約翰遜兩位工程師在Windows 3.1系統(tǒng)上加載了該游戲,掃雷游戲才正式在全世界推廣開(kāi)來(lái)。 這款游戲的玩法是在一個(gè)9*9(初級(jí)),16*16(中級(jí)),16*30(高級(jí)),或自定義大小的方塊矩陣中隨機(jī)布置一定量的地雷(初級(jí)為10個(gè),中級(jí)為40個(gè),高級(jí)為99個(gè))。由玩家逐個(gè)翻開(kāi)方塊,以找出所有地雷為最終游戲目標(biāo)。如果玩家翻開(kāi)的方塊有地雷,則游戲結(jié)束。 </p>

21、<p>  掃雷游戲的目標(biāo)是盡快找到雷區(qū)中的所有不是地雷的方塊,而不許踩到地雷。游戲區(qū)包括雷區(qū)、地雷計(jì)數(shù)器和計(jì)時(shí)器,在“游戲”菜單上,單擊“開(kāi)局”,計(jì)時(shí)器就會(huì)啟動(dòng),此時(shí)請(qǐng)單擊游戲區(qū)中的任何方塊,點(diǎn)開(kāi)的數(shù)字是幾,則說(shuō)明該數(shù)字旁邊的8個(gè)位置中有幾個(gè)雷,如果挖開(kāi)的是地雷,則會(huì)輸?shù)粲螒?,用右鍵標(biāo)記您認(rèn)為可能有地雷的方塊。</p><p><b>  1 開(kāi)發(fā)環(huán)境</b></p>

22、;<p><b>  1.1 開(kāi)發(fā)工具</b></p><p>  Sun Microsystems公司在推出Java語(yǔ)言的同時(shí),推出了一套開(kāi)發(fā)工具JDK。Sun提供的基于字符模式的Java開(kāi)發(fā)工具包JDK: Java開(kāi)發(fā)工具(JDK)是許多Java專(zhuān)家最初使用的開(kāi)發(fā)環(huán)境。Java是平臺(tái)無(wú)關(guān)的語(yǔ)言是指用Java寫(xiě)的應(yīng)用程序不用修改就可在不同的軟硬件平臺(tái)上運(yùn)行。   Java

23、源程序編寫(xiě)借助于記事本,Editpuls,UltraEdit等三方編輯工具編寫(xiě)。   所有的Java文件編輯、編譯、調(diào)試、解釋運(yùn)行都是通過(guò)使用字符命令來(lái)執(zhí)行操作。JDK由一個(gè)標(biāo)準(zhǔn)類(lèi)庫(kù)和一組建立,測(cè)試及建立文檔的Java實(shí)用程序組成。其核心JavaAPI是一些預(yù)定義的類(lèi)庫(kù),開(kāi)發(fā)人員需要用這些類(lèi)來(lái)訪問(wèn)Java語(yǔ)言的功能。JDK 是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境(Java RuntimeEnvirnment),一堆Java工具和

24、Java基礎(chǔ)的類(lèi)庫(kù)(rt.jar)。不論什么Java應(yīng)用服務(wù)器實(shí)質(zhì)都是內(nèi)置了某個(gè)版本的JDK。因此掌握J(rèn)DK是學(xué)好Java的第一步?! ?JDK里面是Java類(lèi)庫(kù)和Java的語(yǔ)言規(guī)范,它提供的是無(wú)論你用何種開(kāi)發(fā)軟件寫(xiě)Java程序都必須用到的類(lèi)庫(kù)和J</p><p><b>  1.2 應(yīng)用環(huán)境</b></p><p>  (1) 操作系統(tǒng):Windows XP及

25、以上版本</p><p>  (2) 應(yīng)用軟件:JDK2.0 Eclipse6.0</p><p><b>  1.3 編寫(xiě)意義</b></p><p>  隨著計(jì)算機(jī)得普及,人們?cè)絹?lái)越多得接觸到計(jì)算機(jī),人們得生活工作中無(wú)處不有計(jì)算機(jī)得身影,人們面對(duì)長(zhǎng)時(shí)間的難免會(huì)有倦怠的情緒,而人們大多得緩解情緒得網(wǎng)絡(luò)活動(dòng)其實(shí)并不能起到放松心情得作用,現(xiàn)

26、代人得生活節(jié)奏越來(lái)越快,有沒(méi)有一種快速緩解疲倦得游戲呢?我們提出設(shè)計(jì)一款益智得小游戲,這種游戲不會(huì)花太多時(shí)間,同時(shí)把玩家得思維帶動(dòng)起來(lái),達(dá)到一舉多得得效果。</p><p>  隨著現(xiàn)在生活節(jié)奏的加快,人們?cè)诠ぷ髦嘈枰粋€(gè)輕松娛樂(lè)的放松環(huán)境。因此我們小組編寫(xiě)此軟件的目的,一方面作為初學(xué)者來(lái)了解掃雷的開(kāi)發(fā),另一方面開(kāi)發(fā)此軟件使用戶(hù)能在娛樂(lè)休閑的同時(shí)拓展思維能力。同時(shí)進(jìn)一步拓展研究,做到將掃雷層次升級(jí),能夠在多人連

27、機(jī)的情況下,一起分工來(lái)進(jìn)行對(duì)戰(zhàn) 。如 一方放雷,另一方排雷。</p><p>  1.4 任務(wù)設(shè)計(jì)內(nèi)容</p><p>  本次設(shè)計(jì)只是完成了掃雷游戲的基本功能,在細(xì)節(jié)方面仍有待以后完善。</p><p>  Windows 2000/XP系統(tǒng)提供的掃雷游戲是一個(gè)很有趣的游戲。本章的課程設(shè)計(jì)使用Java語(yǔ)言編寫(xiě)一個(gè)與其類(lèi)似的掃雷游戲。具體要求如下:</p&g

28、t;<p>  (1) 掃雷游戲分為初級(jí)、中級(jí)和高級(jí)三個(gè)級(jí)別,掃雷英雄榜存儲(chǔ)每個(gè)級(jí)別的最好成績(jī),即挖出全部的地雷且用時(shí)最少者。單擊游戲菜單可以選擇“初級(jí)”、“中級(jí)”和“高級(jí)”或“查看英雄版”。</p><p>  (2) 選擇級(jí)別后將出現(xiàn)相應(yīng)級(jí)別的掃雷區(qū)域,這是用戶(hù)使用鼠標(biāo)左鍵單擊雷區(qū)中任何一個(gè)方塊便啟動(dòng)計(jì)時(shí)器。</p><p>  (3) 用戶(hù)要揭開(kāi)某個(gè)方塊,可單擊它

29、。若所揭方塊下有淚,用戶(hù)便輸了這一局,若所揭方塊下五雷,則顯示一個(gè)數(shù)字,該數(shù)字代表方塊的周?chē)?個(gè)方塊中共有多少顆雷。</p><p>  (4) 如果用戶(hù)認(rèn)為某個(gè)方塊下埋著雷,單擊右鍵可以在方塊上標(biāo)識(shí)一個(gè)用戶(hù)認(rèn)為是雷的圖標(biāo),即給出一個(gè)掃雷標(biāo)記。用戶(hù)每標(biāo)記出一個(gè)掃雷標(biāo)記(無(wú)論用戶(hù)的標(biāo)記是否正確),程序?qū)@示的剩余雷數(shù)減少一個(gè)。</p><p>  (5) 掃雷勝利后(用時(shí)最少者),程序

30、彈出保存成績(jī)的對(duì)話框。</p><p>  2 可行性分析和需求分析</p><p>  2.1 可行性分析</p><p>  適用于各種群體,學(xué)生、老師、白領(lǐng),簡(jiǎn)單卻有效地舒緩壓力,消磨閑暇時(shí)光,一局所需的時(shí)間很短,低級(jí)的只需十多秒,此軟件是以?shī)蕵?lè)為主的休閑游戲,開(kāi)發(fā)基于安卓手機(jī)操作系統(tǒng)。具有操作方便、便于保存等優(yōu)點(diǎn)</p><p>

31、  投資可行性:主要根據(jù)市場(chǎng)調(diào)查及預(yù)測(cè)的結(jié)果,以及有關(guān)的產(chǎn)業(yè)政策等因素,論證項(xiàng)目投資建設(shè)的必要性。</p><p>  (1) 財(cái)務(wù)可行性:主要從項(xiàng)目及投資者的角度,設(shè)計(jì)合理財(cái)務(wù)方案,從企業(yè)理財(cái)?shù)慕嵌冗M(jìn)行資本預(yù)算,評(píng)價(jià)項(xiàng)目的財(cái)務(wù)盈利能力,進(jìn)行投資決策。</p><p>  (2) 組織可行性:制定合理的項(xiàng)目實(shí)施進(jìn)度計(jì)劃、設(shè)計(jì)合理的組織機(jī)構(gòu)、選擇經(jīng)驗(yàn)豐富的管理人員、建立良好的協(xié)作關(guān)系、制

32、定合適的培訓(xùn)計(jì)劃等,保證項(xiàng)目順利執(zhí)行。</p><p>  (3) 經(jīng)濟(jì)可行性:主要從資源配置的角度衡量項(xiàng)目的價(jià)值,評(píng)價(jià)項(xiàng)目在實(shí)現(xiàn)區(qū)域經(jīng)濟(jì)發(fā)展目標(biāo)、有效配置經(jīng)濟(jì)資源、增加供應(yīng)、創(chuàng)造就業(yè)、改善環(huán)境、提高人民生活等方面的效益。</p><p>  (4) 法律可行性:在開(kāi)發(fā)一個(gè)軟件之前一定要確定它是否觸犯某項(xiàng)法律或與國(guó)家的相關(guān)規(guī)定是否抵觸。掃雷游戲系統(tǒng)并不與任何法律或國(guó)家相關(guān)規(guī)定相抵觸,所

33、以在法律可行性上是通過(guò)的,在進(jìn)行設(shè)計(jì)時(shí)沒(méi)有違法任何法律法規(guī),也不對(duì)任何企業(yè)的系統(tǒng)進(jìn)行侵權(quán)等。系統(tǒng)的研制和開(kāi)發(fā)都選用正版軟件,將不會(huì)侵犯他人、集體和國(guó)家的利益,不會(huì)違反相關(guān)的國(guó)家政策和法律。 </p><p>  (5) 技術(shù)可行性評(píng)價(jià):在限制條件下,功能目標(biāo)基本能夠?qū)崿F(xiàn)和達(dá)到,利用現(xiàn)有技術(shù),功能目標(biāo)基本能夠達(dá)到,開(kāi)發(fā)人員足夠 能夠滿(mǎn)足條件要求,在規(guī)定時(shí)間內(nèi)能夠完成該項(xiàng)目開(kāi)發(fā)。</p><p

34、><b>  2.2 需求分析</b></p><p>  隨著社會(huì)的不斷進(jìn)步,人們所承受的壓力不斷上升,在游戲?qū)映霾桓F的時(shí)刻,掃雷游戲仍受到不少人的青睞,其本身的性質(zhì),決定了人們對(duì)它的喜愛(ài)程度,不需要特殊的技巧,不需要不斷地升級(jí),不需要太多的時(shí)間進(jìn)行初步的熟悉,簡(jiǎn)簡(jiǎn)單單卻樂(lè)趣無(wú)窮。</p><p>  2.2.1 理解需求</p><p&g

35、t;  掃雷游戲系統(tǒng)的建立,需要進(jìn)行用戶(hù)需求調(diào)查與分析,以確定系統(tǒng)目標(biāo),提高解決問(wèn)題的詳細(xì)方案,這是系統(tǒng)建設(shè)的重要環(huán)節(jié)。</p><p>  (1) 系統(tǒng)可以根據(jù)需求來(lái)設(shè)計(jì)功能模塊,如“開(kāi)局”、“初級(jí)”、“中級(jí)”、“高級(jí)”“自定義”、“掃雷英雄榜”和“退出”等。</p><p>  (2) 系統(tǒng)運(yùn)行在Eclipse平臺(tái)下,系統(tǒng)應(yīng)該有一個(gè)較好的圖形用戶(hù)界面。</p><

36、;p>  2.2.2 功能需求</p><p>  需求分析的任務(wù)是通過(guò)詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象,充分了解原系統(tǒng)(手工系統(tǒng)或計(jì)算機(jī)系統(tǒng))工作概況,明確各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。</p><p>  根據(jù)用戶(hù)的需求,確定本圖書(shū)管理系統(tǒng)應(yīng)具有以下功能:</p><p>  (1) 用戶(hù)可以自定義級(jí)別并且可以任意輸入雷數(shù);</p>

37、<p>  (2) 具有計(jì)時(shí)功能,即顯示用戶(hù)完成移動(dòng)盤(pán)子所花費(fèi)的時(shí)間;</p><p>  (3) 自動(dòng)保存掃雷英雄榜;</p><p>  (4) 用戶(hù)可以設(shè)計(jì)“初級(jí)”、“中級(jí)”、“高級(jí)”三個(gè)級(jí)別。</p><p><b>  3 概要設(shè)計(jì)</b></p><p>  在設(shè)計(jì)掃雷游戲時(shí),需要編寫(xiě)7個(gè)

38、Java源程序:MineGame.java、MineArea.java、Block.java、BlockView.java、LayMines.java、Record.java和ShowRecord.java。</p><p>  掃雷游戲除了需要編寫(xiě)上述7個(gè)Java源文件所給出的類(lèi)外,還需要Java系統(tǒng)提供的一些重要的類(lèi),如File、JButton和JLabel等類(lèi)。掃雷游戲所用到的一些重要的類(lèi)以及之間的組合關(guān)系

39、如圖3-1所示。</p><p>  圖3-1 類(lèi)之間的組和關(guān)系</p><p>  (1) MineGame.java(主類(lèi))</p><p>  MineGame類(lèi)負(fù)責(zé)創(chuàng)建掃雷游戲機(jī)主窗口,該文件含有main方法,掃雷游戲從該類(lèi)開(kāi)始執(zhí)行。MineGame類(lèi)主要有三種類(lèi)型的成員:File、MineArea和ShowRecord對(duì)象。</p><

40、;p>  (2) MineArea.java</p><p>  MineArea類(lèi)創(chuàng)建的對(duì)象是MineArea類(lèi)最重要的成員之一,代表“掃雷區(qū)域”。該類(lèi)的成員變量中有5個(gè)重要類(lèi)型的對(duì)象:Block、BlockView、LayMines和Record。</p><p>  (3) Block.java</p><p>  Block類(lèi)是雷區(qū)中“方塊”的類(lèi)封

41、裝,含有關(guān)于“方塊”的屬性以及操作,即負(fù)責(zé)為雷區(qū)創(chuàng)建代表“方塊”的Block對(duì)象。</p><p>  (4) BlockView.java</p><p>  BlockView是JPanel容器的子類(lèi),BlockView創(chuàng)建的對(duì)象負(fù)責(zé)為Block對(duì)象提供視圖,以便用戶(hù)通過(guò)該視圖與Block對(duì)象交互。BlockView對(duì)象使用一個(gè)標(biāo)簽和按鈕為Block對(duì)象提供視圖,標(biāo)簽和按鈕按著卡片布

42、局(CardLayout)層疊在一起,默認(rèn)狀態(tài)下按鈕遮擋住標(biāo)簽。當(dāng)用戶(hù)單擊按鈕后,如果Block對(duì)象是雷,BlockView對(duì)象中的標(biāo)簽顯示的是雷的圖標(biāo);如果Block對(duì)象不是是雷,標(biāo)簽顯示的是當(dāng)前Block對(duì)象周?chē)椎目倲?shù)。</p><p>  (5) LayMines.java</p><p>  LayMines類(lèi)對(duì)象不需要視圖,在游戲中不需要看見(jiàn)該對(duì)象。LayMines對(duì)象使用隨

43、機(jī)算法指定MineArea對(duì)象中的哪些Block對(duì)象是雷,哪些Block對(duì)象不是雷。</p><p>  (6) Record.java</p><p>  Record類(lèi)是JDialog對(duì)話框的子類(lèi),當(dāng)用戶(hù)掃雷成功時(shí),Record對(duì)象負(fù)責(zé)保存用戶(hù)的成績(jī)到文件。</p><p>  (7) ShowRecord.java</p><p>

44、  ShowRecord類(lèi)是JDialog對(duì)話框的子類(lèi),當(dāng)用戶(hù)查看掃雷的最好成功時(shí),ShowRecord對(duì)象負(fù)責(zé)讀取文件數(shù)據(jù)的界面。</p><p><b>  4 詳細(xì)設(shè)計(jì)</b></p><p>  掃雷系統(tǒng)流程圖如圖4-1所示。</p><p><b>  圖4-1 流程圖</b></p><

45、p>  4.1 MineGame類(lèi)</p><p>  MineGame類(lèi)是javax.swing包中JFrame的一個(gè)子類(lèi),并實(shí)現(xiàn)了ActionListener接口,標(biāo)明該類(lèi)的主要成員變量和方法的UML圖如圖4-2所示。</p><p>  圖4-2 MineGame類(lèi)的UML圖</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說(shuō)明。</p

46、><p><b>  (1) 成員變量</b></p><p> ?、?bar 和fileMenu提供菜單操作,單擊游戲菜單中的選項(xiàng)為“初級(jí)”、“中級(jí)”和“高級(jí)”或“掃雷英雄榜”。</p><p> ?、趍ineArea是掃雷區(qū)域,提供有關(guān)掃雷的主要功能。</p><p> ?、邸坝⑿郯瘛必?fù)責(zé)存放三個(gè)級(jí)別的掃雷最好的成績(jī)。

47、</p><p> ?、躶howHeroRecord負(fù)責(zé)顯示英雄榜中的數(shù)據(jù)。</p><p><b>  (2) 方法</b></p><p> ?、費(fèi)ineGame( )是構(gòu)造方法,負(fù)責(zé)完成窗口的初始化。</p><p> ?、赼ctionPerformed(ActionEvent)方法是MineGame類(lèi)實(shí)現(xiàn)的Ac

48、tionListener接口中的方法,該方法負(fù)責(zé)執(zhí)行菜單發(fā)出的有關(guān)命令。用戶(hù)選擇菜單中項(xiàng)可觸發(fā)ActionListener事件,導(dǎo)致actionPerformed(ActionEvent)方法執(zhí)行相應(yīng)的操作,例如將創(chuàng)建的雷區(qū)設(shè)置為初級(jí)、中級(jí)或高級(jí)等。</p><p> ?、踡ain(String[])方法是程序運(yùn)行的入口方法。</p><p>  4.2 MineArea類(lèi)</p&

49、gt;<p>  MineArea類(lèi)是javax.swing包中JPanel容器的子類(lèi),實(shí)現(xiàn)了ActionListener和MouseListener接口,所創(chuàng)建的對(duì)象:mineArea是MineArea類(lèi)中最重要的成員之一,作為一個(gè)容器添加到窗口的中心。標(biāo)明MineArea類(lèi)的主要成員變量、方法以及和MineGame類(lèi)之間組合關(guān)系的UML圖如圖4-3所示。</p><p>  圖4-3 Mine

50、Area類(lèi)的UML圖</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說(shuō)明。</p><p><b>  (1) 成員變量</b></p><p> ?、賐lock是Block類(lèi)型的數(shù)組,用來(lái)確定雷區(qū)有多少需進(jìn)行掃雷的方塊。</p><p>  ②blockView是BlockView類(lèi)型的數(shù)組,負(fù)責(zé)為block

51、數(shù)組中的Block對(duì)象提供視圖。</p><p>  ③lay是LayMines類(lèi)型的對(duì)象,負(fù)責(zé)設(shè)置block數(shù)組中的哪些方塊是雷或不是雷。</p><p> ?、躵ecord負(fù)責(zé)提供保存成績(jī)的界面,是一個(gè)對(duì)話框,默認(rèn)不可見(jiàn)。用戶(hù)只有掃雷成功后(用時(shí)最少者),才可以看見(jiàn)該對(duì)話框。</p><p> ?、輗eStart是一個(gè)按鈕對(duì)象,用戶(hù)單擊它重新開(kāi)始游戲。</

52、p><p> ?、辴ime是計(jì)時(shí)器對(duì)象,負(fù)責(zé)計(jì)算用戶(hù)的用時(shí)。</p><p><b>  (2) 方法</b></p><p> ?、賗nitMineArea(int,int,int,int)方法可根據(jù)參數(shù)提供的數(shù)據(jù)設(shè)置雷區(qū)的寬度、高度、雷的數(shù)量以及雷區(qū)的級(jí)別。</p><p> ?、赼ctionPerformed(Acti

53、onEvent)是MineArea類(lèi)實(shí)現(xiàn)的ActionListener接口中的方法。當(dāng)用戶(hù)單擊blockView中的某個(gè)方塊時(shí),actionPerformed(ActionEvent)方法負(fù)責(zé)執(zhí)行有關(guān)算法,例如,當(dāng)用鼠標(biāo)左鍵單擊方塊上的按鈕后,若方塊下有雷,actionPerformed(ActionEvent)方法將使用戶(hù)輸?shù)舯揪郑粼摲綁K下無(wú)雷,actionPerformed(ActionEvent)方法將顯示BlockView對(duì)象

54、中的標(biāo)簽,該標(biāo)簽上是一個(gè)數(shù)字,該數(shù)字代表當(dāng)前方塊的周?chē)?個(gè)方塊中共有多少顆雷。</p><p> ?、跾how( )方法是一個(gè)遞歸方法。actionPerformed(ActionEvent)方法執(zhí)行時(shí)將調(diào)用方法進(jìn)行掃雷。</p><p> ?、躮ousePressed(MouseEvent)方法是MineArea類(lèi)實(shí)現(xiàn)的MouseListener接口中的方法,當(dāng)用戶(hù)按下鼠標(biāo)右鍵時(shí),ac

55、tionPerformed(ActionEvent)方法負(fù)責(zé)讓方塊上線是一個(gè)探雷標(biāo)記。</p><p> ?、輎nquireWin( )方法用來(lái)判斷用戶(hù)是否掃雷成功,如果成功該方法負(fù)責(zé)讓record對(duì)話框可見(jiàn)。所謂掃雷成功是指不僅找到全部的雷而且用時(shí)最少。</p><p>  4.3 Block類(lèi)</p><p>  Block類(lèi)創(chuàng)建的對(duì)象是數(shù)組block的單元中

56、的對(duì)象。Block型數(shù)組block是MineArea類(lèi)的重要成員之一。標(biāo)明Block類(lèi)的主要成員變量和方法以及和MineArea類(lèi)之間組合關(guān)系的UML圖如圖4-4所示。</p><p>  圖4-4 Block類(lèi)的UML圖</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說(shuō)明。</p><p><b>  (1) 成員變量</b>&

57、lt;/p><p> ?、賜ame是方塊上的名字。</p><p> ?、赼roundMineNumber是方塊周?chē)椎臄?shù)目。</p><p> ?、踡ineIcon是方塊上雷的圖標(biāo)。</p><p> ?、躨sMine用來(lái)表示方塊是否是雷。</p><p> ?、輎sMark用來(lái)表示方塊是否被標(biāo)記。</p>

58、<p> ?、辤sOpen用來(lái)表示方塊是否被挖開(kāi)。</p><p><b>  (2) 方法</b></p><p> ?、賡etAroundMineNumber(int)方法用來(lái)設(shè)置aroundMineNumber的值。</p><p>  ②getAroundMineNumber()方法用來(lái)獲取aroundMineNumber

59、的值。</p><p>  4.4 BlockView類(lèi)</p><p>  BlockView類(lèi)是javax.swing包中JPanel類(lèi)的子類(lèi),創(chuàng)建的對(duì)象是數(shù)組blockView的單元中的對(duì)象。blockView是BlockView類(lèi)的最重要的成員之一。標(biāo)明BlockView類(lèi)的主要成員變量和方法以及和MineArea類(lèi)之間組合關(guān)系的UML圖如圖4-5所示。</p>&

60、lt;p>  圖4-5 BlockView類(lèi)的UML圖</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說(shuō)明。</p><p><b>  (1) 成員變量</b></p><p>  ①blockNameOrIcon用來(lái)顯示Block對(duì)象的name、number和mineIcon屬性。</p><p>

61、; ?、赽lockCover用來(lái)遮擋card卡片式布局。</p><p><b>  (2) 方法</b></p><p> ?、賕iveView(Block block)方法給參數(shù)指定的Block對(duì)象提供視圖,如果Block對(duì)象的isMine屬性為true,即方塊是雷,那么blockNameOrIcon標(biāo)簽上設(shè)置的文本就是Block對(duì)象的name屬性的值,同時(shí)bl

62、ockNameOrIcon標(biāo)簽上設(shè)置的圖標(biāo)就是Block對(duì)象的mineIcon制定的圖標(biāo)。如果Block對(duì)象的isMine屬性為false,blockNameOrIcon標(biāo)簽上設(shè)置的文本是Block對(duì)象的aroundMineNumber屬性的值,即周?chē)椎臄?shù)目。</p><p> ?、趕eeBlockNameOrIcon( )方法讓用戶(hù)看見(jiàn)視圖中的標(biāo)簽,無(wú)法看見(jiàn)按鈕。</p><p>  

63、③seeBlockCover( )方法讓用戶(hù)看見(jiàn)視圖中的按鈕,無(wú)法看見(jiàn)標(biāo)簽。</p><p>  4.5 LayMines類(lèi)</p><p>  LayMines類(lèi)創(chuàng)建的對(duì)象lay是MineArea中最重要的成員。標(biāo)明該類(lèi)的主要成員變量和方法以及和MineArea類(lèi)之間組合關(guān)系的UML圖如圖4-6所示。</p><p>  圖4-6 LayMines類(lèi)的UML圖

64、</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說(shuō)明。</p><p><b>  (1) 成員變量</b></p><p>  mineIcon用來(lái)存放一個(gè)格式gif的圖像。</p><p><b>  (2) 方法</b></p><p>  layMine

65、sForBlock(Block[][],int)方法對(duì)參數(shù)指定的Block數(shù)組進(jìn)行設(shè)置,其中int參數(shù)制定雷的數(shù)目。當(dāng)指定Block數(shù)組中某個(gè)單元中的方塊是雷時(shí),就將該方塊上的圖標(biāo)設(shè)置為mineIcon。當(dāng)指定Block數(shù)組中某個(gè)單元中的方塊不是雷時(shí),就將該方塊上的名字設(shè)置為周?chē)睦椎臄?shù)目。</p><p>  4.6 Record類(lèi)</p><p>  Record是javax.swi

66、ng包中JDialog對(duì)話框的子類(lèi),并實(shí)現(xiàn)了ActionListener接口。Record創(chuàng)建的對(duì)象:record是MineArea類(lèi)的成員之一,當(dāng)用戶(hù)掃雷成功時(shí),該對(duì)象提供了保存成績(jī)到文件的界面。標(biāo)明Record類(lèi)的主要成員變量、方法以及和MineArea類(lèi)之間組合關(guān)系的UML圖如圖4-7所示。</p><p>  圖4-7 Record類(lèi)的UML圖</p><p>  以下是UML圖中

67、有關(guān)數(shù)據(jù)和方法的詳細(xì)說(shuō)明。</p><p><b>  (1) 成員變量</b></p><p> ?、賢extName提供用戶(hù)掃雷優(yōu)勝者輸出姓名。</p><p> ?、谟脩?hù)單擊“確定”按鈕,可以保存成績(jī)。</p><p><b>  (2) 方法</b></p><p&g

68、t; ?、賏ctionPerformed(ActionEvent)方法是Record類(lèi)實(shí)現(xiàn)的ActionListener接口中的方法,當(dāng)用戶(hù)單擊“確定”按鈕后,該方法被執(zhí)行,所執(zhí)行的操作就是獲取用戶(hù)輸入的名字和用時(shí),然后調(diào)用writeRecord(String,String)方法將信息寫(xiě)入到“英雄榜”中。</p><p> ?、趙riteRecord(String,String)負(fù)責(zé)將有關(guān)信息,例如掃雷的用時(shí)、掃

69、雷的級(jí)別以及掃雷優(yōu)勝者的姓名等信息寫(xiě)入到“英雄榜”文件。</p><p>  4.7 ShowRecord類(lèi)</p><p>  ShowRecord是javax.swing包中JDialog對(duì)話框的子類(lèi),并實(shí)現(xiàn)了ActionListener接口。ShowRecord創(chuàng)建的對(duì)象showHeroRecord是MineGame類(lèi)(主類(lèi))的成員之一,當(dāng)用戶(hù)查看“英雄榜”菜單項(xiàng)時(shí),該對(duì)畫(huà)框可見(jiàn),

70、提供了查看掃雷的最好成績(jī)的界面。標(biāo)明ShowRecord類(lèi)的主要成員變量、方法以及和MineGame類(lèi)之間組合關(guān)系的UML圖如圖4-8所示。</p><p>  圖4-8 ShowRecord類(lèi)的UML圖</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說(shuō)明。</p><p><b>  (1) 成員變量</b></p>

71、<p> ?、貴ile存放文件的引用。</p><p> ?、谟脩?hù)單擊“顯示成績(jī)”按鈕,可以查看各個(gè)級(jí)別掃雷的最好成績(jī)。</p><p> ?、塾脩?hù)單擊“重新記分”按鈕,可以將“英雄榜”中的成績(jī)恢復(fù)為初始值。</p><p><b>  (2) 方法</b></p><p> ?、賏ctionPerform

72、ed(ActionEvent)方法是ShowRecord類(lèi)實(shí)現(xiàn)的ActionListener接口中的方法,當(dāng)用戶(hù)單擊“顯示成績(jī)”按鈕后,該方法被執(zhí)行,所執(zhí)行的操作就是調(diào)用readAndShow( )方法。</p><p> ?、趓eadAndShow( )方法負(fù)責(zé)讀取存放在文件中的各個(gè)級(jí)別的掃雷最好成績(jī)以及掃雷者姓名,并顯示這些先關(guān)信息。</p><p><b>  5 系統(tǒng)測(cè)試

73、</b></p><p>  (1) 程序運(yùn)行后,界面上有一個(gè)菜單和一個(gè)按鈕,分別是“游戲”和“重新開(kāi)始”;當(dāng)玩家踩雷時(shí)候可以點(diǎn)擊“重新開(kāi)始”。如圖5-1所示</p><p><b>  圖5-1 主界面</b></p><p>  (2) 當(dāng)玩家點(diǎn)擊“游戲”菜單時(shí)會(huì)出現(xiàn)7個(gè)子菜單,分別是“開(kāi)局”、“初級(jí)”、“中級(jí)”、“高級(jí)”“

74、自定義”、“掃雷英雄榜”和“退出”。當(dāng)玩家開(kāi)始游戲時(shí)可以點(diǎn)擊“開(kāi)局”進(jìn)行游戲,玩家還可以通過(guò)選擇“初級(jí)”、“中級(jí)”和“高級(jí)”按鈕來(lái)選擇游戲級(jí)別;玩家還可以通過(guò)“自定義”來(lái)進(jìn)行設(shè)置“行數(shù)”、“列數(shù)”、“雷數(shù)”和“級(jí)別”;游戲結(jié)束后玩家還可以通過(guò)“掃雷英雄榜”查詢(xún)成績(jī);玩家可以通過(guò)“退出”退出游戲框。</p><p>  (3) 點(diǎn)擊“游戲”出現(xiàn)的界面如圖5-2所示。</p><p>  圖

75、5-2 游戲界面</p><p>  (4) 點(diǎn)擊“初級(jí)”選擇初級(jí)游戲時(shí)出現(xiàn)界面如圖5-3所示。</p><p>  圖5-3 初級(jí)窗口界面</p><p>  (5) 開(kāi)局后進(jìn)行游戲時(shí)出現(xiàn)界面如圖5-4所示。</p><p>  圖5-4 掃雷進(jìn)行中的效果</p><p>  (6) 踩雷時(shí)候游戲就結(jié)束了,踩雷

76、時(shí)出現(xiàn)界面如圖5-5所示。</p><p>  圖5-5 掃雷失敗效果</p><p>  (7) 游戲結(jié)束后點(diǎn)擊“掃雷英雄榜”顯示成績(jī)的界面,效果如圖5-6所示。</p><p>  圖5-6 成績(jī)界面</p><p><b>  結(jié) 論</b></p><p>  Java是一個(gè)完全面向?qū)?/p>

77、象的語(yǔ)言,Java的命名規(guī)則是很容易讓人接受的。而且容易被編程人員記住。經(jīng)過(guò)實(shí)踐訓(xùn)練,對(duì)Java的綜合應(yīng)用能力有了較大的提高,另外對(duì)Java的特點(diǎn)有了更深層次的認(rèn)識(shí)。</p><p>  通過(guò)這次的畢業(yè)論文,我對(duì)Java這門(mén)語(yǔ)言有了更深刻的理解。其中包括類(lèi)、對(duì)象、接口、繼承、方法以及Java語(yǔ)言中的常用包等的使用方法,特別是圖形用戶(hù)界面里各種組件的創(chuàng)建,事件處理等相關(guān)知識(shí)。還學(xué)會(huì)了很多在這個(gè)學(xué)期《Java課程設(shè)計(jì)

78、基礎(chǔ)》課上沒(méi)有學(xué)會(huì)和沒(méi)有學(xué)懂的東西,使我對(duì)Java語(yǔ)言是一種非常難懂的語(yǔ)言的思想有了極大的改觀。</p><p>  這次的畢業(yè)論文是用Java語(yǔ)言及相關(guān)知識(shí)設(shè)計(jì)一個(gè)掃雷游戲系統(tǒng),能實(shí)現(xiàn)選擇游戲級(jí)別,記錄游戲時(shí)間和保存游戲成績(jī)等功能。雖然整個(gè)設(shè)計(jì)的時(shí)間才短短兩個(gè)月,我還是對(duì)JDK等Java語(yǔ)言開(kāi)發(fā)工具有了深層次的認(rèn)知,并熟練掌握了它們的使用方法。而且這次的畢業(yè)設(shè)計(jì),也使我的編程能力有了明顯的提高。</p&g

79、t;<p>  通過(guò)這次畢業(yè)設(shè)計(jì),我才明白學(xué)習(xí)是一個(gè)長(zhǎng)期積累的過(guò)程,在以后的工作、生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己知識(shí)和綜合素質(zhì)。此外,我認(rèn)為這次畢業(yè)設(shè)計(jì)最大的收獲就是:知識(shí)必須通過(guò)應(yīng)用才能實(shí)現(xiàn)其價(jià)值!有些東西以為學(xué)會(huì)了,但真正到用的時(shí)候才發(fā)現(xiàn)是兩回事,所以我認(rèn)為只有到真正會(huì)用的時(shí)候才是真的學(xué)會(huì)了。</p><p>  這次畢業(yè)設(shè)計(jì)還讓我懂得了寫(xiě)程序不能閉門(mén)造車(chē),要努力拓寬知識(shí)面,開(kāi)闊視野,拓展

80、思維。它還讓我學(xué)會(huì)了在網(wǎng)上查閱那些無(wú)限的資料。通過(guò)對(duì)此課題的開(kāi)發(fā),使我對(duì)用Eclipse開(kāi)發(fā)平臺(tái)有了一個(gè)比較清楚的認(rèn)識(shí),體會(huì)到理論和實(shí)踐的重要性。由于自己的分析設(shè)計(jì)和程序經(jīng)驗(yàn)不足,該系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中,還有許多沒(méi)有完善的地方,還請(qǐng)老師見(jiàn)諒。</p><p><b>  致 謝</b></p><p>  通過(guò)這兩個(gè)月來(lái)的忙碌和學(xué)習(xí),本次畢業(yè)論文設(shè)計(jì)已接近尾聲,作為一

81、個(gè)大專(zhuān)生的畢業(yè)設(shè)計(jì),由于經(jīng)驗(yàn)的匱乏,難免有許多考慮不周全的地方,在這里衷心感謝指導(dǎo)老師的督促指導(dǎo),以及一起學(xué)習(xí)的同學(xué)們的支持,讓我按時(shí)完成了這次畢業(yè)設(shè)計(jì)。</p><p>  在本次畢業(yè)掃雷游戲設(shè)計(jì)過(guò)程中,首先得感謝的是指導(dǎo)老師xx老師,他給予了我悉心指導(dǎo)和大力支持,對(duì)于我順利完成這次畢業(yè)設(shè)計(jì)起到了關(guān)鍵性的作用。同時(shí)感謝我院、系領(lǐng)導(dǎo)對(duì)我們的教導(dǎo)和關(guān)注;感謝大學(xué)三年傳授我們專(zhuān)業(yè)知識(shí)的所有老師,謝謝你們嘔心瀝血的教導(dǎo)

82、。還有謝謝我周?chē)耐芭笥眩绻麤](méi)有他們的幫助,此次畢業(yè)論文的完成將變得困難。最后,感謝生我養(yǎng)我的父母。謝謝他們給了我無(wú)私的愛(ài),為我求學(xué)所付出的巨大犧牲和努力。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 朱福喜,尹為民,余振坤.Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì).武漢:武漢大學(xué)出版社,2008.</p><p> 

83、 [2] 陳國(guó)君,陳磊.Java 2從入門(mén)到精通.北京:清華大學(xué)出版社,2008.</p><p>  [3] 王梅,Java并發(fā)編程—設(shè)計(jì)原則與模式.北京:中國(guó)電力出版社,2009.</p><p>  [4] 尹偉民,Java程序設(shè)計(jì)之網(wǎng)絡(luò)編程.北京:清華大學(xué)出版社,2008.</p><p>  [5] 印昊.Java與面向?qū)ο蟪绦蛟O(shè)計(jì).北京:高等教育

84、出版社,2008.</p><p>  [6] 耿祥義.Java課程設(shè)計(jì).北京:清華大學(xué)出版社,2009.</p><p>  [7] 趙生慧.Java面向?qū)ο蟪绦蛟O(shè)計(jì).北京:高等教育出版社,2009.</p><p>  [8] 甘仞初.信息系統(tǒng)開(kāi)發(fā).北京:北京經(jīng)濟(jì)科學(xué)出版社,2008.</p><p>  [9] 李宣東,李存珠.

溫馨提示

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

評(píng)論

0/150

提交評(píng)論