2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科生畢業(yè)論文</b></p><p>  題 目: 掃雷游戲軟件設計與實現(xiàn) </p><p><b>  年 級: </b></p><p>  專 業(yè):計算機科學與技術</p><p><b>  學

2、 號: </b></p><p><b>  姓 名: </b></p><p><b>  指導教師: </b></p><p>  年 月 日</p><p><b>  目 錄</b></p><p>  1引言

3、…………………………………………………………………… </p><p>  1.1 課題背景及意義……………………………………………………</p><p>  1.2開發(fā)工具的選用及介紹……………………………………………</p><p>  2游戲軟件的總體分析與設計…………………………………………</p><p>  2.1軟件功能需求分析

4、…………………………………………………</p><p>  2.2 軟件界面設計………………………………………………………</p><p>  2.3算法流程設計………………………………………………………</p><p>  3游戲軟件的詳細設計…………………………………………………</p><p>  3.1游戲初始化……………………………

5、……………………………</p><p>  3.2雷區(qū)的布置…………………………………………………………</p><p>  3.3游戲中主要功能模塊實現(xiàn)…………………………………………</p><p>  3.3.1底層邏輯模塊……………………………………………………</p><p>  3.3.1.1 游戲邏輯模塊……………………………

6、…………………</p><p>  3.3.1.2 通信模塊……………………………………………………</p><p>  3.3.2程序設計的界面實現(xiàn)功能模塊…………………………………</p><p>  4游戲軟件測試…………………………………………………………</p><p><b>  結 論</b><

7、;/p><p><b>  參考文獻</b></p><p><b>  1引言</b></p><p>  1.1 課題背景及意義</p><p>  隨著不斷發(fā)展的社會,科學也一步步的提升,而計算機也成為了當今社會不可或缺的一部分,今天,人們用計算機工作、通訊、聊天、視頻、游戲、娛樂。我們每天都在使

8、用著計算機。在如此快速的社會里,每一個人都有著重大的壓力。而此刻游戲也就成了我們沒一個人用于釋放壓力的首選。 </p><p>  近年來,隨著網(wǎng)絡的發(fā)展,游戲便成為了許多人關注的焦點。與傳統(tǒng)的影音產(chǎn)業(yè)一樣,游戲產(chǎn)業(yè)也是娛樂行業(yè)的一個重要組成部分,基于數(shù)字化的網(wǎng)絡游戲更讓人們找到了前所未有的感受,并已經(jīng)成為全球互聯(lián)產(chǎn)業(yè)的熱點。</p><p>  就在我們所熟悉的windows7系統(tǒng)中就攜

9、帶了不少這樣的游戲。掃雷游戲就是Windows操作系統(tǒng)自帶的一款小游戲,在過去的幾年里,Windows操作系統(tǒng)歷經(jīng)數(shù)次換代更新,變得越來越龐大、復雜,功能也越來越強大,但是這款小游戲依然保持原來的容貌,可見這款小游戲受到越來越多人的喜愛。不過還是有很多人對這款游戲不太了解。</p><p>  本次的畢業(yè)設計我將利用eclipse 3.4.2作為開發(fā)工具,開發(fā)一款類似的“掃雷游戲”。從而對這款游戲能夠有進一步的了

10、解,熟悉此游戲的后臺運行情況。并且此次畢業(yè)設計能將書本上所學的理論知識與實際相結合,同時也是對所學知識的一種檢查,希望通過本次的畢業(yè)設計能使自己在程序的開發(fā)和設計上有新的認識和提高。本次畢業(yè)設計既鍛煉了我們的實際動手能力,又在老師的指導下進行了一次模擬實際產(chǎn)品的開發(fā),對于我們以后工作能力的培養(yǎng)具有重要意義。</p><p>  通過研究Windows操作系統(tǒng)自帶的掃雷游戲,我們可以發(fā)現(xiàn)在這個游戲中主要有以下幾個關

11、鍵的地方:</p><p>  1.初始化問題,關于產(chǎn)生雷數(shù)的問題,即隨機產(chǎn)生本局游戲中雷的總數(shù),游戲的每一個級別產(chǎn)生的雷數(shù)不同,如何做到在不同的級別中產(chǎn)生不同的雷數(shù)。關于類的分布問題,在游戲中雷的分布對于每一個小區(qū)域是不同的,如何獲取周圍地區(qū)分布的雷數(shù),在雷隨機分布之后,如何獲取每個區(qū)域周圍累的個數(shù)。</p><p>  2.對鼠標事件的處理問題,既在游戲過程中對鼠標事件應如何做出反應。

12、當單擊鼠標左鍵時,軟件對該事件的處理,是雷的處理和不是雷的處理。當單擊鼠標右鍵時,系統(tǒng)做出的處理。</p><p>  3.游戲中的另一個難點是,在游戲過程中,左右鍵同時點擊數(shù)字,會有一個提示,這里的做法是如果是數(shù)字的格子,監(jiān)聽到左右鍵同時點擊數(shù)字事件,查找這個格子周圍的8個格子的紅旗數(shù),如果周圍的紅旗數(shù)正好是格子上的數(shù)字,那么就將除紅旗之外的所有內(nèi)容都顯示出來。</p><p>  4.

13、游戲規(guī)則、勝負判斷方法,關于時間的計算。</p><p>  經(jīng)過四年的大學學習,我對程序開發(fā)和設計、JAVA語言等幾種語言及eclipse等多個開發(fā)平臺已經(jīng)有了一定的了解與認知,本次的畢業(yè)設計便是將書本上所學的理論知識與實際相結合,同時也是對所學知識的一種檢查,希望通過本次的畢業(yè)設計使自己在程序的開發(fā)和設計上有新的認識并能有所提高。</p><p>  1.2開發(fā)工具的選用及介紹<

14、/p><p>  通過在大學的學習,對多種語言及多個程序開發(fā)平臺、軟件有了初步的了解,例如:C語言、C++、VB、JAVA、HTML等。VC++、Visual Basic 、Microsoft.NET、Eclipse SDK等軟件。</p><p>  而eclipse 是一個被人們熟知的優(yōu)秀Java集成開發(fā)環(huán)境(IDE),eclipse是眾多Java程序員的首選。和NetBeans一樣,ec

15、lipse也是一個完全免費的軟件,而且還是開源的。同時,eclipse不需要安裝,解壓出來即可使用,相當方便。故此選擇Eclipse作為此次畢設所用的開發(fā)工具。</p><p>  但Eclipse是使用Java語言編寫的。所以要運行eclipse必須在機器中安裝JDK,遺憾的是,eclipse官方?jīng)]有提供簡體中文版的下載,只有英文版的,不過,經(jīng)常使用eclipse習慣了之后就不會過于依賴于軟件界面的語言了。Ec

16、lipse不僅能開發(fā)Java程序,還能開發(fā)JSP,C++等程序。Eclipse官方將軟件分成了普通Java版,JEE版,C++版。每個版本都針對相應的語言各司其職,其中JEE版包括Java的全部功能。</p><p>  Java Development Kit (JDK) 是Sun公司針對Java開發(fā)員的軟件開發(fā)工具包。自從Java推出以來,JDK已經(jīng)成為使用最廣泛的Java SDK(Software deve

17、lopment kit)。</p><p>  Eclipse 是一個開放源代碼的、基于 Java 的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境。幸運的是,Eclipse 附帶了一個標準的插件集,包括 Java 開發(fā)工具(Java Development Tools,JDT)。 Eclipse最初是由IBM公司開發(fā)的替代商業(yè)軟件Visual Age for Java的下一

18、代IDE開發(fā)環(huán)境,2001年11月貢獻給開源社區(qū),現(xiàn)在它由非營利軟件供應商聯(lián)盟Eclipse基金會(Eclipse Foundation)管理。 2003年,Eclipse 3.0選擇OSGi服務平臺規(guī)范為運行時架構。 2007年6月,穩(wěn)定版3.3發(fā)布。2008年6月發(fā)布代號為Ganymede的3.4版。2009年7月發(fā)布代號為GALILEO的3.5版。Eclipse是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE)。最初主要用來Java語言開

19、發(fā),但是目前亦有人通過插件使其作為其他計算機語言比如C++和Python的開發(fā)工具。Eclipse的本身只是一個框架平臺,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很</p><p>  基于 Eclipse 的應用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它構成了 IBM Java 開發(fā)工具系列的基礎。例如,WebSphere Studio A

20、pplication Developer 添加了對 JSP、servlet、EJB、XML、Web 服務和數(shù)據(jù)庫訪問的支持。 Eclipse的主要組成Eclipse是一個開放源代碼的軟件開發(fā)項目,專注于為高度集成的工具開發(fā)提供一個全功能的、具有商業(yè)品質(zhì)的工業(yè)平臺。它主要由Eclipse項目、Eclipse工具項目和Eclipse技術項目三個項目組成,具體包括四個部分組成——Eclipse Platform、JDT、CDT和PDE.JDT

21、支持Java開發(fā)、CDT支持C開發(fā)、PDE用來支持插件開發(fā),Eclipse Platform則是一個開放的可擴展IDE,提供了一個通用的開發(fā)平臺。它提供建造塊和構造并運行集成軟件開發(fā)工具的基礎。Eclipse Platform允許工具建造者獨立開發(fā)與他人工具無縫集成的工具從而無須分辨一個工具功能在哪里結束,而另一個工具功能在哪里開始。Eclipse SDK</p><p>  2.游戲軟件的總體分析與設計<

22、/p><p>  相信大多數(shù)使用Windows操作系統(tǒng)的使用者,對這款游戲都不陌生。這款游戲不止操作簡單,規(guī)則也不難,再加上游戲速度的控制機制得宜,讓整個游戲在操作過程中充滿了快樂與緊張的氣氛。除了游戲當中能帶給使用者快樂之外,游戲的設計內(nèi)容無形中也不斷訓練使用者的邏輯思考能力,對于依靠高度腦力工作的現(xiàn)代人,都可以通過這個游戲,不時的檢驗一下自己,所以我們不難發(fā)現(xiàn),在各種可攜帶的電子產(chǎn)品上都有這款游戲的蹤影。<

23、/p><p>  2.1軟件功能需求分析</p><p>  單機游戲的開發(fā)有很大的發(fā)展前途,而掃雷游戲則是建立在此基礎上的。在設計之前,我們先來了解這款游戲的規(guī)則。</p><p>  掃雷就是要把所有非地雷的格子揭開即勝利;踩到地雷格子就算失敗。</p><p>  游戲主區(qū)域由很多個方格組成。使用鼠標左鍵隨機點擊一個方格,方格即被打開并顯示

24、出方格中的數(shù)字;方格中數(shù)字則表示其周圍的8個方格隱藏了幾顆雷;如果點開的格子為空白格,即其周圍有0顆雷,則其周圍格子自動打開;如果其周圍還有空白格,則會引發(fā)連鎖反應;在你認為有雷的格子上,點擊右鍵即可標記雷;如果一個已打開格子周圍所有的雷已經(jīng)正確標出,則可以在此格上同時點擊鼠標左右鍵以打開其周圍剩余的無雷格。 </p><p>  1代表1的上下左右及斜角合計有一顆雷,依次輪推,2則有2顆,3則有3顆..<

25、/p><p>  在確實是炸彈的方格上點了標記,就安全了,不是炸彈的被點了標記,后面會被炸死的。問號就先不確定這里有沒有炸彈,不會存在點錯了被炸死的狀況。有個小竅門,在數(shù)字旁同時點左鍵和右鍵可以排雷。左鍵點開,右鍵標記雷,同時左右鍵點數(shù)字可以判斷周圍的雷是否已經(jīng)全部標出。</p><p>  通過單擊即可挖開方塊。如果挖開的是地雷,則您輸?shù)粲螒?,如果方塊上出現(xiàn)數(shù)字,則表示在其周圍的八個方塊中共

26、有多少顆地雷。要標記您認為可能有地雷的方塊,請右鍵單擊它。 </p><p>  游戲區(qū)包括雷區(qū)、地雷計數(shù)器和計時器。數(shù)字就是這個方塊周圍的8個方塊里有的雷的數(shù)量,問號是自己弄上去的,可以的地方可以弄個問號,標記就是確定那里有雷了。</p><p>  在不掀開任何藏有地雷的方塊情況下,以最快的速度找出所有的地雷。如果在掀開方塊的過程中,不小心翻開(踩到)藏有地雷的方塊,則宣告失?。ㄓ螒蚪Y

27、束),惟有將所有不含地雷的方塊掀開,游戲才算成功。</p><p>  游戲的操作方法主要以鼠標為主,當鼠標指針對準未翻開的方塊按下左鍵時即表示翻開方塊,當鼠標指針對準未翻開的方塊按下右鍵時即表示標示或疑示地雷,反復按下右鍵則方塊會以未標示→疑似→取消疑似三者關系不斷循環(huán)。游戲者可以通過地雷區(qū)內(nèi)的數(shù)字提示了解以數(shù)字為中心的其周邊八個方格內(nèi)所含的地雷數(shù),假若翻開的方塊顯示數(shù)字“3”,則表示以其為中心的周邊方塊內(nèi)藏有

28、3個地雷。</p><p>  當按下的方塊不是地雷,且周邊八個方塊也都沒有地雷時,方塊會以被翻開方塊的八個方向?qū)⒖瞻追綁K翻開。</p><p>  2.2 軟件界面設計</p><p>  本次設計我將主要運用java語言來完成。Java語言是一種跨平臺,適合于分布式計算環(huán)境的面向?qū)ο缶幊陶Z言,用Java寫的應用程序不用修改就可在不同的軟硬件平臺上運行。</

29、p><p><b>  JAVA的圖形界面</b></p><p>  圖形界面簡稱GUI,是用圖形的方式,借助菜單、按紐等標準界面元素和鼠標操作,幫助用戶方便地想計算機系統(tǒng)發(fā)出指令、啟動操作,并將系統(tǒng)的運行結果同樣以圖形方式顯示給用戶的技術。JAVA的圖形界面技術既為使用java.awt包來創(chuàng)建圖形界面的方法,包括AWT組件、窗口和菜單設計、布局管理器以及繪圖操作等。&

30、lt;/p><p>  public void initGUI(){</p><p>  p3=new JPanel();</p><p><b>  b=bon;</b></p><p>  JMenuBar menuBar=new JMenuBar();</p><p>  JMenu menu1

31、=new JMenu("游戲");</p><p>  JMenu menu2=new JMenu("幫助");</p><p>  JMenuItem mi1=new JMenuItem("初級");</p><p>  JMenuItem mi2 = new JMenuItem("中級&quo

32、t;);</p><p>  JMenuItem mi3 =new JMenuItem("高級");</p><p>  mi1.addActionListener(this);</p><p>  menu1.add(mi1);</p><p>  mi2.addActionListener(this);</p&g

33、t;<p>  menu1.add(mi2);</p><p>  mi3.addActionListener(this);</p><p>  menu1.add(mi3);</p><p>  menuBar.add(menu1);</p><p>  menuBar.add(menu2);</p><p

34、>  p3.add(menuBar);</p><p>  b1=new JLabel(bon+"");</p><p>  a1=new int[bon];</p><p>  btn =new JButton("開始");</p><p>  btn.addActionListener(thi

35、s);</p><p>  b2=new JLabel("0");</p><p>  b3=new JLabel("");</p><p>  btns=new JButton[row*col];</p><p>  p=new JPanel();</p><p>  p.se

36、tLayout(new BorderLayout());</p><p>  contentPane.add(p);</p><p>  p.add(p3,BorderLayout.NORTH);</p><p>  //combo=new JComboBox(new Object[]{"初級","中級","高級&q

37、uot;} );</p><p><b>  //加監(jiān)聽</b></p><p>  /*combo.addItemListener(new ItemListener(){</p><p><b>  }});*/</b></p><p>  p1=new JPanel();</p&g

38、t;<p><b>  //在那個位置</b></p><p>  //(( FlowLayout)p1.getLayout()).setAlignment( FlowLayout.RIGHT);</p><p>  p1.add(b1);</p><p>  p1.add(btn);</p><p>  

39、p1.add(b2);</p><p>  p1.add(b3);</p><p>  p.add(p3,BorderLayout.NORTH);</p><p>  p.add(p1,BorderLayout.CENTER);</p><p>  p2=new JPanel();</p><p>  p2.setLa

40、yout(new GridLayout(row,col,0,0));</p><p>  for(int i=0;i<row*col;i++){</p><p>  btns[i]=new JButton("");</p><p>  btns[i].setMargin(new Insets(0,0,0,0));</p>&l

41、t;p>  btns[i].setFont(new Font(null,Font.BOLD,25));</p><p>  btns[i].addActionListener(this);</p><p>  btns[i].addMouseListener(new NormoreMouseEvent());</p><p>  p2.add(btns[i])

42、;</p><p><b>  }</b></p><p>  contentPane.add(p,BorderLayout.NORTH);</p><p>  contentPane.add(p2,BorderLayout.CENTER);</p><p><b>  }</b></p&

43、gt;<p><b>  AWT概述</b></p><p>  AWT既抽象窗口工具集,用于圖形用戶界面的開發(fā)。AWT的功能包括以下方面:</p><p> ?。?)豐富的圖形界面組件。</p><p> ?。?)強大的事件處理模型圖形和圖形工具,包括形狀、顏色和字體。</p><p> ?。?)布局管理

44、器,可以進行靈活的的窗口布局,設計特定窗口的尺寸和和屏幕分辨率。</p><p> ?。?)無關數(shù)據(jù)傳送類,可以通過本地平臺的剪貼板來進行剪切和粘貼操作。</p><p> ?。?)打印和無鼠標操作。</p><p>  Java.awt是java基本包中最大的一個,其中定義了所有的GUI組件類,以及其他用于構造圖形界面的類。</p><p>

45、;<b>  AWT基本組件</b></p><p>  (1)標簽組件(Label)</p><p>  標簽組件顯示的是靜態(tài)文本,在通常情況下是不能編輯的,能起到提示的作用</p><p>  Label組件有三種構造函數(shù):</p><p>  Label(): 創(chuàng)建空的標簽</p><p>

46、  Label(String):創(chuàng)建一個帶初始字符串的標簽。</p><p>  Label(String,int):創(chuàng)建一個帶初始字符串及指定對齊方式的標簽。</p><p><b> ?。?)文本域</b></p><p>  文本域一般用來讓用戶輸入姓名、信用卡號等這樣的信息,它是一個能夠接收用戶的鍵盤輸入的小塊區(qū)域。TextField(

47、):創(chuàng)建空的文本域</p><p> ?。?)按鈕(Button)</p><p>  幾乎所有的交互式程序中都會有按紐,它是一種交互能力強且交互方便的控件,這個控件提供了“按下并動作”的基本用戶界面。</p><p><b>  按紐的構造方法有:</b></p><p>  Button():建立一個沒有標示字符串的

48、新按紐類對象。</p><p>  Button(String Label):建立一個標示字符串為Label的新按紐類的對象</p><p> ?。?)畫板組件(Panel)</p><p>  我們在界面上安排各種組件時,有時會需要將組件成組放置,這時就可以使用面板組件。Panel是最簡單的容器組件,本身是一個矩形區(qū)域,可以在其中放入各種組件。但它僅僅是安排各種

49、組件的一種結構,需要最后加入到別的容器中才能實現(xiàn)GUI的功能。</p><p><b>  面板組件的創(chuàng)建</b></p><p>  Panel():用默認的布局管理器創(chuàng)建面板組件。</p><p>  Panel(LayoutManager layout):用指定的布局管理器創(chuàng)建面板組件。</p><p>  (5)

50、框架窗口組件(Frame)</p><p>  Frame是獨立于瀏覽器的可獨立運行的主窗口,通常用于進行開發(fā)桌面應用程序。Frame擁有邊界和標題欄設置,其大小可以進行設置調(diào)整。Frame里面需要加入組件,也可以加入菜單,或在上面繪圖。</p><p><b>  Frame的創(chuàng)建</b></p><p>  Frame():創(chuàng)建一個沒有窗口

51、標題的窗口框架。</p><p>  Frame(String):創(chuàng)建一個指定窗口標題的窗口框架。</p><p><b> ?。?)布局管理器</b></p><p>  FlowLayout布局管理器</p><p>  FlowLayout布局管理是一種最簡單的布局管理方法,是Panel的默認布局。它以流式的方式,

52、自左向右,自上而下地放置容器中的組件,即組件按每行先后自左向后放置,一行放不下再換行。</p><p>  FlowLayout布局管理器的創(chuàng)建</p><p>  FlowLayout():創(chuàng)建默認的FlowLayout布局管理器</p><p>  FlowLayout(int):以指定的對齊方式創(chuàng)建FlowLayout布局管理器。其中的參數(shù)有FlowLayou

53、t.LEFT、FlowLayout.RIGHT、FlowLayout.CENTER</p><p>  FlowLayout(int,int,int):以指定的對齊方式及間距創(chuàng)建FlowLayout布局管理器。其中第一個參數(shù)為對齊方式,第二個參數(shù)為組件間間距,第三個參數(shù)為列間距。</p><p><b> ?。?)事件處理</b></p><p&g

54、t;  事件處理是一個接受事件、解釋事件并處理用戶交互的方法。</p><p>  事件處理有三個要素:</p><p>  ①事件源 事件源是一個時間的產(chǎn)生者,如按牛、窗口及文本域等。</p><p>  ②事件類型 JAVA中所有的事件都封裝成一個類,這些事件類被集中在java.awt.exent包和java.swing.event包中,所有的事件類均繼承了AW

55、TEvent類和一個方法getSouce()方法,該方法返回發(fā)生事件的對象。</p><p> ?、凼录O(jiān)聽器 不同的類型事件發(fā)生后,由事件監(jiān)聽器接受事件并調(diào)用響應的事件處理方法,所有的事件監(jiān)聽器實際上都是一個java.awt.exent包中的借口,繼承了java.util.EventListener接口。不同的事件有不同的處理方法,</p><p><b> ?。?)鍵盤事件處

56、理</b></p><p>  該程序使用的是鍵盤監(jiān)聽事件,鍵盤事件對應的事件類是KeyEvent類,使用的該類的方法是getKeyCode()獲得按下或釋放的鍵代碼getKeyText()獲得按下或釋放的鍵的字符串。</p><p>  鍵盤事件對應的事件監(jiān)聽器為:KeyListener或KeyAdapter</p><p>  實現(xiàn)鍵盤事件的操作步驟

57、是:</p><p>  第一步,注冊KeyListener監(jiān)聽器addKeyListener().當事件源所在的類已經(jīng)實現(xiàn)KeyListener的接口時,參數(shù)可用this,否則需創(chuàng)建或繼承一個KeyListener</p><p>  第二步,實現(xiàn)KeyListener接口的所有方法,即KeyPressed(KeyEvent e)、KeyReleased(KeyEvent e)、KeyT

58、yped(MouseEvent e)。</p><p><b>  2.3算法流程設計</b></p><p>  流程規(guī)劃大致上可以分為三個部分,分別為:畫面初始、游戲者按下第一個方塊和為非地雷方塊時展開。</p><p>  畫面初始時,以游戲者最后一次設定的地雷區(qū)大小為范圍畫出地雷區(qū),但此時并未產(chǎn)生地雷。當游戲者按下第一個方塊時產(chǎn)生地雷資

59、料并啟動定時器,為何在游戲者按下第一個方塊才產(chǎn)生地雷資料呢?其主要的用意在于不要讓游戲者第一次就踩到地雷,這樣在某種程度上可以提高游戲者游玩的氣氛。接著就是如何判斷按下的方塊是非地雷時的處理,這也是整個游戲的技術核心,我們可以通過遞歸的觀念來檢查周邊的方塊是否含有地雷及是否繼續(xù)往外翻開。</p><p><b>  否</b></p><p><b>  否

60、</b></p><p>  是 是</p><p><b>  否</b></p><p><b>  是</b></p><p><b>  否</b></p><p><b>

61、;  是</b></p><p><b>  是</b></p><p><b>  否</b></p><p>  3游戲軟件的詳細設計</p><p><b>  3.1游戲初始化</b></p><p>  當玩家開始游戲時,游戲畫面如

62、圖:</p><p>  我們可以清楚的看到,游戲界面主要分為兩個主要部分:1. 計數(shù)及狀態(tài)區(qū);2.地雷區(qū)。</p><p>  1 設計整個游戲的結構,一般采用MVC作為整個游戲的結構,結構清晰又容易理解。</p><p>  2 一般來說,做這些游戲的時候,我們先從底層的model開始做起。在這里,model部分就是由兩張二維數(shù)組表組成,其中一張是mine,他上

63、面放的就是一些最底層的數(shù)據(jù),也就是說雷得分布情況。另外一張表是界面表chess,就是記錄一些顯示給用戶的數(shù)據(jù)。</p><p>  3 然后要做的是對兩張表的初始化,這一步非常重要,對于第一張表mine的的初始化的方法為先隨機n個不重復的雷,分布到mine表中,然后,對雷周圍的格子進行賦值。這里我用到方法為:遍歷所有的雷,將雷周圍的格子加一,這樣就能達到賦數(shù)值這個工作了。其中,這里有一個難點,就是如何判定雷周圍的

64、八個格子,其實方法很多,但是大多代碼繁瑣,或者處理邊界困難。這里我用到的方法是,計算兩個格子之間的距離,如果與雷的距離為1或者根號2的話,就能確定該格子在雷的周圍。然后是對chess進行初始化,chess就是界面表,也就是說,這里的數(shù)據(jù)是直接顯示給用戶看的。當然,初始化部分就是直接將賦值為板,就是等待去掃雷的狀態(tài)。</p><p>  4 然后就是掃雷部分,就是點擊一個格子,利用jlabel的觸發(fā)器將格子坐標傳送

65、到controller中去,controller中根據(jù)mine表判斷點擊的是什么,分三種情況,如果是雷,那就將底層的所有數(shù)據(jù)都賦到chess中,然后gameover。如果是數(shù)字,那就直接把數(shù)字賦值到chess中去。如果是0,那就非常麻煩了,這也是這個游戲中的一個難點,玩過掃雷的同學應該都知道,點擊0時,會散開周圍所有的0.我這邊的解決方法是,將點到的0的坐標加到list里面去,在遍歷這個list,取出里面的坐標,查找他周圍的8個格子,如

66、果是0,且坐標不與list中的坐標重復,就將第二次查找到的坐標放到list里面,然后取list的下一個值,點擊這個點,然后就是循環(huán)上面的語句。</p><p>  5 游戲中的另一個難點是,在游戲過程中,左右鍵同時點擊數(shù)字,會有一個提示,這里的做法是如果是數(shù)字的格子,監(jiān)聽到左右鍵同時點擊數(shù)字事件,查找這個格子周圍的8個格子的紅旗數(shù),如果周圍的紅旗數(shù)正好是格子上的數(shù)字,那么就將除紅旗之外的所有內(nèi)容都顯示出來。<

67、;/p><p>  這樣,游戲界面的初始化工作就基本完成了,下面就是地雷的隨機產(chǎn)生。</p><p><b>  3.2雷區(qū)的布置</b></p><p>  當游戲界面初始化完成后,這時在地雷區(qū)中并未產(chǎn)生地雷,只有當玩家在地雷區(qū)中第一次點下左鍵后,才會在地雷區(qū)中隨機的布置當前游戲難度下應該產(chǎn)生的地雷總數(shù),其主要用意在于不讓玩家第一次就踩到地雷,這

68、樣在某種程度上可以提高玩家游戲的氣憤。具體實現(xiàn)如下所示:</p><p>  for(int i=0;i<bon;i++)</p><p>  { int p=1;</p><p>  int m=(int)(Math.random()*row*col);</p><p>  while(p==1){</p><

69、p><b>  int l=1;</b></p><p><b>  int j;</b></p><p>  for( j=0;j<i&&l==1;j++){</p><p>  if(a1[j]==m){</p><p>  m=(int)(Math.random()

70、*row*col); </p><p><b>  l=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(j==i){</b></p><p><b

71、>  a1[i]=m;</b></p><p><b>  p=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p

72、>  b1.setText(bon+"");</p><p>  b2.setText("0");</p><p>  3.3游戲中主要功能模塊實現(xiàn)</p><p>  本掃雷游戲的實現(xiàn),共分為五個模塊,分別表述為:</p><p>  模塊1 定義雷的類,鼠標左鍵點擊不是雷,右鍵點擊是雷,數(shù)字

73、表示周圍有多少個雷,具體實現(xiàn)函數(shù)如下示:模塊2:雷的分布和雷的畫法具體實現(xiàn)函數(shù)的核心代碼如下示:</p><p>  模塊3 圖形界面的設計,具體實現(xiàn)函數(shù)如下示:</p><p>  模塊4 游戲勝利和失敗的條件創(chuàng)建,當所有雷都被找出時勝利,當左鍵點擊到雷時失敗,具體實現(xiàn)函數(shù)如下示:</p><p>  模塊5 鍵盤事件的監(jiān)聽,使用Q鍵退出圖形界面,具體實現(xiàn)函數(shù)如下

74、示:</p><p>  3.3.1底層邏輯模塊</p><p>  3.3.1.1 游戲邏輯模塊</p><p>  3.3.1.2 通信模塊</p><p>  3.3.2程序設計的界面實現(xiàn)功能模塊</p><p><b>  4游戲軟件測試</b></p><p>

75、;  在程序代碼基本完成后,經(jīng)過不斷的調(diào)試與修改,最后測試本次所設計的掃雷游戲能夠正常運行,在基本功能與畫面上與Windows自帶的掃雷游戲沒有太大差別,沒有出現(xiàn)明顯的錯誤和漏洞,但是在一些細節(jié)方面仍然需要完善,比如在游戲中可以加入一些聲音的提示,在游戲完成和失敗的時候可以彈出一些小的Flash動畫,還有就是可以加入一個掃雷英雄榜等等。總的來說本次設計在功能上已經(jīng)基本達到要求,其他細節(jié)方面有待以后完善。</p><p

76、><b>  結 論</b></p><p>  畢業(yè)設計是本科學習階段一次非常難得的理論與實際相結合的機會,通過這次比較完整的一個程序的設計,我擺脫了單純的理論知識學習狀態(tài),和實際設計的結合鍛煉了我的綜合運用所學的專業(yè)基礎知識,解決實際問題的能力,同時也提高我查閱文獻資料、對程序整體的把握等其他能力水平,而且通過對整體的掌控,對局部的取舍,以及對細節(jié)的斟酌處理,都使我的能力得到

77、了鍛煉,經(jīng)驗得到了豐富。這是我們都希望看到的也正是我們進行畢業(yè)設計的目的所在。</p><p>  雖然畢業(yè)設計內(nèi)容繁多,過程繁瑣但我的收獲卻更加豐富。各種組件的運用,各種算法的應用,各種控件的利用我都是隨著設計的不斷深入而不斷熟悉并逐步掌握的。和老師以及同學的溝通交流更使我對程序整體的規(guī)劃與設計有了新的認識也對自己提出了新的要求。</p><p>  提高是有限的但提高也是全面的,正是這

78、一次設計讓我積累了許多實際經(jīng)驗,也必然會讓我在未來的工作學習中表現(xiàn)出更高的應變能力和理解力。</p><p>  順利如期的完成本次畢業(yè)設計給了我很大的信心,但是也讓我看到了自己許多不足的地方,學習其實就是一個不斷完善的過程,正視自己的不足之處,在以后的工作和學習中不斷的彌補這些不足之處,在以后的生活中也要保持同樣的態(tài)度,不斷的完善自己。</p><p>  我課程設計選這個題目原因是我一

79、直比較喜歡這個游戲,對這款游戲的操作以及玩法度比較了解,所以做起來比較容易點,同時我也想玩玩自己親手做出這個小游戲,所以選了這個題目,掃雷游戲是一款智力游戲,這款游戲?qū)⒁欢ǖ牡乩追植荚谛「褡永?,最終勝利是玩家將所有的地雷都找出。Java是我們這個學期新學的語言,通過這個課程設計,我對以前學的知識有了更深一步的了解,這次設計的時間有限,所以我做了一個自己比較喜歡的小游戲,剛開始做時,雖然知道主要思想但把它要表示出來真的很不容易,通過查資料

80、,請教同學,上網(wǎng),知道了知識可能是自己一個人要花很長時間知道的,經(jīng)過這段時間的努力,終于做出了這款游戲,雖然還有很多不足,但做出來后還是很開心的,測試這個游戲的功能時,感覺很不錯,通過這個課程設計我對以前java有了一個更深一步的認識。所以這次的設計相對來說還是很成功的。</p><p><b>  參考文獻</b></p><p>  [1]耿祥義.JAVA大學實用

81、教程.電子工業(yè)出版社.2005.03</p><p>  [2]朱戰(zhàn)立,沈偉編著.Java程序設計實用指南.電子工業(yè)出版社,2005.1</p><p>  [3][美]Cay S.Horstmann.程峰等譯. JAVA2核心技術.機械工業(yè)出版社.2003.06</p><p>  [4]《Java程序設計教程》第二版 主編:雍俊海 清華大學出版社</p&

82、gt;<p>  [5]《軟件工程導論》第五版 主編:張海藩 清華大學出版社</p><p>  [6]《Java程序設計實驗指導與案例習題解答》主編:劉寶林 清華大學出版社</p><p>  [7]《Java程序設計案例教程》主編:劉志都、趙建超 武漢大學出版社</p><p>  [8]《Java編程基礎、實力與進階》主編:王勇、代桂平、

溫馨提示

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

評論

0/150

提交評論