掃雷的課程設(shè)計(jì)報(bào)告_第1頁
掃雷的課程設(shè)計(jì)報(bào)告_第2頁
掃雷的課程設(shè)計(jì)報(bào)告_第3頁
掃雷的課程設(shè)計(jì)報(bào)告_第4頁
掃雷的課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

2、綜合設(shè)計(jì)的情況另行規(guī)定。5、平時(shí)表現(xiàn)成績低于6分的學(xué)生,取消答辯資格,其本項(xiàng)綜合設(shè)計(jì)成績按不及格處理。專心-專注-專業(yè)信息工程學(xué)院課程設(shè)計(jì)任務(wù)書學(xué)生姓名樊秀琳學(xué)號(hào)專業(yè)班級(jí)軟件工程13級(jí)四班設(shè)計(jì)題目實(shí)現(xiàn)一個(gè)N*M的掃雷游戲內(nèi)容概要:(包含要求采用的設(shè)計(jì)環(huán)境或開發(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)教師: 院長: 日 期:2015年6月22日信息工程學(xué)院課程設(shè)計(jì)進(jìn)度安排表學(xué)生姓名: 樊秀琳 學(xué)號(hào): 專業(yè): 軟件工程 班級(jí): 13級(jí)四班 起止日期內(nèi) 容備注6月22日 6月 23日下任務(wù)書;收集、閱讀、整理相關(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)功能集成、系統(tǒng)調(diào)試與測(cè)試,按照

4、模板要求撰寫課程設(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)行成績?cè)u(píng)定。指導(dǎo)教師簽名: 2014年6月22日成績?cè)u(píng)定表學(xué)生姓名: 樊秀琳 學(xué)號(hào): 專業(yè): 軟件工程 班級(jí): 13級(jí)四班 類別合計(jì)分值各項(xiàng)分值評(píng)分標(biāo)準(zhǔn)實(shí)際得分合計(jì)得分平時(shí)表現(xiàn)1010按時(shí)參加設(shè)計(jì)指導(dǎo),無違反紀(jì)律情況。完成情況3020按設(shè)計(jì)任務(wù)書的要求完成了全部任務(wù),能完整演示其設(shè)計(jì)內(nèi)容,符合要求。10能對(duì)其設(shè)計(jì)內(nèi)容進(jìn)行詳細(xì)、完整的介紹,并能就指導(dǎo)教師提出的問題進(jìn)行正確的回答。報(bào)告質(zhì)量3510報(bào)告文字通順,內(nèi)容翔實(shí),論述充分、完整,立論正確,結(jié)構(gòu)嚴(yán)謹(jǐn)合理;報(bào)告字?jǐn)?shù)符合相關(guān)要求,工整

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

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

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

8、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í)踐來檢驗(yàn)理論,全方位考慮問題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。4提高學(xué)生對(duì)工作認(rèn)真負(fù)責(zé)、一絲不茍,對(duì)同學(xué)團(tuán)結(jié)友愛,協(xié)作攻關(guān)的基本素質(zhì)。5培養(yǎng)學(xué)生從資料文獻(xiàn)、科學(xué)實(shí)驗(yàn)中獲得知識(shí)的能力,提高學(xué)生從別人經(jīng)驗(yàn)中找到解決問題的新途徑的悟性,初步培養(yǎng)工程意識(shí)和創(chuàng)新能力。6對(duì)學(xué)生掌握知識(shí)的深度、運(yùn)用理論去處理問題的能力、實(shí)驗(yàn)?zāi)芰Α⒄n程設(shè)計(jì)能力、書面及口頭表達(dá)能力進(jìn)行考核。1.2基本理論依據(jù)

9、和主要工作內(nèi)容掃雷游戲主要用了一個(gè)10行10列的二維數(shù)組,剛開始利用random隨機(jī)布雷。每一個(gè)程序最主要的是算法。掃雷游戲算法的重點(diǎn)是一開始統(tǒng)計(jì)好每個(gè)格子周圍有多少雷,當(dāng)鼠標(biāo)左鍵點(diǎn)在格子上時(shí)做出判斷,如果周圍8個(gè)格子有雷則顯示出雷數(shù),如果沒有雷則顯示空白格(在四個(gè)角的格子顯示周圍3個(gè)格子,其它邊緣的格子顯示周圍5個(gè)的狀態(tài)),我們?cè)谥骱瘮?shù)中用兩個(gè)for語句來判斷周圍雷數(shù)。我們還加了鼠標(biāo)處理函數(shù)。如果格子上有雷則調(diào)用函數(shù)actionpeformed (),顯示“你踩到地雷了,按確定重來", "踩到地雷”,游戲結(jié)束。若所有的雷都標(biāo)出,且所有的格子都處理過,則調(diào)用函數(shù)isWin

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

11、區(qū)域是否有雷直到有雷為止,并顯示周圍雷的數(shù)目;4.單擊鼠標(biāo)右鍵于未知區(qū)域,則顯示F,將其標(biāo)識(shí)有雷。在該位置再次單擊右鍵則視為不確定,顯示Q,單擊第三次,取消設(shè)置,Q消失; 5.如果該數(shù)字方塊周圍地雷已經(jīng)完全標(biāo)識(shí)出,雙擊該數(shù)字所在方塊,將快速翻開所有周圍不是地雷的方塊,并顯示,直到有雷為止; 6.將雷全部掃完后,會(huì)出現(xiàn)一個(gè)提示框,顯示游戲勝利。2.2功能模塊(1)游戲界面 (2)布雷 (3)鼠標(biāo)事件 (4)地雷判斷 (5)游戲勝利(結(jié)束) (6)游戲失?。ńY(jié)束) (7)游戲設(shè)置(地雷數(shù)量) 第三章 詳細(xì)設(shè)計(jì)

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

13、面排雷設(shè)置地雷書成功失敗3.1 主要技術(shù) 1.鼠標(biāo)消息處理函數(shù); actionPerformed(ActionEvent e) mouseClicked(MouseEvent e) 2.分模塊實(shí)現(xiàn)較復(fù)雜的程序設(shè)計(jì) 設(shè)置地雷數(shù) 布雷 計(jì)算周圍雷數(shù) 判斷是否挖完所有雷 3.掃雷游戲算法開始統(tǒng)計(jì)好每個(gè)格子周圍有多少雷,當(dāng)鼠標(biāo)左鍵點(diǎn)在格子上時(shí)做出判斷,如果周圍8個(gè)格子有雷則顯示出雷數(shù),如果沒有雷則顯示空白格(在四個(gè)角的格子顯示周圍3個(gè)格子,其它邊緣的格子顯示周圍5個(gè)的狀態(tài)),我們?cè)谥骱瘮?shù)中用兩個(gè)for語句來判斷周圍雷數(shù)。我們還加了鼠標(biāo)處理函數(shù)。第四章 設(shè)計(jì)結(jié)果及分析4.1設(shè)計(jì)結(jié)果截圖圖4-1圖4-2總

14、結(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)的,全部列出;超過三名時(shí),后面加“等.”字樣。參考文獻(xiàn)類型及標(biāo)識(shí):參考文獻(xiàn)類型專著論文集報(bào)紙文章期刊文章學(xué)位論文報(bào)告標(biāo)準(zhǔn)專利文獻(xiàn)類型標(biāo)識(shí)MCNJDRSP其他未作說明的文獻(xiàn),建議采用單字母“Z”。參考文獻(xiàn)編排格式(注意嚴(yán)格使用格式中的符號(hào),特別注意區(qū)分“,”與“.”):(1)對(duì)于專著、論文集、學(xué)位論文、報(bào)告,格式如下:序號(hào) 主要責(zé)任者

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

16、 時(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 rightBomb, restBomb, restBlock; / 找到的地雷數(shù),

17、剩余雷數(shù),剩余方塊數(shù) JButton start = new JButton(" 開始 "); JPanel MenuPamel = new JPanel(); JPanel bombPanel = new JPanel(); Bomb bombButton; JPanel c; BorderLayout borderLayout1 = new BorderLayout();/BorderLayout是frame和Jframe的默認(rèn)布局,是邊界布局管理器 GridLayout gridLayout1 = new GridLayout();/表格布局管理器 public Fr

18、ame() try /try代碼塊中編寫可能發(fā)生異常的java語句,catch代碼塊中編寫針對(duì)異常進(jìn)行的處理的代碼。 setDefaultCloseOperation(EXIT_ON_CLOSE); jbInit(); catch (Exception exception) exception.printStackTrace(); /設(shè)置界面private void jbInit() throws Exception c = (JPanel) getContentPane(); setTitle("掃雷"); c.setBackground(Color.WHITE); Me

19、nuPamel.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); setBomb = new JLabel("設(shè)置地雷數(shù)"); sta

20、rt.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( (int) Math.sqrt(BlockNum); gridLayout1.s

21、etRows( (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); /bombButtonij.setSize(10, 10); bombButtonij.se

22、tFont(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, java.awt.BorderLayout.CENTER); startBomb

23、(); /* 開始按鈕 */ 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è)!", "錯(cuò)誤", JOptionPane.ERROR_

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

25、.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); bombButtonij.setText(""); bombBut

26、tonij.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) - 1); int y = (int) (Math.random() * (in

27、t) (Math.sqrt(BlockNum) - 1); if (bombButtonxy.isBomb != true) bombButtonxy.isBomb = true; i+; CountRoundBomb(); /* 計(jì)算方塊周圍雷數(shù) */ public void CountRoundBomb() for (int i = 0; i < (int) Math.sqrt(BlockNum); i+) for (int j = 0; j < (int) Math.sqrt(BlockNum); j+) int count = 0; / 當(dāng)需要檢測(cè)的單元格本身無地雷的情況下

28、,統(tǒng)計(jì)周圍的地雷個(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 (bombButtonxy.isBomb = true) count+; bombBu

29、ttonij.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 (rightBomb = BombNum | restBlock = 0) JOpti

30、onPane.showMessageDialog(this, "您挖完了所有的雷,您勝利了!", "勝利", JOptionPane.INFORMATION_MESSAGE); startBomb(); /* 當(dāng)選中的位置為空,則翻開周圍的地圖* */ public void isNull(Bomb ClickedButton) int i, j; i = ClickedButton.num_x; j = ClickedButton.num_y; for (int x = i - 1; x < i + 2; x+) for (int y = j -

31、 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 = false && bombButtonxy.isRight = fal

32、se) turn(bombButtonxy); /* 翻開 */ public void turn(Bomb ClickedButton) ClickedButton.setEnabled(false); ClickedButton.isClicked = true; if (ClickedButton.BombRoundCount > 0) ClickedButton.setText(ClickedButton.BombRoundCount + ""); else isNull(ClickedButton); /* 左鍵點(diǎn)擊 */ public void actio

33、nPerformed(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); i+) for (int j = 0; j < (int) Math.s

34、qrt(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"); JOptionPane.showMessageDialog(this, "你踩到地

35、雷了,按確定重來", "踩到地雷", 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) bombSource.BombFlag = (bombSource.BombFlag

36、+ 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.isBomb

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論