版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 掃雷游戲的設(shè)計與開發(fā)</p><p><b> 摘 要</b></p><p> 本論文研究的是以Java為開發(fā)環(huán)境,設(shè)計并開發(fā)一款掃雷游戲,其功能類似于Windows操作系統(tǒng)自帶的掃雷游戲。論文首先介紹了制作游戲的整體思路及整個游戲設(shè)計的流程規(guī)劃,然后介紹了雷區(qū)的布置及地雷隨機產(chǎn)生的實現(xiàn)方法;重點介紹了在游戲過程中各事件的處理,其中又以鼠標(biāo)
2、事件和清除未靠近地雷區(qū)方塊這兩方面最為最要,鼠標(biāo)事件是利用鼠標(biāo)所發(fā)出的信息了解使用者的意圖,進而做出相對應(yīng)的動作,而清除未靠近地雷區(qū)方塊由于引進了“遞歸”這個概念而使其簡單化。</p><p> 本次設(shè)計只是完成了掃雷游戲的基本功能,在細節(jié)方面仍有待以后完善。</p><p> 關(guān)鍵詞:掃雷;Visual Basic 6.0;事件;遞歸</p><p> Th
3、e Design and Development of Mine Game</p><p><b> Abstract</b></p><p> What my thesis research for is basic on the develop environment of Visual Basic 6.0 , design and develop a mi
4、ne game,its function is similar to the mine games of the Windows Operating System .The thesis has introduced the layout of mined areas and the method of how to create the mines at random. It use vairies of components in
5、Visual Basic 6.0 and the combination of some simple calculations; the thesis lays emphasis on introducing the processing of each event in the game. Among these events ,th</p><p> This design has been comple
6、ted the basic function of mine game. The details still need to be improved.</p><p> Key words: Mine game, Visual Basic 6.0, Affairs, Recursion</p><p><b> 目 錄</b></p><p&
7、gt;<b> 論文總頁數(shù):18頁</b></p><p><b> 1引言1</b></p><p> 1.1課題背景及意義1</p><p> 1.2開發(fā)工具的選用及介紹1</p><p> 2游戲的總體分析與設(shè)計3</p><p><b>
8、; 2.1設(shè)計構(gòu)想3</b></p><p><b> 2.2流程規(guī)劃4</b></p><p><b> 2.3畫面規(guī)劃5</b></p><p> 3游戲的詳細設(shè)計6</p><p> 3.1游戲初始化6</p><p> 3.2雷區(qū)的
9、布置9</p><p> 3.3游戲中主要模塊的介紹與使用10</p><p> 3.3.1鼠標(biāo)事件10</p><p> 3.3.2地雷及雷區(qū)表面探測情況12</p><p> 3.3.3清除未靠近地雷的方塊12</p><p> 3.3.4游戲難度的選擇14</p><p&
10、gt; 3.4游戲的判斷14</p><p> 3.4.1游戲成功完成14</p><p> 3.4.2游戲失敗14</p><p> 4游戲測試結(jié)果15</p><p><b> 結(jié) 論15</b></p><p><b> 參考文獻16</b&g
11、t;</p><p><b> 致 謝17</b></p><p><b> 聲 明18</b></p><p><b> 引言</b></p><p><b> 課題背景及意義</b></p><p>
12、隨著社會的不斷發(fā)展,人們的物質(zhì)生活要求越來越高,計算機已經(jīng)成為了人們生活中必不可少的一部分,人們利用計算機去學(xué)習(xí)、工作、娛樂。</p><p> 掃雷游戲是微軟操作系統(tǒng)自帶的一項小型娛樂游戲,在過去的一段時間里,微軟操作系統(tǒng)經(jīng)歷過無數(shù)次的更新?lián)Q代,很多原先有的內(nèi)容不斷被更替、變化,但是掃雷這款小游戲依然活躍在微軟操作系統(tǒng)中,可見這款游戲帶給人們的深遠影響,和人們對它的受歡迎程度。本次設(shè)計的課題我講利用JAVA最
13、為開發(fā)工作,對掃雷游戲的開發(fā)進行一個詳細的講解。</p><p> 通過對微軟操作系統(tǒng)自帶的掃雷游戲進行研究后,得出的結(jié)論是這個游戲中存在兩個比較關(guān)鍵的地方:</p><p> 第一:初始化。包括雷區(qū)的分布和每次游戲隨即產(chǎn)生的雷的總數(shù),以及劃分出的小區(qū)域中如何根據(jù)數(shù)字的提醒得知周圍雷區(qū)的分布等等。</p><p> 第二:鼠標(biāo)事件的處理。即是在游戲中用左鍵點擊
14、出現(xiàn)數(shù)字,數(shù)字的提醒表示雷的數(shù)量,用右鍵作出對雷的標(biāo)志。左右鍵可以對雷區(qū)作出試探。</p><p> 開發(fā)工具的選用及介紹</p><p> 本課題采用的開發(fā)工具是JAVA,它最初被名為Oak,是Sun Microsystem公司在1995年推出的JAVA程序設(shè)計語言和JAVA平臺的總稱。Oak最開始是一個小型的編程語言,目標(biāo)是針對家用電器等使用的,解決比如電話、鬧鐘、烤爐等電器的控制
15、和通訊等問題。但是這些智能化加點的市場需求沒有預(yù)期的高,所以沒有得到很好的發(fā)展。后來,隨著計算機網(wǎng)絡(luò)的不斷發(fā)展和壯大,Sun看到了Oak在計算機網(wǎng)絡(luò)上開闊的發(fā)展前景,于是對Oka加以改造,然后用“JAVA”正式命名并發(fā)布。</p><p> JAVA不同于一般的編譯語言,它首先是將源代碼編譯成二進制字節(jié)碼,然后根據(jù)不同平臺的虛擬機來翻譯解釋執(zhí)行字節(jié)碼。從而實現(xiàn)跨平臺的特性,起到“一次編譯、到處執(zhí)行”的目的。但是
16、JAVA 的運行效率也是因為每次執(zhí)行要消耗一定的時間而有所降低。</p><p> JAVA平臺由兩方面組成,它們分別是JAVA虛擬機和JAVA應(yīng)用編程接口。JAVA應(yīng)用編程接口為JAVA應(yīng)用提供的是一個可以獨立于操作系統(tǒng)的標(biāo)準(zhǔn)接口,而不需要依賴于操作系統(tǒng),可以分為基本和擴展部分。</p><p> JAVA編程語言是個簡單、面向?qū)ο蟆⒎植际?、解釋性、健壯、安全與系統(tǒng)無關(guān)、可移植性、高
17、性能、多線程和動態(tài)的語言。在系統(tǒng)安裝JAVA平臺之后,JAVA 便可以投入使用?,F(xiàn)在的JAVA編程語言已經(jīng)存在于幾乎所有的操作系統(tǒng)中,方便人們的使用。</p><p> 游戲的總體分析與設(shè)計</p><p><b> 設(shè)計構(gòu)想</b></p><p> 相信大部分使用微軟操作系統(tǒng)的用戶,對掃雷這款游戲都不會陌生,因為這是微軟操作系統(tǒng)中自帶
18、的一項游戲,而且這項游戲操作簡單,老少皆宜。整個游戲在數(shù)字的提醒下進行雷的抓獲,充滿了緊張但是快樂的氣氛。游戲可以給用戶帶來快樂,游戲的設(shè)計過程卻能不斷地訓(xùn)練使用者的邏輯思維,對于腦力要求越來越高的現(xiàn)代人來說,這樣一款游戲不僅可以在適當(dāng)?shù)臅r候讓我們得到放松和享受,更可以不時的檢驗一下自己,所以我們不難發(fā)現(xiàn)基于掃雷的一些升級游戲在市面上也越來越多了。</p><p> 現(xiàn)在就讓我們來深入地了解一下這款游戲的規(guī)則,
19、游戲的操作方面主要是以鼠標(biāo)為主。點擊一處地方,隨后會出現(xiàn)數(shù)字,這些數(shù)字代表的是它周圍八個格子里的雷的總數(shù),根據(jù)這些數(shù)字和格子的分布,對雷區(qū)的布置進行推論。如果你確定一個格子是雷,就點擊右鍵進行標(biāo)記,如若不是雷,就點擊左鍵排除。反復(fù)按下右鍵方塊則會以標(biāo)示—標(biāo)示—疑似三者關(guān)系不斷循環(huán)。所以如果不確定一處地方是否有雷,可以反復(fù)點擊右鍵,先做出疑似的判斷。如果用左鍵點擊不小心點擊到的是藏有雷的地方,則宣告游戲失敗,唯有將所有不含雷區(qū)的地方掀開,
20、而且準(zhǔn)確標(biāo)記出所有的雷,游戲才算成功。</p><p><b> 2.2 流程規(guī)劃</b></p><p> 我們大概將流程規(guī)劃分為三個部分:畫面初始、游戲者點擊左鍵按下第一個方塊、非地雷方塊的展開。</p><p> 游戲者可以根據(jù)自己的需要和能力設(shè)置雷區(qū)的大小,一般雷區(qū)分為小、中、大三種區(qū)域。畫面初始的時候,以游戲者上次設(shè)置的雷區(qū)大小
21、為準(zhǔn),但此時全部方塊都未掀開。當(dāng)游戲者點下第一個方塊時產(chǎn)生數(shù)字提示的同時,計時器開始啟動,為了避免讓游戲者在第一次按下方塊就踩到地雷,所以才需要在游戲者按下第一個數(shù)字時產(chǎn)生數(shù)字提示,這樣在某種程度上也提高了游戲的緊張氣氛。然后就是如何判斷按下的方塊是非地雷的處理,這也是整個游戲最為重要的部分,在這里使用遞歸的觀念來檢查方塊是否含有地雷和是否繼續(xù)向外翻以此對游戲者進行提示。</p><p> 流程規(guī)劃如圖1所示:
22、</p><p><b> 圖1整體流程規(guī)劃圖</b></p><p><b> 2.3畫面規(guī)劃</b></p><p> 畫面規(guī)劃如圖2所示:</p><p><b> 圖2</b></p><p><b> 游戲的詳細設(shè)計<
23、/b></p><p><b> 游戲初始化</b></p><p> 當(dāng)玩家開始游戲時,游戲畫面如圖3所示</p><p> 我們可以清楚的看到,游戲界面主要分為兩個主要部分:1. 計數(shù)及狀態(tài)區(qū);2.地雷區(qū)。</p><p><b> 3.2雷區(qū)的布置</b></p>
24、<p> 當(dāng)游戲界面初始化完成后,這時在地雷區(qū)中并未產(chǎn)生地雷,只有當(dāng)玩家在地雷區(qū)中第一次點下左鍵后,才會在地雷區(qū)中隨機的布置當(dāng)前游戲難度下應(yīng)該產(chǎn)生的地雷總數(shù),其主要用意在于不讓玩家第一次就踩到地雷,這樣在某種程度上可以提高玩家游戲的氣憤。具體實現(xiàn)如下所示:</p><p> private sub command1.click()</p><p> frmMain.mnuB
25、egin.checked=False</p><p> frmMain.mnuMiddle.checked=False </p><p> frmMain.mnuExpert.checked=False</p><p> frmMain.mnuCust.checked=True</p><p> iCols=txtCol.Text&l
26、t;/p><p> iRows=txtRow.Text</p><p> iBombs=txtNum.Text</p><p><b> iLevel=3</b></p><p><b> OnGameNew</b></p><p> frmMain.Form Prin
27、t</p><p><b> Unload Me</b></p><p><b> End Sub</b></p><p> Private Sub Command2 Click()</p><p><b> Unload Me</b></p><p
28、><b> End Sub</b></p><p> Private Sub Form Load()</p><p> txtRow.Text=20</p><p> txtCol.Text=20</p><p> txtNum.Text=20</p><p><b>
29、 End Sub</b></p><p> 3.3游戲中主要模塊的介紹與使用</p><p><b> 3.3.1鼠標(biāo)事件</b></p><p> MouseListener和MouseMotionListener是兩個接口,MouseEventDemo實現(xiàn)了這兩個接口,那么他必須實現(xiàn)這兩個接口中的所有方法。對于這個程序,可
30、能有些方法是用不到的,那么它只能留個空方法體表示“實現(xiàn)”了這個方法。但其實這是不好的代碼風(fēng)格和編程習(xí)慣,所以Java中對于接口方法很多的那些接口提供了適配器類,所謂的適配器類,就是一個實現(xiàn)某個接口的類,但所有方法實現(xiàn)都是空方法,這樣你可以繼承這個類,同時繼承了這些空實現(xiàn),這樣你只需要重寫需要用到的函數(shù)版本。</p><p> 而適配器通常使用匿名內(nèi)部類實現(xiàn)的。</p><p> thi
31、s.addMouseListener(new MouseAdapter(){</p><p> public void mousePressed(MouseEvent me){</p><p> txtStatus.setText("按下");</p><p><b> }</b></p><p&g
32、t; public void mouseReleased(MouseEvent me){</p><p> txtStatus.setText("釋放");</p><p><b> } </b></p><p><b> });</b></p><p> 在這個匿名類
33、中就不需要那些空方法了,當(dāng)然用這種方法,implements 后面的東西也可以不要了。至于main函數(shù)中的 MouseEventDemo med=new MouseEventDemo();new MouseEventDemo是聲明了一個新的對象,并把它賦給了med引用,這樣可以用這個引用調(diào)用這個類中的方法。例如這個類有繼承自JFrame的setTitle方法,可以med.setTitle("dfdfd");</
34、p><p> 光一個new MouseEventDemo則沒有被引用罷了,但本質(zhì)上他們都調(diào)用了這個類的構(gòu)造函數(shù)。</p><p> 3.3.2地雷及雷區(qū)表面探測情況</p><p> 在游戲設(shè)計上,我利用了兩個二維數(shù)組分別記錄地雷的分布情況及雷區(qū)表面探測情形。</p><p> 圖4標(biāo)示地雷分布情況</p><p>
35、; 因為兩個數(shù)組維數(shù)皆為2,所以我們通過雙循環(huán)做數(shù)據(jù)的對比工作。另外,當(dāng)游戲玩家按下非地雷的方塊時,程序必須自動將周邊非地雷的方塊翻開,這個動作我們也可以通過雙循環(huán)的方式檢查以按下的方塊為中心與周邊的8個方塊所形成的3*3的二維數(shù)組,鼠標(biāo)指針?biāo)讣词谴戆聪碌姆綁K,利用雙循環(huán)作數(shù)據(jù)的對比,不但速度快,而且在設(shè)計階段,程序的架構(gòu)也比較清楚。程序設(shè)計時雙循環(huán)常常搭配二維數(shù)組使用。</p><p> 3.3.3清除
36、未靠近地雷的方塊</p><p> 這里先引入一個“遞歸”的概念,“遞歸”(Recursion)簡單的說,就是一個程序能被自己所定義的語句調(diào)用。遞歸在程序設(shè)計上是一種重要的數(shù)據(jù)結(jié)構(gòu)形態(tài),通過遞歸程序的編寫,在程序代碼上會變得相當(dāng)簡潔,不過如果設(shè)計不當(dāng),會造成無窮循環(huán)或堆迭溢滿的情形,所以遞歸的程序中心必須含有if…then或Select Case等設(shè)計,以終止遞歸執(zhí)行。</p><p>
37、 在游戲過程中,當(dāng)游戲者按下非地雷方塊時,方塊會沿四周八個方向向外翻開非地雷的方塊。</p><p> 程序的執(zhí)行方面必須判斷:以按下方塊為中心,檢查周圍八個方塊是否為非地雷方塊,若其中有一個方塊是非地雷方塊時,則又以其為中心,向外檢查周圍八個方塊是否為非地雷方塊,如此反復(fù)的執(zhí)行即構(gòu)成遞歸的使用條件。</p><p> 前面已經(jīng)提到,遞歸必須設(shè)計終止的條件判斷,在本游戲的遞歸架構(gòu)中,
38、當(dāng)判斷方塊的內(nèi)容為數(shù)字時(即在非地雷方塊周圍),即立即停止遞歸程序。</p><p> 遞歸其實也不是萬能的,以本游戲做測試,當(dāng)?shù)乩讌^(qū)范圍越大,且地雷數(shù)目不多時(一翻開非地雷方塊,幾乎全部方塊都會翻開),執(zhí)行遞歸就會變的非常緩慢,甚至造成堆迭溢滿(不足)的情形,所以在游戲設(shè)計上必須考慮地雷區(qū)的大小,以免造成執(zhí)行時錯誤中斷的情況發(fā)生。</p><p> 3.3.4游戲難度的選擇</
39、p><p> 這里我設(shè)置了“初級”,“中級”,“高級”以及“自定義”四個不同的難度級別,“初級”,“中級”,“高級”中的雷區(qū)大小和地雷總數(shù)是已經(jīng)設(shè)計好了的,如果玩家想要自己設(shè)置這些參數(shù),可單擊“游戲”→“自定義”,然后在“設(shè)置”中輸入行數(shù),列數(shù)及地雷數(shù),在這里我對行數(shù)及列數(shù)做出了一個限定,及行數(shù)和列數(shù)的最大值分別為24和30,當(dāng)在設(shè)置地雷數(shù)的時候,如果地雷數(shù)大于或等于行數(shù)和列數(shù)的乘積,或者地雷數(shù)小于零,地雷數(shù)都將自
40、動的轉(zhuǎn)換為:地雷數(shù)=(行數(shù)-1)×(列數(shù)-1)。</p><p><b> 3.4游戲的判斷</b></p><p> 3.4.1游戲成功完成</p><p> 當(dāng)在規(guī)定的時間內(nèi)將所有的雷都正確的標(biāo)示出來,游戲就會有一個彈出框提示你在多長時間內(nèi)完成當(dāng)前難度下的游戲。</p><p> 還有一種情況便是當(dāng)
41、只剩下地雷未探測的時候,及雷區(qū)方塊總數(shù)-已清除的方塊數(shù)=地雷總數(shù)的話,游戲也將成功完成。</p><p><b> 3.4.2游戲失敗</b></p><p> 當(dāng)鼠標(biāo)左鍵按下的方塊為地雷方塊事,地雷將會被引爆,游戲立即結(jié)束。</p><p> 當(dāng)在設(shè)定時間內(nèi)未探測完所有的地雷,地雷也將會引爆,對于這第二種行為,我們可以通過Timer組件
42、來加以控制。利用Timer組件在固定時間即會觸發(fā)時間的特性,在事件觸發(fā)時便將計數(shù)值加一,直到判斷計數(shù)值超過限定值時,即地雷引爆。具體代碼如下所示:</p><p><b> 4游戲測試結(jié)果</b></p><p><b> 結(jié)論</b></p><p> 本論文在xxx老師的悉心指導(dǎo)和嚴(yán)格要求下業(yè)已完成,從課題選擇到
43、具體構(gòu)思和內(nèi)容,無不凝聚著老師的心血和汗水,在四年的本科學(xué)習(xí)和生活期間,也始終感受著導(dǎo)師的精心指導(dǎo)和無私的關(guān)懷,我受益匪淺。在此向各位老師表示深深的感謝和崇高的敬意。</p><p> 這次做論文的經(jīng)歷也會使我終身受益,我感受到做論文是要真真正正用心去做的一件事情,是真正的自己學(xué)習(xí)的過程和研究的過程,沒有學(xué)習(xí)就不可能有研究的能力,沒有自己的研究,就不會有所突破,那也就不叫論文了。希望這次的經(jīng)歷能讓我在以后學(xué)習(xí)中
44、激勵我繼續(xù)進步。不積跬步何以至千里,本設(shè)計能夠順利的完成,也歸功于各位任課老師的認真負責(zé),使我能夠很好的掌握和運用專業(yè)知識,并在設(shè)計中得以體現(xiàn)。正是有了他們的悉心幫助和支持,才使我的畢業(yè)論文工作順利完成,在此向XX大學(xué),金融系的全體老師表示由衷的謝意。感謝他們四年來的辛勤栽培。</p><p> 參考文獻1. 賀平 編著,《軟件測試技術(shù)》(65頁~102頁),機械工業(yè)出版社,2005年2.
45、0;胡林玲 主編,黃奇 副主編,《軟件工程與UML》(157頁~161頁、188頁~190頁),電子工業(yè)出版社,2006年3. 邵麗萍、邵光亞、張后揚 編著,《Java語言程序設(shè)計(第二版)》(40頁~43頁),清華大學(xué)出版社,2004年4. [美]Watts S.Humphery編著,《個體軟件過程》(113頁~128頁),人民郵電出版社,2004年5. [美]Richard RouseⅢ編著,《游
46、戲設(shè)計——原理與實踐》(245頁~264頁),電子工業(yè)出版社,2004年6. [美]Thomas Petchel編著,《JAVA2游戲編程》(44頁~62頁、67頁~88頁),清華大學(xué)出版社,2005年</p><p><b> 致謝</b></p><p> 在論文完成之際,我要特別感謝我的指導(dǎo)老師xx老師的熱情關(guān)懷和悉心指導(dǎo)。在我撰寫論文的過程中
47、,xx老師傾注了大量的心血和汗水,無論是在論文的選題、構(gòu)思和資料的收集方面,還是在論文的研究方法以及成文定稿方面,我都得到了xx老師悉心細致的教誨和無私的幫助,特別是他廣博的學(xué)識、深厚的學(xué)術(shù)素養(yǎng)、嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和一絲不茍的工作作風(fēng)使我終生受益,在此表示真誠地感謝和深深的謝意。在論文的寫作過程中,也得到了許多同學(xué)的寶貴建議,同時還到許多在工作過程中許多同事的支持和幫助,在此一并致以誠摯的謝意。</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 掃雷游戲畢業(yè)設(shè)計論文
- 網(wǎng)絡(luò)掃雷游戲畢業(yè)設(shè)計
- 掃雷游戲畢業(yè)設(shè)計 (2)
- 網(wǎng)絡(luò)掃雷游戲畢業(yè)設(shè)計
- 掃雷游戲畢業(yè)設(shè)計論文
- vb做掃雷游戲畢業(yè)設(shè)計
- 掃雷畢業(yè)設(shè)計---基于java掃雷游戲的設(shè)計與實現(xiàn)
- 掃雷游戲的設(shè)計與開發(fā)畢業(yè)設(shè)計
- java_掃雷游戲課程設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- 基于java的掃雷游戲的設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- vb掃雷游戲設(shè)計論文
- java+畢業(yè)設(shè)計+掃雷(程序)
- 掃雷游戲設(shè)計開題報告
- java課程設(shè)計-掃雷游戲
- 掃雷游戲課程設(shè)計報告
- 掃雷小游戲課程設(shè)計
- 畢業(yè)論文--掃雷游戲軟件設(shè)計與實現(xiàn)
- 掃雷游戲課程設(shè)計報告
- java掃雷游戲課程設(shè)計
- java版掃雷游戲設(shè)計與實現(xiàn)
評論
0/150
提交評論