掃雷的課程設(shè)計(jì)報(bào)告_第1頁(yè)
掃雷的課程設(shè)計(jì)報(bào)告_第2頁(yè)
掃雷的課程設(shè)計(jì)報(bào)告_第3頁(yè)
掃雷的課程設(shè)計(jì)報(bào)告_第4頁(yè)
掃雷的課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩21頁(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)介

1、西安文理學(xué)院信息工程學(xué)院課程設(shè)計(jì)報(bào)告設(shè)計(jì)名稱(chēng): 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 設(shè)計(jì)題目: 實(shí)現(xiàn)一個(gè)N*M的掃雷游戲 學(xué)生學(xué)號(hào): 1402130407 專(zhuān)業(yè)班級(jí): 軟件13級(jí)四班 學(xué)生姓名: 樊秀琳 學(xué)生成績(jī): 指導(dǎo)教師(職稱(chēng)): 謝巧玲(講師) 課題工作時(shí)間: 2015.6.22 至 2015.7.3 說(shuō)明:1、報(bào)告中的任務(wù)書(shū)、進(jìn)度表由指導(dǎo)教師在課程設(shè)計(jì)開(kāi)始前填寫(xiě)并發(fā)給每個(gè)學(xué)生。2、學(xué)生成績(jī)由指導(dǎo)教師根據(jù)學(xué)生的設(shè)計(jì)情況給出各項(xiàng)分值及總評(píng)成績(jī)。3、所有學(xué)生必須參加課程設(shè)計(jì)的答辯環(huán)節(jié),凡不參加答辯者,其成績(jī)一律按不及格處理。答辯由指導(dǎo)教師實(shí)施。4、報(bào)告正文字?jǐn)?shù)一般應(yīng)不少于3000字,也可由指導(dǎo)教師根據(jù)本門(mén)綜合

2、設(shè)計(jì)的情況另行規(guī)定。5、平時(shí)表現(xiàn)成績(jī)低于6分的學(xué)生,取消答辯資格,其本項(xiàng)綜合設(shè)計(jì)成績(jī)按不及格處理。信息工程學(xué)院課程設(shè)計(jì)任務(wù)書(shū)學(xué)生姓名樊秀琳學(xué)號(hào)1402130407專(zhuān)業(yè)班級(jí)軟件工程13級(jí)四班設(shè)計(jì)題目實(shí)現(xiàn)一個(gè)N*M的掃雷游戲內(nèi)容概要:(包含要求采用的設(shè)計(jì)環(huán)境或開(kāi)發(fā)環(huán)境(軟、硬環(huán)境),采用的關(guān)鍵技術(shù)等),系統(tǒng)/設(shè)計(jì)所包含的基本功能等) 程序在eclipse文獻(xiàn)資料:1張躍平.JAVA 2實(shí)用教程(第三版)M.清華大學(xué)出版社,2006 2張躍平.JAVA課程設(shè)計(jì)(第二版)M.清華大學(xué)出版社,2009 3葉核亞.數(shù)據(jù)結(jié)構(gòu)(Java)(第二版)M.電子工業(yè)大學(xué)出版社,2008

3、 設(shè)計(jì)要求:(設(shè)計(jì)所必須達(dá)到的基本功能要求、文檔格式要求及其他等)工作期限:設(shè)計(jì)工作自2015年6月22日至201年7月3日止。指導(dǎo)教師: 院長(zhǎng): 日 期:2015年6月22日信息工程學(xué)院課程設(shè)計(jì)進(jìn)度安排表學(xué)生姓名: 樊秀琳 學(xué)號(hào): 1402130407 專(zhuān)業(yè): 軟件工程 班級(jí): 13級(jí)四班 起止日期內(nèi) 容備注6月22日 6月 23日下任務(wù)書(shū);收集、閱讀、整理相關(guān)參考文獻(xiàn),并進(jìn)行歸納和概括總結(jié),完成項(xiàng)目/任務(wù)背景介紹部分文字內(nèi)容。6月24日6月26日系統(tǒng)功能設(shè)計(jì)和模塊設(shè)計(jì)、系統(tǒng)體系結(jié)構(gòu)構(gòu)建。6月27日6月30日各功能模塊編碼實(shí)現(xiàn),系統(tǒng)各功能模塊調(diào)試與維護(hù)。7月1日7月2日系統(tǒng)功能集成

4、、系統(tǒng)調(diào)試與測(cè)試,按照模板要求撰寫(xiě)課程設(shè)計(jì)/項(xiàng)目設(shè)計(jì)報(bào)告。7月3日課程設(shè)計(jì)/項(xiàng)目設(shè)計(jì)分組答辯,提交課程設(shè)計(jì)/項(xiàng)目設(shè)計(jì)報(bào)告以及相關(guān)文檔,進(jìn)行成績(jī)?cè)u(píng)定。指導(dǎo)教師簽名: 2014年6月22日成績(jī)?cè)u(píng)定表學(xué)生姓名: 樊秀琳 學(xué)號(hào): 1402130407 專(zhuān)業(yè): 軟件工程 班級(jí): 13級(jí)四班 類(lèi)別合計(jì)分值各項(xiàng)分值評(píng)分標(biāo)準(zhǔn)實(shí)際得分合計(jì)得分平時(shí)表現(xiàn)1010按時(shí)參加設(shè)計(jì)指導(dǎo),無(wú)違反紀(jì)律情況。完成情況3020按設(shè)計(jì)任務(wù)書(shū)的要求完成了全部任務(wù),能完整演示其設(shè)計(jì)內(nèi)容,符合要求。10能對(duì)其設(shè)計(jì)內(nèi)容進(jìn)行詳細(xì)、完整的介紹,并能就指導(dǎo)教師提出的問(wèn)題進(jìn)行正確的回答。報(bào)告質(zhì)量3510報(bào)告文字通順,內(nèi)容翔實(shí),論述充分、完整,立論正

5、確,結(jié)構(gòu)嚴(yán)謹(jǐn)合理;報(bào)告字?jǐn)?shù)符合相關(guān)要求,工整規(guī)范,整齊劃一。5課題背景介紹清楚,綜述分析充分。5設(shè)計(jì)方案合理、可行,論證嚴(yán)謹(jǐn),邏輯性強(qiáng),具有說(shuō)服力。5符號(hào)統(tǒng)一;圖表完備、符合規(guī)范要求。5能對(duì)整個(gè)設(shè)計(jì)過(guò)程進(jìn)行全面的總結(jié),得出有價(jià)值的結(jié)論或結(jié)果。5參考文獻(xiàn)數(shù)量在2篇以上,格式符合要求,在正文中正確引用。答辯情況2510在規(guī)定時(shí)間內(nèi)能就所設(shè)計(jì)的內(nèi)容進(jìn)行闡述,言簡(jiǎn)意明,重點(diǎn)突出,論點(diǎn)正確,條理清晰。15在規(guī)定時(shí)間內(nèi)能準(zhǔn)確、完整、流利地回答教師所提出的問(wèn)題??傇u(píng)成績(jī): 分 指導(dǎo)教師: (簽字) 日期:2014 年7月 3 日摘 要 摘  要 :掃雷游戲是Windo

6、ws操作系統(tǒng)自帶的一款小游戲,在過(guò)去的幾年里,Windows操作系統(tǒng)歷經(jīng)數(shù)次換代更新,變得越來(lái)越龐大、復(fù)雜,功能也越來(lái)越強(qiáng)大,但是這款小游戲依然保持原來(lái)的容貌,可見(jiàn)這款小游戲受到越來(lái)越多人的喜愛(ài)。掃雷游戲是比較經(jīng)典的一款小游戲,實(shí)現(xiàn)它的方法很多,可以用很多不同算法設(shè)計(jì)和語(yǔ)言實(shí)現(xiàn),如C,C+,VB,JAVA等。我利用eclipse編寫(xiě)了與它功能相似的掃雷游戲,寓學(xué)于樂(lè)。 程序的功能是隨機(jī)生成地雷數(shù),通過(guò)鼠標(biāo)操作玩游戲,不接受鍵盤(pán),按任意鍵結(jié)束程序。單擊屏幕上的笑臉可以重新開(kāi)始游戲。所有地雷標(biāo)出后勝利,當(dāng)鼠標(biāo)左鍵單擊到地雷時(shí)提示游戲失敗。其功能類(lèi)似于Windows操作系統(tǒng)自帶的掃雷游戲。論文首先介

7、紹了進(jìn)行該游戲課程設(shè)計(jì)的目的,然后是任務(wù)描述和設(shè)計(jì)的相關(guān)要求,最后是最重要的需求分析和設(shè)計(jì)方案。重點(diǎn)介紹了在游戲過(guò)程中各事件的處理,其中又以鼠標(biāo)事件和清除未靠近地雷區(qū)方塊這兩方面最為最要,鼠標(biāo)事件是利用鼠標(biāo)所發(fā)出的信息了解用戶的意圖,進(jìn)而做出相對(duì)應(yīng)的動(dòng)作。清除未靠近地雷區(qū)的方塊較為復(fù)雜。關(guān)鍵詞:算法設(shè)計(jì);事件;Eclipse1西安文理學(xué)院信息工程學(xué)院 課程設(shè)計(jì)報(bào)告目 錄摘 要 II第一章 課題背景(或緒論、概述)11.1 設(shè)計(jì)目的11.2基本理論依據(jù)和主要工作內(nèi)容1第二章 設(shè)計(jì)簡(jiǎn)介及設(shè)計(jì)方案論述22.1功能需求 22.2功能模塊2第三章 詳細(xì)設(shè)計(jì)33.1 總體設(shè)計(jì)33.1.

8、1總體功能圖33.1 主要技術(shù)4第四章 設(shè)計(jì)結(jié)果及分析54.1設(shè)計(jì)結(jié)果截圖5參考文獻(xiàn)7源代碼8第一章 課題背景(或緒論、概述)1.1 設(shè)計(jì)目的1使學(xué)生更深入地理解和掌握該課程中的有關(guān)基本概念,程序設(shè)計(jì)思想和方法。2培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)獨(dú)立完成課題的能力。3培養(yǎng)學(xué)生勇于探索、嚴(yán)謹(jǐn)推理、實(shí)事求是、有錯(cuò)必改,用實(shí)踐來(lái)檢驗(yàn)理論,全方位考慮問(wèn)題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。4提高學(xué)生對(duì)工作認(rèn)真負(fù)責(zé)、一絲不茍,對(duì)同學(xué)團(tuán)結(jié)友愛(ài),協(xié)作攻關(guān)的基本素質(zhì)。5培養(yǎng)學(xué)生從資料文獻(xiàn)、科學(xué)實(shí)驗(yàn)中獲得知識(shí)的能力,提高學(xué)生從別人經(jīng)驗(yàn)中找到解決問(wèn)題的新途徑的悟性,初步培養(yǎng)工程意識(shí)和創(chuàng)新能力。6對(duì)學(xué)生掌握知識(shí)的深度、運(yùn)用理論去處

9、理問(wèn)題的能力、實(shí)驗(yàn)?zāi)芰?、課程設(shè)計(jì)能力、書(shū)面及口頭表達(dá)能力進(jìn)行考核。1.2基本理論依據(jù)和主要工作內(nèi)容掃雷游戲主要用了一個(gè)10行10列的二維數(shù)組,剛開(kāi)始利用random隨機(jī)布雷。每一個(gè)程序最主要的是算法。掃雷游戲算法的重點(diǎn)是一開(kāi)始統(tǒng)計(jì)好每個(gè)格子周?chē)卸嗌倮?,?dāng)鼠標(biāo)左鍵點(diǎn)在格子上時(shí)做出判斷,如果周?chē)?個(gè)格子有雷則顯示出雷數(shù),如果沒(méi)有雷則顯示空白格(在四個(gè)角的格子顯示周?chē)?個(gè)格子,其它邊緣的格子顯示周?chē)?個(gè)的狀態(tài)),我們?cè)谥骱瘮?shù)中用兩個(gè)for語(yǔ)句來(lái)判斷周?chē)讛?shù)。我們還加了鼠標(biāo)處理函數(shù)。如果格子上有雷則調(diào)用函數(shù)actionpeformed (),顯示“你踩到地雷了,按確定重來(lái)", "

10、踩到地雷”,游戲結(jié)束。若所有的雷都標(biāo)出,且所有的格子都處理過(guò),則調(diào)用函數(shù)isWin (),顯示“您挖完了所有的雷,您勝利了!", "勝利",游戲結(jié)束。游戲結(jié)束后,按任意鍵出去。第二章 設(shè)計(jì)簡(jiǎn)介及設(shè)計(jì)方案論述2.1功能需求 1.本游戲結(jié)構(gòu)較為簡(jiǎn)單,可以自行設(shè)置設(shè)置雷數(shù),以此來(lái)控制掃雷的難度系數(shù); 2.提示區(qū)下方將顯示總雷數(shù),并可以通過(guò)點(diǎn)擊右鍵來(lái)標(biāo)明疑似有雷的區(qū)域的數(shù)目;   3.單擊鼠標(biāo)左鍵于未知區(qū)域,如果未知區(qū)域有雷,游戲提示:“你踩到地雷了,按確定重來(lái)”;如果沒(méi)有雷,當(dāng)需要檢測(cè)的單元格本身無(wú)地雷的情況下,統(tǒng)計(jì)周?chē)?/p>

11、的地雷個(gè)數(shù),則顯示周?chē)讛?shù),然后判斷是否挖完所有的雷;如果周?chē)鷽](méi)雷,則再查看周?chē)藗€(gè)區(qū)域是否有雷直到有雷為止,并顯示周?chē)椎臄?shù)目;4.單擊鼠標(biāo)右鍵于未知區(qū)域,則顯示F,將其標(biāo)識(shí)有雷。在該位置再次單擊右鍵則視為不確定,顯示Q,單擊第三次,取消設(shè)置,Q消失; 5.如果該數(shù)字方塊周?chē)乩滓呀?jīng)完全標(biāo)識(shí)出,雙擊該數(shù)字所在方塊,將快速翻開(kāi)所有周?chē)皇堑乩椎姆綁K,并顯示,直到有雷為止; 6.將雷全部掃完后,會(huì)出現(xiàn)一個(gè)提示框,顯示游戲勝利。2.2功能模塊(1)游戲界面 (2)布雷 (3)鼠標(biāo)事件 (4)地雷判斷 (5)游戲勝利(結(jié)束) (6

12、)游戲失敗(結(jié)束) (7)游戲設(shè)置(地雷數(shù)量) 第三章 詳細(xì)設(shè)計(jì)3.1 總體設(shè)計(jì)游戲的操作方面主要以鼠標(biāo)為主,當(dāng)鼠標(biāo)左鍵單擊方塊時(shí)即表示打開(kāi)方塊,當(dāng)鼠標(biāo)右鍵單擊方塊時(shí)即表示標(biāo)識(shí)或疑似地雷,反復(fù)單擊右鍵則方塊會(huì)以“未標(biāo)識(shí)標(biāo)識(shí)疑似”三者關(guān)系不斷循環(huán)。游戲者可以通過(guò)地雷區(qū)內(nèi)的數(shù)字提示了解以數(shù)字為中心的其周邊八個(gè)方格內(nèi)所含的地雷數(shù),假若打開(kāi)的方塊顯示數(shù)字“3”,則表示以其為中心的周邊方塊內(nèi)藏有3個(gè)地雷。 當(dāng)打開(kāi)的方塊不是地雷,且周邊八個(gè)方塊也都沒(méi)有地雷時(shí),方塊會(huì)以被打開(kāi)方塊的八個(gè)方向?qū)⒖瞻追綁K打開(kāi)。 系統(tǒng)的總體設(shè)計(jì)是對(duì)整個(gè)系統(tǒng)的結(jié)構(gòu)化設(shè)計(jì),包括系統(tǒng)基本功能的設(shè)計(jì)

13、、系統(tǒng)流程的設(shè)計(jì)和各個(gè)功能模塊的設(shè)計(jì)等。 3.1.1總體功能圖掃雷游戲主界面排雷設(shè)置地雷書(shū)成功失敗3.1 主要技術(shù) 1.鼠標(biāo)消息處理函數(shù); actionPerformed(ActionEvent e) mouseClicked(MouseEvent e) 2.分模塊實(shí)現(xiàn)較復(fù)雜的程序設(shè)計(jì) 設(shè)置地雷數(shù) 布雷 計(jì)算周?chē)讛?shù) 判斷是否挖完所有雷 3.掃雷游戲算法開(kāi)始統(tǒng)計(jì)好每個(gè)格子周?chē)卸嗌倮?,?dāng)鼠標(biāo)左鍵點(diǎn)在格子上時(shí)做出判斷,如果周?chē)?個(gè)格子有雷則顯示出雷數(shù),如果沒(méi)有雷則顯示空白格(在四個(gè)角的格子顯示周?chē)?個(gè)格子,其它邊緣的格子顯示周?chē)?個(gè)的狀態(tài)),我們?cè)谥骱瘮?shù)中用兩個(gè)for語(yǔ)句來(lái)判斷周?chē)讛?shù)

14、。我們還加了鼠標(biāo)處理函數(shù)。第四章 設(shè)計(jì)結(jié)果及分析4.1設(shè)計(jì)結(jié)果截圖圖4-1圖4-2總結(jié)主要包括:正文 (小四號(hào)字 宋體)(1)對(duì)設(shè)計(jì)工作及所設(shè)計(jì)的系統(tǒng)特性的概括和總結(jié),所采用的關(guān)鍵技術(shù)及算法介紹,運(yùn)行結(jié)果分析評(píng)價(jià)及效率評(píng)價(jià),系統(tǒng)還有待于改進(jìn)的方面等等;(2)本次課程設(shè)計(jì)/項(xiàng)目設(shè)計(jì)的感悟等。參考文獻(xiàn)參考文獻(xiàn)采用順序編碼制格式著錄。主要責(zé)任者,三名以內(nèi)的,全部列出;超過(guò)三名時(shí),后面加“等.”字樣。參考文獻(xiàn)類(lèi)型及標(biāo)識(shí):參考文獻(xiàn)類(lèi)型專(zhuān)著論文集報(bào)紙文章期刊文章學(xué)位論文報(bào)告標(biāo)準(zhǔn)專(zhuān)利文獻(xiàn)類(lèi)型標(biāo)識(shí)MCNJDRSP其他未作說(shuō)明的文獻(xiàn),建議采用單字母“Z”。參考文獻(xiàn)編排格式(注意嚴(yán)格使用格式中的符號(hào),特別注意區(qū)分

15、“,”與“.”):(1)對(duì)于專(zhuān)著、論文集、學(xué)位論文、報(bào)告,格式如下:序號(hào) 主要責(zé)任者文獻(xiàn)題名X出版地:出版者,出版年起止頁(yè)碼其中X代表文獻(xiàn)類(lèi)型標(biāo)識(shí)。(2)對(duì)于期刊文章,格式如下:序號(hào) 主要責(zé)任者文獻(xiàn)題名J刊名,年,卷(期):起止頁(yè)碼(3)對(duì)于報(bào)紙文章,格式如下:序號(hào) 主要責(zé)任者文獻(xiàn)題名N報(bào)紙名,出版日期(版次)(4)對(duì)于國(guó)際、國(guó)家標(biāo)準(zhǔn),格式如下:序號(hào) 標(biāo)準(zhǔn)編號(hào),標(biāo)準(zhǔn)名稱(chēng)S (5)對(duì)于專(zhuān)利,格式如下:序號(hào) 專(zhuān)利所有者專(zhuān)利題名P專(zhuān)利國(guó)別:專(zhuān)利號(hào),出版日期(6)對(duì)于未定義類(lèi)型的文獻(xiàn)序號(hào) 主要責(zé)任者文獻(xiàn)題名Z出版地:出版者,出版年例:(1)參考文獻(xiàn)為書(shū)籍的,格式如下:1 胡克. 常用不等式M. 武漢:

16、 武漢大學(xué)出版社, 2003.(2)參考文獻(xiàn)為期刊上的文章的,格式如下:1 孟志青. 時(shí)態(tài)數(shù)據(jù)采掘中的時(shí)態(tài)型與時(shí)間粒度研究, 湘潭大學(xué)學(xué)報(bào)(自然科學(xué)版)J. 2000, 22(3): 1-4.注:參考文獻(xiàn)中的標(biāo)點(diǎn)符號(hào)一律采用英文格式下的。源代碼import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Frame extends JFrame JTextField text; JLabel nowBomb, setBomb; int BombNum, BlockNum; / 當(dāng)前雷數(shù),當(dāng)前方塊數(shù) int

17、 rightBomb, restBomb, restBlock; / 找到的地雷數(shù),剩余雷數(shù),剩余方塊數(shù) JButton start = new JButton(" 開(kāi)始 "); JPanel MenuPamel = new JPanel(); JPanel bombPanel = new JPanel(); Bomb bombButton; JPanel c; BorderLayout borderLayout1 = new BorderLayout();/BorderLayout是frame和Jframe的默認(rèn)布局,是邊界布局管理器 GridLayout gridLay

18、out1 = new GridLayout();/表格布局管理器 public Frame() try /try代碼塊中編寫(xiě)可能發(fā)生異常的java語(yǔ)句,catch代碼塊中編寫(xiě)針對(duì)異常進(jìn)行的處理的代碼。 setDefaultCloseOperation(EXIT_ON_CLOSE); jbInit(); catch (Exception exception) exception.printStackTrace(); /設(shè)置界面private void jbInit() throws Exception c = (JPanel) getContentPane(); setTitle("掃

19、雷"); c.setBackground(Color.WHITE); MenuPamel.setBackground(Color.GRAY); c.setLayout(borderLayout1); setSize(new Dimension(600, 600); setResizable(false); BlockNum = 144; BombNum = 10; text = new JTextField("10 ", 3); nowBomb = new JLabel("當(dāng)前雷數(shù)" + ":" + BombNum); se

20、tBomb = new JLabel("設(shè)置地雷數(shù)"); start.addActionListener(new Frame1_start_actionAdapter(this); MenuPamel.add(setBomb); MenuPamel.add(text); MenuPamel.add(start); MenuPamel.add(nowBomb); c.add(MenuPamel, java.awt.BorderLayout.SOUTH); bombPanel.setLayout(gridLayout1);/設(shè)置窗體 gridLayout1.setColumns

21、( (int) Math.sqrt(BlockNum); gridLayout1.setRows( (int) Math.sqrt(BlockNum);/指定行數(shù) bombButton = new Bomb (int) Math.sqrt(BlockNum) (int) Math.sqrt(BlockNum); for (int i = 0; i < (int) Math.sqrt(BlockNum); i+) for (int j = 0; j < (int) Math.sqrt(BlockNum); j+) bombButtonij = new Bomb(i, j); /bom

22、bButtonij.setSize(10, 10); bombButtonij.setFont(new Font("", Font.PLAIN, 14);/設(shè)置字體大小 bombButtonij.setForeground(Color.white); bombButtonij.addMouseListener(new Bomb_mouseAdapter(this); bombButtonij.addActionListener(new Bomb_actionAdapter(this); bombPanel.add(bombButtonij); c.add(bombPanel

23、, java.awt.BorderLayout.CENTER); startBomb(); /* 開(kāi)始按鈕 */ public void start_actionPerformed(ActionEvent e) int num=Integer.parseInt(text.getText().trim(); if (num >= 5 && num < 50) BombNum = num; startBomb(); else if (num < 5) JOptionPane.showMessageDialog(null, "您設(shè)置的地雷數(shù)太少了,請(qǐng)重設(shè)!

24、", "錯(cuò)誤", JOptionPane.ERROR_MESSAGE); num=10; BombNum = num; else JOptionPane.showMessageDialog(null, "您設(shè)置的地雷數(shù)太多了,請(qǐng)重設(shè)!", "錯(cuò)誤", JOptionPane.ERROR_MESSAGE); num=10; BombNum = num; /* 開(kāi)始,布雷 */ public void startBomb() nowBomb.setText("當(dāng)前雷數(shù)" + ":" + B

25、ombNum); for (int i = 0; i < (int) Math.sqrt(BlockNum); i+) for (int j = 0; j < (int) Math.sqrt(BlockNum); j+) bombButtonij.isBomb = false; bombButtonij.isClicked = false; bombButtonij.isRight = false; bombButtonij.BombFlag = 0; bombButtonij.BombRoundCount = 9; bombButtonij.setEnabled(true); b

26、ombButtonij.setText(""); bombButtonij.setFont(new Font("", Font.PLAIN, 14);/設(shè)置字體大小 bombButtonij.setForeground(Color.BLUE); rightBomb = 0; restBomb = BombNum; restBlock = BlockNum - BombNum; for (int i = 0; i < BombNum; ) int x = (int) (Math.random() * (int) (Math.sqrt(BlockNum

27、) - 1); int y = (int) (Math.random() * (int) (Math.sqrt(BlockNum) - 1); if (bombButtonxy.isBomb != true) bombButtonxy.isBomb = true; i+; CountRoundBomb(); /* 計(jì)算方塊周?chē)讛?shù) */ public void CountRoundBomb() for (int i = 0; i < (int) Math.sqrt(BlockNum); i+) for (int j = 0; j < (int) Math.sqrt(BlockNum

28、); j+) int count = 0; / 當(dāng)需要檢測(cè)的單元格本身無(wú)地雷的情況下,統(tǒng)計(jì)周?chē)牡乩讉€(gè)數(shù) if (bombButtonij.isBomb != true) for (int x = i - 1; x < i + 2; x+) for (int y = j - 1; y < j + 2; y+) if ( (x >= 0) && (y >= 0) && (x < ( (int) Math.sqrt(BlockNum) && (y < ( (int) Math.sqrt(BlockNum) if (

29、bombButtonxy.isBomb = true) count+; bombButtonij.BombRoundCount = count; /* 是否挖完了所有的雷 */ public void isWin() restBlock = BlockNum - BombNum; for (int i = 0; i < (int) Math.sqrt(BlockNum); i+) for (int j = 0; j < (int) Math.sqrt(BlockNum); j+) if (bombButtonij.isClicked = true) restBlock-; if (

30、rightBomb = BombNum | restBlock = 0) JOptionPane.showMessageDialog(this, "您挖完了所有的雷,您勝利了!", "勝利", JOptionPane.INFORMATION_MESSAGE); startBomb(); /* 當(dāng)選中的位置為空,則翻開(kāi)周?chē)牡貓D* */ public void isNull(Bomb ClickedButton) int i, j; i = ClickedButton.num_x; j = ClickedButton.num_y; for (int x =

31、 i - 1; x < i + 2; x+) for (int y = j - 1; y < j + 2; y+) if ( ( (x != i) | (y != j) && (x >= 0) && (y >= 0) && (x < ( (int) Math.sqrt(BlockNum) && (y < ( (int) Math.sqrt(BlockNum) if (bombButtonxy.isBomb = false && bombButtonxy.isClicked = f

32、alse && bombButtonxy.isRight = false) turn(bombButtonxy); /* 翻開(kāi) */ public void turn(Bomb ClickedButton) ClickedButton.setEnabled(false); ClickedButton.isClicked = true; if (ClickedButton.BombRoundCount > 0) ClickedButton.setText(ClickedButton.BombRoundCount + ""); else isNull(Cl

33、ickedButton); /* 左鍵點(diǎn)擊 */ public void actionPerformed(ActionEvent e) if ( ( (Bomb) e.getSource().isClicked = false && ( (Bomb) e.getSource().isRight = false) if ( ( (Bomb) e.getSource().isBomb = false) turn( ( (Bomb) e.getSource(); isWin(); else for (int i = 0; i < (int) Math.sqrt(BlockNum

34、); i+) for (int j = 0; j < (int) Math.sqrt(BlockNum); j+) if (bombButtonij.isBomb = true) bombButtonij.setText("b"); ( (Bomb) e.getSource().setForeground(Color.RED); ( (Bomb) e.getSource().setFont(new Font("", Font.BOLD, 20); ( (Bomb) e.getSource().setText("X"); JOpt

35、ionPane.showMessageDialog(this, "你踩到地雷了,按確定重來(lái)", "踩到地雷", 2); startBomb(); /* 右鍵點(diǎn)擊 */ public void mouseClicked(MouseEvent e) Bomb bombSource = (Bomb) e.getSource(); boolean right = SwingUtilities.isRightMouseButton(e); if ( (right = true) && (bombSource.isClicked = false) b

36、ombSource.BombFlag = (bombSource.BombFlag + 1) % 3; if (bombSource.BombFlag = 1) if (restBomb > 0) bombSource.setForeground(Color.RED); bombSource.setText("F"); bombSource.isRight = true; restBomb-; else bombSource.BombFlag = 0; else if (bombSource.BombFlag = 2) restBomb+; bombSource.setText("Q"); bombSource.isRight = false; else bombSource.setText(""); if (bombSource.isBo

溫馨提示

  • 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)論