掃雷游戲畢業(yè)設計_第1頁
已閱讀1頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  掃雷游戲的設計與開發(fā)</p><p><b>  摘 要</b></p><p>  本論文研究的是以Java為開發(fā)環(huán)境,設計并開發(fā)一款掃雷游戲,其功能類似于Windows操作系統自帶的掃雷游戲。論文首先介紹了制作游戲的整體思路及整個游戲設計的流程規(guī)劃,然后介紹了雷區(qū)的布置及地雷隨機產生的實現方法;重點介紹了在游戲過程中各事件的處理,其中又以鼠標

2、事件和清除未靠近地雷區(qū)方塊這兩方面最為最要,鼠標事件是利用鼠標所發(fā)出的信息了解使用者的意圖,進而做出相對應的動作,而清除未靠近地雷區(qū)方塊由于引進了“遞歸”這個概念而使其簡單化。</p><p>  本次設計只是完成了掃雷游戲的基本功能,在細節(jié)方面仍有待以后完善。</p><p>  關鍵詞:掃雷;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>  論文總頁數:18頁</b></p><p><b>  1引言1</b></p><p>  1.1課題背景及意義1</p><p>  1.2開發(fā)工具的選用及介紹1</p><p>  2游戲的總體分析與設計3</p><p><b>

8、;  2.1設計構想3</b></p><p><b>  2.2流程規(guī)劃4</b></p><p><b>  2.3畫面規(guī)劃5</b></p><p>  3游戲的詳細設計6</p><p>  3.1游戲初始化6</p><p>  3.2雷區(qū)的

9、布置9</p><p>  3.3游戲中主要模塊的介紹與使用10</p><p>  3.3.1鼠標事件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游戲測試結果15</p><p><b>  結 論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ā)展,人們的物質生活要求越來越高,計算機已經成為了人們生活中必不可少的一部分,人們利用計算機去學習、工作、娛樂。</p><p>  掃雷游戲是微軟操作系統自帶的一項小型娛樂游戲,在過去的一段時間里,微軟操作系統經歷過無數次的更新換代,很多原先有的內容不斷被更替、變化,但是掃雷這款小游戲依然活躍在微軟操作系統中,可見這款游戲帶給人們的深遠影響,和人們對它的受歡迎程度。本次設計的課題我講利用JAVA最

13、為開發(fā)工作,對掃雷游戲的開發(fā)進行一個詳細的講解。</p><p>  通過對微軟操作系統自帶的掃雷游戲進行研究后,得出的結論是這個游戲中存在兩個比較關鍵的地方:</p><p>  第一:初始化。包括雷區(qū)的分布和每次游戲隨即產生的雷的總數,以及劃分出的小區(qū)域中如何根據數字的提醒得知周圍雷區(qū)的分布等等。</p><p>  第二:鼠標事件的處理。即是在游戲中用左鍵點擊

14、出現數字,數字的提醒表示雷的數量,用右鍵作出對雷的標志。左右鍵可以對雷區(qū)作出試探。</p><p>  開發(fā)工具的選用及介紹</p><p>  本課題采用的開發(fā)工具是JAVA,它最初被名為Oak,是Sun Microsystem公司在1995年推出的JAVA程序設計語言和JAVA平臺的總稱。Oak最開始是一個小型的編程語言,目標是針對家用電器等使用的,解決比如電話、鬧鐘、烤爐等電器的控制

15、和通訊等問題。但是這些智能化加點的市場需求沒有預期的高,所以沒有得到很好的發(fā)展。后來,隨著計算機網絡的不斷發(fā)展和壯大,Sun看到了Oak在計算機網絡上開闊的發(fā)展前景,于是對Oka加以改造,然后用“JAVA”正式命名并發(fā)布。</p><p>  JAVA不同于一般的編譯語言,它首先是將源代碼編譯成二進制字節(jié)碼,然后根據不同平臺的虛擬機來翻譯解釋執(zhí)行字節(jié)碼。從而實現跨平臺的特性,起到“一次編譯、到處執(zhí)行”的目的。但是

16、JAVA 的運行效率也是因為每次執(zhí)行要消耗一定的時間而有所降低。</p><p>  JAVA平臺由兩方面組成,它們分別是JAVA虛擬機和JAVA應用編程接口。JAVA應用編程接口為JAVA應用提供的是一個可以獨立于操作系統的標準接口,而不需要依賴于操作系統,可以分為基本和擴展部分。</p><p>  JAVA編程語言是個簡單、面向對象、分布式、解釋性、健壯、安全與系統無關、可移植性、高

17、性能、多線程和動態(tài)的語言。在系統安裝JAVA平臺之后,JAVA 便可以投入使用?,F在的JAVA編程語言已經存在于幾乎所有的操作系統中,方便人們的使用。</p><p>  游戲的總體分析與設計</p><p><b>  設計構想</b></p><p>  相信大部分使用微軟操作系統的用戶,對掃雷這款游戲都不會陌生,因為這是微軟操作系統中自帶

18、的一項游戲,而且這項游戲操作簡單,老少皆宜。整個游戲在數字的提醒下進行雷的抓獲,充滿了緊張但是快樂的氣氛。游戲可以給用戶帶來快樂,游戲的設計過程卻能不斷地訓練使用者的邏輯思維,對于腦力要求越來越高的現代人來說,這樣一款游戲不僅可以在適當的時候讓我們得到放松和享受,更可以不時的檢驗一下自己,所以我們不難發(fā)現基于掃雷的一些升級游戲在市面上也越來越多了。</p><p>  現在就讓我們來深入地了解一下這款游戲的規(guī)則,

19、游戲的操作方面主要是以鼠標為主。點擊一處地方,隨后會出現數字,這些數字代表的是它周圍八個格子里的雷的總數,根據這些數字和格子的分布,對雷區(qū)的布置進行推論。如果你確定一個格子是雷,就點擊右鍵進行標記,如若不是雷,就點擊左鍵排除。反復按下右鍵方塊則會以標示—標示—疑似三者關系不斷循環(huán)。所以如果不確定一處地方是否有雷,可以反復點擊右鍵,先做出疑似的判斷。如果用左鍵點擊不小心點擊到的是藏有雷的地方,則宣告游戲失敗,唯有將所有不含雷區(qū)的地方掀開,

20、而且準確標記出所有的雷,游戲才算成功。</p><p><b>  2.2 流程規(guī)劃</b></p><p>  我們大概將流程規(guī)劃分為三個部分:畫面初始、游戲者點擊左鍵按下第一個方塊、非地雷方塊的展開。</p><p>  游戲者可以根據自己的需要和能力設置雷區(qū)的大小,一般雷區(qū)分為小、中、大三種區(qū)域。畫面初始的時候,以游戲者上次設置的雷區(qū)大小

21、為準,但此時全部方塊都未掀開。當游戲者點下第一個方塊時產生數字提示的同時,計時器開始啟動,為了避免讓游戲者在第一次按下方塊就踩到地雷,所以才需要在游戲者按下第一個數字時產生數字提示,這樣在某種程度上也提高了游戲的緊張氣氛。然后就是如何判斷按下的方塊是非地雷的處理,這也是整個游戲最為重要的部分,在這里使用遞歸的觀念來檢查方塊是否含有地雷和是否繼續(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>  游戲的詳細設計<

23、/b></p><p><b>  游戲初始化</b></p><p>  當玩家開始游戲時,游戲畫面如圖3所示</p><p>  我們可以清楚的看到,游戲界面主要分為兩個主要部分:1. 計數及狀態(tài)區(qū);2.地雷區(qū)。</p><p><b>  3.2雷區(qū)的布置</b></p>

24、<p>  當游戲界面初始化完成后,這時在地雷區(qū)中并未產生地雷,只有當玩家在地雷區(qū)中第一次點下左鍵后,才會在地雷區(qū)中隨機的布置當前游戲難度下應該產生的地雷總數,其主要用意在于不讓玩家第一次就踩到地雷,這樣在某種程度上可以提高玩家游戲的氣憤。具體實現如下所示:</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鼠標事件</b></p><p>  MouseListener和MouseMotionListener是兩個接口,MouseEventDemo實現了這兩個接口,那么他必須實現這兩個接口中的所有方法。對于這個程序,可

30、能有些方法是用不到的,那么它只能留個空方法體表示“實現”了這個方法。但其實這是不好的代碼風格和編程習慣,所以Java中對于接口方法很多的那些接口提供了適配器類,所謂的適配器類,就是一個實現某個接口的類,但所有方法實現都是空方法,這樣你可以繼承這個類,同時繼承了這些空實現,這樣你只需要重寫需要用到的函數版本。</p><p>  而適配器通常使用匿名內部類實現的。</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、中就不需要那些空方法了,當然用這種方法,implements 后面的東西也可以不要了。至于main函數中的 MouseEventDemo med=new MouseEventDemo();new MouseEventDemo是聲明了一個新的對象,并把它賦給了med引用,這樣可以用這個引用調用這個類中的方法。例如這個類有繼承自JFrame的setTitle方法,可以med.setTitle("dfdfd");</

34、p><p>  光一個new MouseEventDemo則沒有被引用罷了,但本質上他們都調用了這個類的構造函數。</p><p>  3.3.2地雷及雷區(qū)表面探測情況</p><p>  在游戲設計上,我利用了兩個二維數組分別記錄地雷的分布情況及雷區(qū)表面探測情形。</p><p>  圖4標示地雷分布情況</p><p>

35、;  因為兩個數組維數皆為2,所以我們通過雙循環(huán)做數據的對比工作。另外,當游戲玩家按下非地雷的方塊時,程序必須自動將周邊非地雷的方塊翻開,這個動作我們也可以通過雙循環(huán)的方式檢查以按下的方塊為中心與周邊的8個方塊所形成的3*3的二維數組,鼠標指針所指即是代表按下的方塊,利用雙循環(huán)作數據的對比,不但速度快,而且在設計階段,程序的架構也比較清楚。程序設計時雙循環(huán)常常搭配二維數組使用。</p><p>  3.3.3清除

36、未靠近地雷的方塊</p><p>  這里先引入一個“遞歸”的概念,“遞歸”(Recursion)簡單的說,就是一個程序能被自己所定義的語句調用。遞歸在程序設計上是一種重要的數據結構形態(tài),通過遞歸程序的編寫,在程序代碼上會變得相當簡潔,不過如果設計不當,會造成無窮循環(huán)或堆迭溢滿的情形,所以遞歸的程序中心必須含有if…then或Select Case等設計,以終止遞歸執(zhí)行。</p><p>

37、  在游戲過程中,當游戲者按下非地雷方塊時,方塊會沿四周八個方向向外翻開非地雷的方塊。</p><p>  程序的執(zhí)行方面必須判斷:以按下方塊為中心,檢查周圍八個方塊是否為非地雷方塊,若其中有一個方塊是非地雷方塊時,則又以其為中心,向外檢查周圍八個方塊是否為非地雷方塊,如此反復的執(zhí)行即構成遞歸的使用條件。</p><p>  前面已經提到,遞歸必須設計終止的條件判斷,在本游戲的遞歸架構中,

38、當判斷方塊的內容為數字時(即在非地雷方塊周圍),即立即停止遞歸程序。</p><p>  遞歸其實也不是萬能的,以本游戲做測試,當地雷區(qū)范圍越大,且地雷數目不多時(一翻開非地雷方塊,幾乎全部方塊都會翻開),執(zhí)行遞歸就會變的非常緩慢,甚至造成堆迭溢滿(不足)的情形,所以在游戲設計上必須考慮地雷區(qū)的大小,以免造成執(zhí)行時錯誤中斷的情況發(fā)生。</p><p>  3.3.4游戲難度的選擇</

39、p><p>  這里我設置了“初級”,“中級”,“高級”以及“自定義”四個不同的難度級別,“初級”,“中級”,“高級”中的雷區(qū)大小和地雷總數是已經設計好了的,如果玩家想要自己設置這些參數,可單擊“游戲”→“自定義”,然后在“設置”中輸入行數,列數及地雷數,在這里我對行數及列數做出了一個限定,及行數和列數的最大值分別為24和30,當在設置地雷數的時候,如果地雷數大于或等于行數和列數的乘積,或者地雷數小于零,地雷數都將自

40、動的轉換為:地雷數=(行數-1)×(列數-1)。</p><p><b>  3.4游戲的判斷</b></p><p>  3.4.1游戲成功完成</p><p>  當在規(guī)定的時間內將所有的雷都正確的標示出來,游戲就會有一個彈出框提示你在多長時間內完成當前難度下的游戲。</p><p>  還有一種情況便是當

41、只剩下地雷未探測的時候,及雷區(qū)方塊總數-已清除的方塊數=地雷總數的話,游戲也將成功完成。</p><p><b>  3.4.2游戲失敗</b></p><p>  當鼠標左鍵按下的方塊為地雷方塊事,地雷將會被引爆,游戲立即結束。</p><p>  當在設定時間內未探測完所有的地雷,地雷也將會引爆,對于這第二種行為,我們可以通過Timer組件

42、來加以控制。利用Timer組件在固定時間即會觸發(fā)時間的特性,在事件觸發(fā)時便將計數值加一,直到判斷計數值超過限定值時,即地雷引爆。具體代碼如下所示:</p><p><b>  4游戲測試結果</b></p><p><b>  結論</b></p><p>  本論文在xxx老師的悉心指導和嚴格要求下業(yè)已完成,從課題選擇到

43、具體構思和內容,無不凝聚著老師的心血和汗水,在四年的本科學習和生活期間,也始終感受著導師的精心指導和無私的關懷,我受益匪淺。在此向各位老師表示深深的感謝和崇高的敬意。</p><p>  這次做論文的經歷也會使我終身受益,我感受到做論文是要真真正正用心去做的一件事情,是真正的自己學習的過程和研究的過程,沒有學習就不可能有研究的能力,沒有自己的研究,就不會有所突破,那也就不叫論文了。希望這次的經歷能讓我在以后學習中

44、激勵我繼續(xù)進步。不積跬步何以至千里,本設計能夠順利的完成,也歸功于各位任課老師的認真負責,使我能夠很好的掌握和運用專業(yè)知識,并在設計中得以體現。正是有了他們的悉心幫助和支持,才使我的畢業(yè)論文工作順利完成,在此向XX大學,金融系的全體老師表示由衷的謝意。感謝他們四年來的辛勤栽培。</p><p>  參考文獻1. 賀平 編著,《軟件測試技術》(65頁~102頁),機械工業(yè)出版社,2005年2.

45、0;胡林玲 主編,黃奇 副主編,《軟件工程與UML》(157頁~161頁、188頁~190頁),電子工業(yè)出版社,2006年3. 邵麗萍、邵光亞、張后揚 編著,《Java語言程序設計(第二版)》(40頁~43頁),清華大學出版社,2004年4. [美]Watts S.Humphery編著,《個體軟件過程》(113頁~128頁),人民郵電出版社,2004年5. [美]Richard RouseⅢ編著,《游

46、戲設計——原理與實踐》(245頁~264頁),電子工業(yè)出版社,2004年6. [美]Thomas Petchel編著,《JAVA2游戲編程》(44頁~62頁、67頁~88頁),清華大學出版社,2005年</p><p><b>  致謝</b></p><p>  在論文完成之際,我要特別感謝我的指導老師xx老師的熱情關懷和悉心指導。在我撰寫論文的過程中

47、,xx老師傾注了大量的心血和汗水,無論是在論文的選題、構思和資料的收集方面,還是在論文的研究方法以及成文定稿方面,我都得到了xx老師悉心細致的教誨和無私的幫助,特別是他廣博的學識、深厚的學術素養(yǎng)、嚴謹的治學精神和一絲不茍的工作作風使我終生受益,在此表示真誠地感謝和深深的謝意。在論文的寫作過程中,也得到了許多同學的寶貴建議,同時還到許多在工作過程中許多同事的支持和幫助,在此一并致以誠摯的謝意。</p><p>  

溫馨提示

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

評論

0/150

提交評論