大專計(jì)算機(jī)畢業(yè)論文.doc_第1頁(yè)
大專計(jì)算機(jī)畢業(yè)論文.doc_第2頁(yè)
大專計(jì)算機(jī)畢業(yè)論文.doc_第3頁(yè)
大專計(jì)算機(jī)畢業(yè)論文.doc_第4頁(yè)
大專計(jì)算機(jī)畢業(yè)論文.doc_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

成績(jī) 本科生畢業(yè)論文 題 目: 掃雷游戲軟件設(shè)計(jì)與實(shí)現(xiàn) 年 級(jí):0801專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)學(xué) 號(hào):20080006101姓 名:谷雪潔 指導(dǎo)教師:孫霞 年 月 日誠(chéng)信聲明本人鄭重聲明:本人所呈交的畢業(yè)論文(設(shè)計(jì))是在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的成果。畢業(yè)論文(設(shè)計(jì))中凡引用他人已經(jīng)發(fā)表或未發(fā)表的成果、數(shù)據(jù)、觀點(diǎn)等,均已明確注明出處。除文中已經(jīng)注明引用的內(nèi)容外,不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或在網(wǎng)上發(fā)表的論文。特此聲明。論文作者簽名: 日 期: 年 月 日關(guān)于格式問(wèn)題,請(qǐng)參照你們教務(wù)處對(duì)畢業(yè)論文格式的要求自行檢查,嚴(yán)格執(zhí)行,我這里不做檢查。word是可以自動(dòng)生成目錄,請(qǐng)盡量使用word這些編輯工具。目 錄1引言 11.1 課題背景及意義11.2開(kāi)發(fā)工具的選用及介紹2游戲軟件的總體分析與設(shè)計(jì)2.1軟件功能需求分析2.2 軟件界面設(shè)計(jì)2.3算法流程設(shè)計(jì)3游戲軟件的詳細(xì)設(shè)計(jì)3.1游戲初始化3.2雷區(qū)的布置3.3游戲中主要功能模塊實(shí)現(xiàn)3.3.1底層邏輯模塊 游戲邏輯模塊 通信模塊3.3小節(jié)下應(yīng)該寫各個(gè)功能模塊的具體實(shí)現(xiàn),你目前列出的小節(jié)與3.3的標(biāo)題不符。3.3.2程序設(shè)計(jì)的界面實(shí)現(xiàn)功能模塊 已修改4游戲軟件測(cè)試結(jié) 論參考文獻(xiàn)1引言1.1 課題背景及意義 隨著不斷發(fā)展的社會(huì),科學(xué)也一步步的提升,而計(jì)算機(jī)也成為了當(dāng)今社會(huì)不可或缺的一部分,今天,人們用計(jì)算機(jī)工作、通訊、聊天、視頻、游戲、娛樂(lè)。我們每天都在使用著計(jì)算機(jī)。在如此快速的社會(huì)里,每一個(gè)人都有著重大的壓力。而此刻游戲也就成了我們沒(méi)一個(gè)人用于釋放壓力的首選。 近年來(lái),隨著網(wǎng)絡(luò)的發(fā)展,游戲便成為了許多人關(guān)注的焦點(diǎn)。與傳統(tǒng)的影音產(chǎn)業(yè)一樣,游戲產(chǎn)業(yè)也是娛樂(lè)行業(yè)的一個(gè)重要組成部分,基于數(shù)字化的網(wǎng)絡(luò)游戲更讓人們找到了前所未有的感受,并已經(jīng)成為全球互聯(lián)產(chǎn)業(yè)的熱點(diǎn)。就在我們所熟悉的windows7系統(tǒng)中就攜帶了不少這樣的游戲。掃雷游戲就是windows操作系統(tǒng)自帶的一款小游戲,在過(guò)去的幾年里,windows操作系統(tǒng)歷經(jīng)數(shù)次換代更新,變得越來(lái)越龐大、復(fù)雜,功能也越來(lái)越強(qiáng)大,但是這款小游戲依然保持原來(lái)的容貌,可見(jiàn)這款小游戲受到越來(lái)越多人的喜愛(ài)。不過(guò)還是有很多人對(duì)這款游戲不太了解。本次的畢業(yè)設(shè)計(jì)我將利用eclipse 3.4.2作為開(kāi)發(fā)工具,開(kāi)發(fā)一款類似的“掃雷游戲”。從而對(duì)這款游戲能夠有進(jìn)一步的了解,熟悉此游戲的后臺(tái)運(yùn)行情況。并且此次畢業(yè)設(shè)計(jì)能將書(shū)本上所學(xué)的理論知識(shí)與實(shí)際相結(jié)合,同時(shí)也是對(duì)所學(xué)知識(shí)的一種檢查,希望通過(guò)本次的畢業(yè)設(shè)計(jì)能使自己在程序的開(kāi)發(fā)和設(shè)計(jì)上有新的認(rèn)識(shí)和提高。本次畢業(yè)設(shè)計(jì)既鍛煉了我們的實(shí)際動(dòng)手能力,又在老師的指導(dǎo)下進(jìn)行了一次模擬實(shí)際產(chǎn)品的開(kāi)發(fā),對(duì)于我們以后工作能力的培養(yǎng)具有重要意義。通過(guò)研究windows操作系統(tǒng)自帶的掃雷游戲,我們可以發(fā)現(xiàn)在這個(gè)游戲中主要有以下幾個(gè)關(guān)鍵的地方: 1.初始化問(wèn)題,關(guān)于產(chǎn)生雷數(shù)的問(wèn)題,即隨機(jī)產(chǎn)生本局游戲中雷的總數(shù),游戲的每一個(gè)級(jí)別產(chǎn)生的雷數(shù)不同,如何做到在不同的級(jí)別中產(chǎn)生不同的雷數(shù)。關(guān)于類的分布問(wèn)題,在游戲中雷的分布對(duì)于每一個(gè)小區(qū)域是不同的,如何獲取周圍地區(qū)分布的雷數(shù),在雷隨機(jī)分布之后,如何獲取每個(gè)區(qū)域周圍累的個(gè)數(shù)。 2.對(duì)鼠標(biāo)事件的處理問(wèn)題,既在游戲過(guò)程中對(duì)鼠標(biāo)事件應(yīng)如何做出反應(yīng)。當(dāng)單擊鼠標(biāo)左鍵時(shí),軟件對(duì)該事件的處理,是雷的處理和不是雷的處理。當(dāng)單擊鼠標(biāo)右鍵時(shí),系統(tǒng)做出的處理。 3.游戲中的另一個(gè)難點(diǎn)是,在游戲過(guò)程中,左右鍵同時(shí)點(diǎn)擊數(shù)字,會(huì)有一個(gè)提示,這里的做法是如果是數(shù)字的格子,監(jiān)聽(tīng)到左右鍵同時(shí)點(diǎn)擊數(shù)字事件,查找這個(gè)格子周圍的8個(gè)格子的紅旗數(shù),如果周圍的紅旗數(shù)正好是格子上的數(shù)字,那么就將除紅旗之外的所有內(nèi)容都顯示出來(lái)。4.游戲規(guī)則、勝負(fù)判斷方法,關(guān)于時(shí)間的計(jì)算。經(jīng)過(guò)四年的大學(xué)學(xué)習(xí),我對(duì)程序開(kāi)發(fā)和設(shè)計(jì)、java語(yǔ)言等幾種語(yǔ)言及eclipse等多個(gè)開(kāi)發(fā)平臺(tái)已經(jīng)有了一定的了解與認(rèn)知,本次的畢業(yè)設(shè)計(jì)便是將書(shū)本上所學(xué)的理論知識(shí)與實(shí)際相結(jié)合,同時(shí)也是對(duì)所學(xué)知識(shí)的一種檢查,希望通過(guò)本次的畢業(yè)設(shè)計(jì)使自己在程序的開(kāi)發(fā)和設(shè)計(jì)上有新的認(rèn)識(shí)并能有所提高。1.2開(kāi)發(fā)工具的選用及介紹 通過(guò)在大學(xué)的學(xué)習(xí),對(duì)多種語(yǔ)言及多個(gè)程序開(kāi)發(fā)平臺(tái)、軟件有了初步的了解,例如:c語(yǔ)言、c+、vb、java、html等。vc+、visual basic 、microsoft.net、eclipse sdk等軟件。 而eclipse 是一個(gè)被人們熟知的優(yōu)秀java集成開(kāi)發(fā)環(huán)境(ide),eclipse是眾多java程序員的首選。和netbeans一樣,eclipse也是一個(gè)完全免費(fèi)的軟件,而且還是開(kāi)源的。同時(shí),eclipse不需要安裝,解壓出來(lái)即可使用,相當(dāng)方便。故此選擇eclipse作為此次畢設(shè)所用的開(kāi)發(fā)工具。 但eclipse是使用java語(yǔ)言編寫的。所以要運(yùn)行eclipse必須在機(jī)器中安裝jdk,遺憾的是,eclipse官方?jīng)]有提供簡(jiǎn)體中文版的下載,只有英文版的,不過(guò),經(jīng)常使用eclipse習(xí)慣了之后就不會(huì)過(guò)于依賴于軟件界面的語(yǔ)言了。eclipse不僅能開(kāi)發(fā)java程序,還能開(kāi)發(fā)jsp,c+等程序。eclipse官方將軟件分成了普通java版,jee版,c+版。每個(gè)版本都針對(duì)相應(yīng)的語(yǔ)言各司其職,其中jee版包括java的全部功能。 java development kit (jdk) 是sun公司針對(duì)java開(kāi)發(fā)員的軟件開(kāi)發(fā)工具包。自從java推出以來(lái),jdk已經(jīng)成為使用最廣泛的java sdk(software development kit)。eclipse 是一個(gè)開(kāi)放源代碼的、基于 java 的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是,eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 java 開(kāi)發(fā)工具(java development tools,jdt)。 eclipse最初是由ibm公司開(kāi)發(fā)的替代商業(yè)軟件visual age for java的下一代ide開(kāi)發(fā)環(huán)境,2001年11月貢獻(xiàn)給開(kāi)源社區(qū),現(xiàn)在它由非營(yíng)利軟件供應(yīng)商聯(lián)盟eclipse基金會(huì)(eclipse foundation)管理。 2003年,eclipse 3.0選擇osgi服務(wù)平臺(tái)規(guī)范為運(yùn)行時(shí)架構(gòu)。 2007年6月,穩(wěn)定版3.3發(fā)布。2008年6月發(fā)布代號(hào)為ganymede的3.4版。2009年7月發(fā)布代號(hào)為galileo的3.5版。eclipse是著名的跨平臺(tái)的自由集成開(kāi)發(fā)環(huán)境(ide)。最初主要用來(lái)java語(yǔ)言開(kāi)發(fā),但是目前亦有人通過(guò)插件使其作為其他計(jì)算機(jī)語(yǔ)言比如c+和python的開(kāi)發(fā)工具。eclipse的本身只是一個(gè)框架平臺(tái),但是眾多插件的支持使得eclipse擁有其他功能相對(duì)固定的ide軟件很難具有的靈活性。許多軟件開(kāi)發(fā)商以eclipse為框架開(kāi)發(fā)自己的ide。eclipse 最初由oti和ibm兩家公司的ide產(chǎn)品開(kāi)發(fā)組創(chuàng)建,起始于1999年4月。ibm提供了最初的eclipse代碼基礎(chǔ),包括platform、jdt 和pde。目前由ibm牽頭,圍繞著eclipse項(xiàng)目已經(jīng)發(fā)展成為了一個(gè)龐大的eclipse聯(lián)盟,有150多家軟件公司參與到eclipse項(xiàng)目中,其中包括borland、rational software、red hat及sybase等。eclipse是一個(gè)開(kāi)發(fā)源碼項(xiàng)目,它其實(shí)是 visual age for java的替代品,其界面跟先前的visual age for java差不多,但由于其開(kāi)放源碼,任何人都可以免費(fèi)得到,并可以在此基礎(chǔ)上開(kāi)發(fā)各自的插件,因此越來(lái)越受人們關(guān)注。近期還有包括oracle在內(nèi)的許多大公司也紛紛加入了該項(xiàng)目,并宣稱eclipse將來(lái)能成為可進(jìn)行任何語(yǔ)言開(kāi)發(fā)的ide集大成者,使用者只需下載各種語(yǔ)言的插件即可。 雖然大多數(shù)用戶很樂(lè)于將 eclipse 當(dāng)作 java ide 來(lái)使用,但 eclipse 的目標(biāo)不僅限于此。eclipse 還包括插件開(kāi)發(fā)環(huán)境(plug-in development environment,pde),這個(gè)組件主要針對(duì)希望擴(kuò)展 eclipse 的軟件開(kāi)發(fā)人員,因?yàn)樗试S他們構(gòu)建與 eclipse 環(huán)境無(wú)縫集成的工具。由于 eclipse 中的每樣?xùn)|西都是插件,對(duì)于給 eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開(kāi)發(fā)環(huán)境而言,所有工具開(kāi)發(fā)人員都具有同等的發(fā)揮場(chǎng)所?;?eclipse 的應(yīng)用程序的突出例子是 ibm 的 websphere studio workbench,它構(gòu)成了 ibm java 開(kāi)發(fā)工具系列的基礎(chǔ)。例如,websphere studio application developer 添加了對(duì) jsp、servlet、ejb、xml、web 服務(wù)和數(shù)據(jù)庫(kù)訪問(wèn)的支持。 eclipse的主要組成eclipse是一個(gè)開(kāi)放源代碼的軟件開(kāi)發(fā)項(xiàng)目,專注于為高度集成的工具開(kāi)發(fā)提供一個(gè)全功能的、具有商業(yè)品質(zhì)的工業(yè)平臺(tái)。它主要由eclipse項(xiàng)目、eclipse工具項(xiàng)目和eclipse技術(shù)項(xiàng)目三個(gè)項(xiàng)目組成,具體包括四個(gè)部分組成eclipse platform、jdt、cdt和pde.jdt支持java開(kāi)發(fā)、cdt支持c開(kāi)發(fā)、pde用來(lái)支持插件開(kāi)發(fā),eclipse platform則是一個(gè)開(kāi)放的可擴(kuò)展ide,提供了一個(gè)通用的開(kāi)發(fā)平臺(tái)。它提供建造塊和構(gòu)造并運(yùn)行集成軟件開(kāi)發(fā)工具的基礎(chǔ)。eclipse platform允許工具建造者獨(dú)立開(kāi)發(fā)與他人工具無(wú)縫集成的工具從而無(wú)須分辨一個(gè)工具功能在哪里結(jié)束,而另一個(gè)工具功能在哪里開(kāi)始。eclipse sdk(軟件開(kāi)發(fā)者包)是eclipse platform、jdt和pde所生產(chǎn)的組件合并,它們可以一次下載。這些部分在一起提供了一個(gè)具有豐富特性的開(kāi)發(fā)環(huán)境,允許開(kāi)發(fā)者有效地建造可以無(wú)縫集成到eclipse platform中的工具。eclipse sdk由eclipse項(xiàng)目生產(chǎn)的工具和來(lái)自其它開(kāi)放源代碼的第三方軟件組合而成。eclipse項(xiàng)目生產(chǎn)的軟件以 cpl發(fā)布,第三方組件有各自自身的許可協(xié)議。章與章之間需要另起一頁(yè),不要寫在一起。已修改2.游戲軟件的總體分析與設(shè)計(jì) 文字方面需要調(diào)整 已修改相信大多數(shù)使用windows操作系統(tǒng)的使用者,對(duì)這款游戲都不陌生。這款游戲不止操作簡(jiǎn)單,規(guī)則也不難,再加上游戲速度的控制機(jī)制得宜,讓整個(gè)游戲在操作過(guò)程中充滿了快樂(lè)與緊張的氣氛。除了游戲當(dāng)中能帶給使用者快樂(lè)之外,游戲的設(shè)計(jì)內(nèi)容無(wú)形中也不斷訓(xùn)練使用者的邏輯思考能力,對(duì)于依靠高度腦力工作的現(xiàn)代人,都可以通過(guò)這個(gè)游戲,不時(shí)的檢驗(yàn)一下自己,所以我們不難發(fā)現(xiàn),在各種可攜帶的電子產(chǎn)品上都有這款游戲的蹤影。2.1軟件功能需求分析 單機(jī)游戲的開(kāi)發(fā)有很大的發(fā)展前途,而掃雷游戲則是建立在此基礎(chǔ)上的。在設(shè)計(jì)之前,我們先來(lái)了解這款游戲的規(guī)則。已修改掃雷就是要把所有非地雷的格子揭開(kāi)即勝利;踩到地雷格子就算失敗。 游戲主區(qū)域由很多個(gè)方格組成。使用鼠標(biāo)左鍵隨機(jī)點(diǎn)擊一個(gè)方格,方格即被打開(kāi)并顯示出方格中的數(shù)字;方格中數(shù)字則表示其周圍的8個(gè)方格隱藏了幾顆雷;如果點(diǎn)開(kāi)的格子為空白格,即其周圍有0顆雷,則其周圍格子自動(dòng)打開(kāi);如果其周圍還有空白格,則會(huì)引發(fā)連鎖反應(yīng);在你認(rèn)為有雷的格子上,點(diǎn)擊右鍵即可標(biāo)記雷;如果一個(gè)已打開(kāi)格子周圍所有的雷已經(jīng)正確標(biāo)出,則可以在此格上同時(shí)點(diǎn)擊鼠標(biāo)左右鍵以打開(kāi)其周圍剩余的無(wú)雷格。 1代表1的上下左右及斜角合計(jì)有一顆雷,依次輪推,2則有2顆,3則有3顆. 在確實(shí)是炸彈的方格上點(diǎn)了標(biāo)記,就安全了,不是炸彈的被點(diǎn)了標(biāo)記,后面會(huì)被炸死的。問(wèn)號(hào)就先不確定這里有沒(méi)有炸彈,不會(huì)存在點(diǎn)錯(cuò)了被炸死的狀況。有個(gè)小竅門,在數(shù)字旁同時(shí)點(diǎn)左鍵和右鍵可以排雷。左鍵點(diǎn)開(kāi),右鍵標(biāo)記雷,同時(shí)左右鍵點(diǎn)數(shù)字可以判斷周圍的雷是否已經(jīng)全部標(biāo)出。 通過(guò)單擊即可挖開(kāi)方塊。如果挖開(kāi)的是地雷,則您輸?shù)粲螒?,如果方塊上出現(xiàn)數(shù)字,則表示在其周圍的八個(gè)方塊中共有多少顆地雷。要標(biāo)記您認(rèn)為可能有地雷的方塊,請(qǐng)右鍵單擊它。 游戲區(qū)包括雷區(qū)、地雷計(jì)數(shù)器和計(jì)時(shí)器。數(shù)字就是這個(gè)方塊周圍的8個(gè)方塊里有的雷的數(shù)量,問(wèn)號(hào)是自己弄上去的,可以的地方可以弄個(gè)問(wèn)號(hào),標(biāo)記就是確定那里有雷了。 在不掀開(kāi)任何藏有地雷的方塊情況下,以最快的速度找出所有的地雷。如果在掀開(kāi)方塊的過(guò)程中,不小心翻開(kāi)(踩到)藏有地雷的方塊,則宣告失?。ㄓ螒蚪Y(jié)束),惟有將所有不含地雷的方塊掀開(kāi),游戲才算成功。游戲的操作方法主要以鼠標(biāo)為主,當(dāng)鼠標(biāo)指針對(duì)準(zhǔn)未翻開(kāi)的方塊按下左鍵時(shí)即表示翻開(kāi)方塊,當(dāng)鼠標(biāo)指針對(duì)準(zhǔn)未翻開(kāi)的方塊按下右鍵時(shí)即表示標(biāo)示或疑示地雷,反復(fù)按下右鍵則方塊會(huì)以未標(biāo)示疑似取消疑似三者關(guān)系不斷循環(huán)。游戲者可以通過(guò)地雷區(qū)內(nèi)的數(shù)字提示了解以數(shù)字為中心的其周邊八個(gè)方格內(nèi)所含的地雷數(shù),假若翻開(kāi)的方塊顯示數(shù)字“3”,則表示以其為中心的周邊方塊內(nèi)藏有3個(gè)地雷。當(dāng)按下的方塊不是地雷,且周邊八個(gè)方塊也都沒(méi)有地雷時(shí),方塊會(huì)以被翻開(kāi)方塊的八個(gè)方向?qū)⒖瞻追綁K翻開(kāi)。文字邏輯性要強(qiáng)。上面這一段只是闡述了游戲規(guī)則,并沒(méi)有總結(jié)軟件功能,與題目不符。寫論文的時(shí)候要緊扣小標(biāo)題。請(qǐng)補(bǔ)充。未補(bǔ)充2.2 軟件界面設(shè)計(jì)你寫的與小標(biāo)題不符。這個(gè)部分需要些你是如何設(shè)計(jì)界面的,需要哪些界面,可以把界面圖copy在論文中。本次設(shè)計(jì)我將主要運(yùn)用java語(yǔ)言來(lái)完成。java語(yǔ)言是一種跨平臺(tái),適合于分布式計(jì)算環(huán)境的面向?qū)ο缶幊陶Z(yǔ)言,用java寫的應(yīng)用程序不用修改就可在不同的軟硬件平臺(tái)上運(yùn)行。java的圖形界面圖形界面簡(jiǎn)稱gui,是用圖形的方式,借助菜單、按紐等標(biāo)準(zhǔn)界面元素和鼠標(biāo)操作,幫助用戶方便地想計(jì)算機(jī)系統(tǒng)發(fā)出指令、啟動(dòng)操作,并將系統(tǒng)的運(yùn)行結(jié)果同樣以圖形方式顯示給用戶的技術(shù)。java的圖形界面技術(shù)既為使用java.awt包來(lái)創(chuàng)建圖形界面的方法,包括awt組件、窗口和菜單設(shè)計(jì)、布局管理器以及繪圖操作等。public void initgui() p3=new jpanel();b=bon;jmenubar menubar=new jmenubar();jmenu menu1=new jmenu(游戲);jmenu menu2=new jmenu(幫助);jmenuitem mi1=new jmenuitem(初級(jí));jmenuitem mi2 = new jmenuitem(中級(jí));jmenuitem mi3 =new jmenuitem(高級(jí));mi1.addactionlistener(this);menu1.add(mi1);mi2.addactionlistener(this);menu1.add(mi2);mi3.addactionlistener(this);menu1.add(mi3);menubar.add(menu1);menubar.add(menu2);p3.add(menubar);b1=new jlabel(bon+);a1=new intbon;btn =new jbutton(開(kāi)始);btn.addactionlistener(this);b2=new jlabel(0);b3=new jlabel();btns=new jbuttonrow*col; p=new jpanel();p.setlayout(new borderlayout();contentpane.add(p);p.add(p3,borderlayout.north);/combo=new jcombobox(new object初級(jí),中級(jí),高級(jí) );/加監(jiān)聽(tīng)/*combo.additemlistener(new itemlistener();*/ p1=new jpanel();/在那個(gè)位置/( flowlayout)p1.getlayout().setalignment( flowlayout.right);p1.add(b1);p1.add(btn);p1.add(b2);p1.add(b3);p.add(p3,borderlayout.north);p.add(p1,borderlayout.center); p2=new jpanel();p2.setlayout(new gridlayout(row,col,0,0);for(int i=0;irow*col;i+)btnsi=new jbutton();btnsi.setmargin(new insets(0,0,0,0);btnsi.setfont(new font(null,font.bold,25);btnsi.addactionlistener(this);btnsi.addmouselistener(new normoremouseevent();p2.add(btnsi);contentpane.add(p,borderlayout.north);contentpane.add(p2,borderlayout.center);awt概述awt既抽象窗口工具集,用于圖形用戶界面的開(kāi)發(fā)。awt的功能包括以下方面:(1)豐富的圖形界面組件。(2)強(qiáng)大的事件處理模型圖形和圖形工具,包括形狀、顏色和字體。(3)布局管理器,可以進(jìn)行靈活的的窗口布局,設(shè)計(jì)特定窗口的尺寸和和屏幕分辨率。(4)無(wú)關(guān)數(shù)據(jù)傳送類,可以通過(guò)本地平臺(tái)的剪貼板來(lái)進(jìn)行剪切和粘貼操作。(5)打印和無(wú)鼠標(biāo)操作。java.awt是java基本包中最大的一個(gè),其中定義了所有的gui組件類,以及其他用于構(gòu)造圖形界面的類。awt基本組件(1)標(biāo)簽組件(label)標(biāo)簽組件顯示的是靜態(tài)文本,在通常情況下是不能編輯的,能起到提示的作用label組件有三種構(gòu)造函數(shù):label(): 創(chuàng)建空的標(biāo)簽label(string):創(chuàng)建一個(gè)帶初始字符串的標(biāo)簽。label(string,int):創(chuàng)建一個(gè)帶初始字符串及指定對(duì)齊方式的標(biāo)簽。(2)文本域文本域一般用來(lái)讓用戶輸入姓名、信用卡號(hào)等這樣的信息,它是一個(gè)能夠接收用戶的鍵盤輸入的小塊區(qū)域。textfield():創(chuàng)建空的文本域(3)按鈕(button)幾乎所有的交互式程序中都會(huì)有按紐,它是一種交互能力強(qiáng)且交互方便的控件,這個(gè)控件提供了“按下并動(dòng)作”的基本用戶界面。按紐的構(gòu)造方法有:button():建立一個(gè)沒(méi)有標(biāo)示字符串的新按紐類對(duì)象。button(string label):建立一個(gè)標(biāo)示字符串為label的新按紐類的對(duì)象(4)畫板組件(panel)我們?cè)诮缑嫔习才鸥鞣N組件時(shí),有時(shí)會(huì)需要將組件成組放置,這時(shí)就可以使用面板組件。panel是最簡(jiǎn)單的容器組件,本身是一個(gè)矩形區(qū)域,可以在其中放入各種組件。但它僅僅是安排各種組件的一種結(jié)構(gòu),需要最后加入到別的容器中才能實(shí)現(xiàn)gui的功能。面板組件的創(chuàng)建panel():用默認(rèn)的布局管理器創(chuàng)建面板組件。panel(layoutmanager layout):用指定的布局管理器創(chuàng)建面板組件。(5)框架窗口組件(frame)frame是獨(dú)立于瀏覽器的可獨(dú)立運(yùn)行的主窗口,通常用于進(jìn)行開(kāi)發(fā)桌面應(yīng)用程序。frame擁有邊界和標(biāo)題欄設(shè)置,其大小可以進(jìn)行設(shè)置調(diào)整。frame里面需要加入組件,也可以加入菜單,或在上面繪圖。frame的創(chuàng)建frame():創(chuàng)建一個(gè)沒(méi)有窗口標(biāo)題的窗口框架。frame(string):創(chuàng)建一個(gè)指定窗口標(biāo)題的窗口框架。(6)布局管理器flowlayout布局管理器flowlayout布局管理是一種最簡(jiǎn)單的布局管理方法,是panel的默認(rèn)布局。它以流式的方式,自左向右,自上而下地放置容器中的組件,即組件按每行先后自左向后放置,一行放不下再換行。flowlayout布局管理器的創(chuàng)建flowlayout():創(chuàng)建默認(rèn)的flowlayout布局管理器flowlayout(int):以指定的對(duì)齊方式創(chuàng)建flowlayout布局管理器。其中的參數(shù)有flowlayout.left、flowlayout.right、flowlayout.centerflowlayout(int,int,int):以指定的對(duì)齊方式及間距創(chuàng)建flowlayout布局管理器。其中第一個(gè)參數(shù)為對(duì)齊方式,第二個(gè)參數(shù)為組件間間距,第三個(gè)參數(shù)為列間距。(7)事件處理事件處理是一個(gè)接受事件、解釋事件并處理用戶交互的方法。事件處理有三個(gè)要素:事件源 事件源是一個(gè)時(shí)間的產(chǎn)生者,如按牛、窗口及文本域等。事件類型 java中所有的事件都封裝成一個(gè)類,這些事件類被集中在java.awt.exent包和java.swing.event包中,所有的事件類均繼承了awtevent類和一個(gè)方法getsouce()方法,該方法返回發(fā)生事件的對(duì)象。事件監(jiān)聽(tīng)器 不同的類型事件發(fā)生后,由事件監(jiān)聽(tīng)器接受事件并調(diào)用響應(yīng)的事件處理方法,所有的事件監(jiān)聽(tīng)器實(shí)際上都是一個(gè)java.awt.exent包中的借口,繼承了java.util.eventlistener接口。不同的事件有不同的處理方法,(8)鍵盤事件處理該程序使用的是鍵盤監(jiān)聽(tīng)事件,鍵盤事件對(duì)應(yīng)的事件類是keyevent類,使用的該類的方法是getkeycode()獲得按下或釋放的鍵代碼getkeytext()獲得按下或釋放的鍵的字符串。鍵盤事件對(duì)應(yīng)的事件監(jiān)聽(tīng)器為:keylistener或keyadapter實(shí)現(xiàn)鍵盤事件的操作步驟是:第一步,注冊(cè)keylistener監(jiān)聽(tīng)器addkeylistener().當(dāng)事件源所在的類已經(jīng)實(shí)現(xiàn)keylistener的接口時(shí),參數(shù)可用this,否則需創(chuàng)建或繼承一個(gè)keylistener第二步,實(shí)現(xiàn)keylistener接口的所有方法,即keypressed(keyevent e)、keyreleased(keyevent e)、keytyped(mouseevent e)。 已修改2.3算法流程設(shè)計(jì) 流程規(guī)劃大致上可以分為三個(gè)部分,分別為:畫面初始、游戲者按下第一個(gè)方塊和為非地雷方塊時(shí)展開(kāi)。 畫面初始時(shí),以游戲者最后一次設(shè)定的地雷區(qū)大小為范圍畫出地雷區(qū),但此時(shí)并未產(chǎn)生地雷。當(dāng)游戲者按下第一個(gè)方塊時(shí)產(chǎn)生地雷資料并啟動(dòng)定時(shí)器,為何在游戲者按下第一個(gè)方塊才產(chǎn)生地雷資料呢?其主要的用意在于不要讓游戲者第一次就踩到地雷,這樣在某種程度上可以提高游戲者游玩的氣氛。接著就是如何判斷按下的方塊是非地雷時(shí)的處理,這也是整個(gè)游戲的技術(shù)核心,我們可以通過(guò)遞歸的觀念來(lái)檢查周邊的方塊是否含有地雷及是否繼續(xù)往外翻開(kāi)。下面的圖最好用畫圖軟件來(lái)做。 如何做開(kāi)始 初始化等待按鍵 否右鍵左鍵 否 是 是第一次按下顯示方塊 否按下方塊周圍展開(kāi)非地雷方塊 是1. 布置地雷2. 啟動(dòng)計(jì)時(shí)按下方塊是雷 否 是顯示分?jǐn)?shù)是否再玩 是結(jié)束 否3游戲軟件的詳細(xì)設(shè)計(jì)3.1游戲初始化下面的文字并沒(méi)有圍繞初始化的內(nèi)容寫。語(yǔ)言太過(guò)于口語(yǔ)化。已修改當(dāng)玩家開(kāi)始游戲時(shí),游戲畫面如圖:地雷區(qū)計(jì)數(shù)及狀態(tài)區(qū)我們可以清楚的看到,游戲界面主要分為兩個(gè)主要部分:1. 計(jì)數(shù)及狀態(tài)區(qū);2.地雷區(qū)。 1 設(shè)計(jì)整個(gè)游戲的結(jié)構(gòu),一般采用mvc作為整個(gè)游戲的結(jié)構(gòu),結(jié)構(gòu)清晰又容易理解。 2 一般來(lái)說(shuō),做這些游戲的時(shí)候,我們先從底層的model開(kāi)始做起。在這里,model部分就是由兩張二維數(shù)組表組成,其中一張是mine,他上面放的就是一些最底層的數(shù)據(jù),也就是說(shuō)雷得分布情況。另外一張表是界面表chess,就是記錄一些顯示給用戶的數(shù)據(jù)。 3 然后要做的是對(duì)兩張表的初始化,這一步非常重要,對(duì)于第一張表mine的的初始化的方法為先隨機(jī)n個(gè)不重復(fù)的雷,分布到mine表中,然后,對(duì)雷周圍的格子進(jìn)行賦值。這里我用到方法為:遍歷所有的雷,將雷周圍的格子加一,這樣就能達(dá)到賦數(shù)值這個(gè)工作了。其中,這里有一個(gè)難點(diǎn),就是如何判定雷周圍的八個(gè)格子,其實(shí)方法很多,但是大多代碼繁瑣,或者處理邊界困難。這里我用到的方法是,計(jì)算兩個(gè)格子之間的距離,如果與雷的距離為1或者根號(hào)2的話,就能確定該格子在雷的周圍。然后是對(duì)chess進(jìn)行初始化,chess就是界面表,也就是說(shuō),這里的數(shù)據(jù)是直接顯示給用戶看的。當(dāng)然,初始化部分就是直接將賦值為板,就是等待去掃雷的狀態(tài)。 4 然后就是掃雷部分,就是點(diǎn)擊一個(gè)格子,利用jlabel的觸發(fā)器將格子坐標(biāo)傳送到controller中去,controller中根據(jù)mine表判斷點(diǎn)擊的是什么,分三種情況,如果是雷,那就將底層的所有數(shù)據(jù)都賦到chess中,然后gameover。如果是數(shù)字,那就直接把數(shù)字賦值到chess中去。如果是0,那就非常麻煩了,這也是這個(gè)游戲中的一個(gè)難點(diǎn),玩過(guò)掃雷的同學(xué)應(yīng)該都知道,點(diǎn)擊0時(shí),會(huì)散開(kāi)周圍所有的0.我這邊的解決方法是,將點(diǎn)到的0的坐標(biāo)加到list里面去,在遍歷這個(gè)list,取出里面的坐標(biāo),查找他周圍的8個(gè)格子,如果是0,且坐標(biāo)不與list中的坐標(biāo)重復(fù),就將第二次查找到的坐標(biāo)放到list里面,然后取list的下一個(gè)值,點(diǎn)擊這個(gè)點(diǎn),然后就是循環(huán)上面的語(yǔ)句。 5 游戲中的另一個(gè)難點(diǎn)是,在游戲過(guò)程中,左右鍵同時(shí)點(diǎn)擊數(shù)字,會(huì)有一個(gè)提示,這里的做法是如果是數(shù)字的格子,監(jiān)聽(tīng)到左右鍵同時(shí)點(diǎn)擊數(shù)字事件,查找這個(gè)格子周圍的8個(gè)格子的紅旗數(shù),如果周圍的紅旗數(shù)正好是格子上的數(shù)字,那么就將除紅旗之外的所有內(nèi)容都顯示出來(lái)。這樣,游戲界面的初始化工作就基本完成了,下面就是地雷的隨機(jī)產(chǎn)生。3.2雷區(qū)的布置當(dāng)游戲界面初始化完成后,這時(shí)在地雷區(qū)中并未產(chǎn)生地雷,只有當(dāng)玩家在地雷區(qū)中第一次點(diǎn)下左鍵后,才會(huì)在地雷區(qū)中隨機(jī)的布置當(dāng)前游戲難度下應(yīng)該產(chǎn)生的地雷總數(shù),其主要用意在于不讓玩家第一次就踩到地雷,這樣在某種程度上可以提高玩家游戲的氣憤。具體實(shí)現(xiàn)如下所示:for(int i=0;ibon;i+) 已修改 int p=1;int m=(int)(math.random()*row*col);while(p=1) int l=1; int j;for( j=0;ji&l=1;j+) if(a1j=m) m=(int)(math.random()*row*col); l=0; if(j=i)a1i=m;p=0;b1.settext(bon+);b2.settext(0);3.3游戲中主要功能模塊實(shí)現(xiàn)3.3.1底層邏輯模塊 游戲邏輯模塊 通信模塊3.43.2程序設(shè)計(jì)的界面實(shí)現(xiàn) 已修改功能模塊4游戲軟件測(cè)試軟件測(cè)試有專門的一套方法,不是你這里幾句話就可以的。這是一章的內(nèi)容。在程序代碼基本完成后,經(jīng)過(guò)不斷的調(diào)試與修改,最后測(cè)試本次所設(shè)計(jì)的掃雷游戲能夠正常運(yùn)行,在基本功能與畫面上與windows自帶的掃雷游戲沒(méi)有太大差別,沒(méi)有出現(xiàn)明顯的錯(cuò)誤和漏洞,但是在一些細(xì)節(jié)方面仍然需要完善,比如在游戲中可以加入一些聲音的提示,在游戲完成和失敗的時(shí)候可以彈出一些小的flash動(dòng)畫,還有就是可以加入一個(gè)掃雷英雄榜等等。總的來(lái)說(shuō)本次設(shè)計(jì)在功能上已經(jīng)基本達(dá)到要求,其他細(xì)節(jié)方面有待以后完善。

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論