版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、徐州工程學(xué)院課程設(shè)計(jì)報(bào)告 成 績(jī)10信計(jì)2011-2012(二)Java程序設(shè)計(jì)課程設(shè)計(jì)設(shè)計(jì)題目 Java掃雷游戲課程設(shè)計(jì) 設(shè)計(jì)時(shí)間 2012.6.18 至 2012.6.24 學(xué)生姓名 盧浩洋 學(xué)生學(xué)號(hào) 20100405130 所在班級(jí) 10信計(jì)(1)班 指導(dǎo)教師 劉 風(fēng) 華 徐州工程學(xué)院數(shù)學(xué)與物理科學(xué)學(xué)院摘要掃雷游戲最初是由微軟公司xp系統(tǒng)自帶的一種小游戲,整個(gè)游戲界面簡(jiǎn)單而且容易操作,深受各位玩家的喜愛(ài)。這個(gè)游戲一共分為4個(gè)等級(jí),分別為初級(jí)、中級(jí)、高級(jí)和超高級(jí)等幾個(gè)等級(jí),在代碼中定義了一個(gè)公共函數(shù)public void 級(jí)別雷布局(int row1,int co1,int 雷數(shù)1),各種
2、級(jí)別的實(shí)現(xiàn)只需要改變實(shí)參的大小就能實(shí)現(xiàn)級(jí)別的差異,操作簡(jiǎn)單,節(jié)省了大量的代碼,加快了程序的運(yùn)行速度。掃雷的整體布局采用了GridLayout布局,整體布局都是用JButton按鈕組成,再分別設(shè)置MouseListener監(jiān)視器,分別通過(guò)鼠標(biāo)左鍵或者右鍵對(duì)其進(jìn)行控制。通過(guò)繼承JFrame窗口來(lái)進(jìn)行窗口的實(shí)現(xiàn)。并且通過(guò)public void 創(chuàng)建圖形界面()方法來(lái)實(shí)現(xiàn)窗口的其他布局。雷數(shù)的判斷是采用八個(gè)if( )語(yǔ)句對(duì)周?chē)藗€(gè)按鈕進(jìn)行判斷,并調(diào)用相應(yīng)雷數(shù)的圖片顯示在該按鈕上,對(duì)于周?chē)鸁o(wú)雷地按鈕,也將會(huì)使用八個(gè)if( )語(yǔ)句,把其周?chē)陌藗€(gè)雷給翻開(kāi)。最后在插旗的控制上,采用對(duì)每一個(gè)按鈕添加一個(gè)fla
3、g變量,來(lái)對(duì)自己進(jìn)行加鎖與解鎖,如果一旦該按鈕加了鎖,再左擊該按鈕將不會(huì)有任何反應(yīng),只有解鎖后才能將其翻開(kāi)。關(guān)鍵字 掃雷游戲;監(jiān)視器;雷數(shù);解鎖 徐州工程學(xué)院課程設(shè)計(jì)報(bào)告目 錄1 需求分析11.1 掃雷游戲概述11.2 掃雷的操作方法11.3 掃雷游戲的基本規(guī)則11.4 有背景音樂(lè)支持11.5 游戲的幫助12 設(shè)計(jì)方法及設(shè)計(jì)方案22.1掃雷的整體布局22.2雷區(qū)的整體設(shè)置22.3 音效的設(shè)置23系統(tǒng)設(shè)計(jì)33.1 模塊設(shè)計(jì)33.2雷區(qū)布局設(shè)計(jì)34系統(tǒng)的開(kāi)發(fā)和運(yùn)行環(huán)境及安裝配置說(shuō)明44.1 系統(tǒng)開(kāi)發(fā)和運(yùn)行環(huán)境44.2 安裝配置說(shuō)明45系統(tǒng)實(shí)現(xiàn)55.1代碼分析55.1.1 主類(lèi)中成員變量的管理55.
4、1.2 成員方法55.2 運(yùn)行結(jié)果的代碼實(shí)現(xiàn)66總結(jié)與心得體會(huì)10參考文獻(xiàn)11附錄12徐州工程學(xué)院課程設(shè)計(jì)報(bào)告需求分析1.1.掃雷游戲概述掃雷游戲,是Windows操作系統(tǒng)自帶的一款經(jīng)典游戲。其規(guī)則簡(jiǎn)單,上手容易,不論男女老少皆可娛樂(lè)。掃雷的目的就是要把所有非地雷的格子揭開(kāi)即勝利。踩到地雷格子就算失敗。掃雷是一款非常經(jīng)典的游戲,到現(xiàn)在為止還是有許多人玩這款游戲。掃雷游戲過(guò)程就是排除布在面板上的所有地雷,在左擊面板上按鈕的時(shí)候,可能有三種情況出現(xiàn):1.點(diǎn)的是地雷,游戲挑戰(zhàn)失敗,2.點(diǎn)的是空白區(qū)域,將會(huì)將周?chē)囊恍┌粹o炸開(kāi),3.點(diǎn)的那個(gè)按鈕有數(shù)字,那數(shù)字是顯示,該按鈕周?chē)藗€(gè)按鈕中有多少個(gè)地雷。1
5、.2.掃雷的操作方法游戲主區(qū)域由很多個(gè)方格組成。使用鼠標(biāo)隨機(jī)點(diǎn)擊一個(gè)方格,方格即被打開(kāi)并顯示出方格中的數(shù)字;方格中數(shù)字則表示其周?chē)?個(gè)方格隱藏了幾顆雷;如果點(diǎn)開(kāi)的格子為空白格,即其周?chē)?顆雷,則其周?chē)褡幼詣?dòng)打開(kāi)。例如,方格中出現(xiàn)1,說(shuō)明上下左右及斜角合計(jì)有一顆雷,依次類(lèi)推,2則有2顆,3則有3顆。在確實(shí)是地雷的方格上點(diǎn)了旗子,就安全了,不是地雷的被點(diǎn)了旗子,后面會(huì)被炸死。在不確定是否是地雷的方格上用右鍵標(biāo)示"?"符號(hào),表示懷疑這個(gè)格子是地雷。這樣格子在自動(dòng)打開(kāi)時(shí),被標(biāo)示的格子就不會(huì)被打開(kāi),導(dǎo)致游戲結(jié)束。1.3.掃雷游戲的基本規(guī)則在游戲中,當(dāng)玩家不小心踩到地雷格子就算失
6、敗。而當(dāng)?shù)乩子?jì)數(shù)器中的數(shù)字變成0時(shí),說(shuō)明地雷全部被查到,游戲結(jié)束,玩家勝利。1.4.有背景音樂(lè)支持在游戲中,我添加了適當(dāng)?shù)谋尘耙魳?lè)以便掃雷的時(shí)候能夠輕松應(yīng)對(duì),另外,我還在碰到雷區(qū)的時(shí)候能夠以音樂(lè)的時(shí)候提示。1.5.游戲的幫助在游戲界面中需要提供游戲使用說(shuō)明等幫助提示,以方便對(duì)本游戲不了解的玩家對(duì)游戲進(jìn)行操作和使用。2.設(shè)計(jì)方法及設(shè)計(jì)方案2.1.掃雷的整體布局系統(tǒng)的整體布局為:BordLayout布局, 總共設(shè)置了4個(gè)面板JPanel,其中有兩個(gè)P1,P3一起嵌套在P面板中,在P面板中設(shè)置了BordLayout布局,接下來(lái)就是掃雷區(qū)的整體布局,采用了GridLayout布局,在上面依次添加了n*
7、nd的按鈕構(gòu)成了掃雷的重要組成部分。 (1).開(kāi)始一欄:其中有開(kāi)局、暫停、繼續(xù)、退出、初級(jí)、中級(jí)、高級(jí)、超高級(jí)、自定義、標(biāo)記、顏色、聲音、打雷英雄榜、開(kāi)局。定義了Jmenu,JmenuBar,JmenuItem,之后分別將選項(xiàng)一次添加即可。對(duì)可選項(xiàng)里面的每一項(xiàng)分別設(shè)置監(jiān)視器來(lái)監(jiān)控ActionEvent事件。(2)幫助一欄:目錄、查找?guī)徒M主題、使用幫助、關(guān)于掃雷(3)暫停:暫停,通過(guò)新建一個(gè)線程Thread,調(diào)用stop()方法停止。(4)繼續(xù):繼續(xù)開(kāi)始線程,根據(jù)判斷條件重新調(diào)用run()方法。(5)退出:退出,通過(guò)實(shí)現(xiàn)WindowApater適配器中的方法windowclosing()來(lái)完成界
8、面退出界面。2.2.雷區(qū)的整體設(shè)置 在整個(gè)代碼設(shè)置中總共用到了兩個(gè)類(lèi),分別是public class 掃雷程序和實(shí)現(xiàn)鼠標(biāo)接口的NormoreMouseEvent類(lèi),其中NormoreMouseEvent類(lèi)的作用就是控制鼠標(biāo)點(diǎn)擊按鈕是能觸發(fā)的事件。主要的雷區(qū)的布局就掌握在“掃雷程序”這個(gè)類(lèi)上面。2.3.音效的設(shè)計(jì)AudioStream是sun.audio.AudioPlayer包中一個(gè)流類(lèi); AudioPlayer是sun.audio.AudioPlayer包中的一個(gè)類(lèi)。通過(guò)構(gòu)造音效聲音方法,在“掃雷程序”主類(lèi)中,通過(guò)ActionListener來(lái)監(jiān)視是否已開(kāi)始游戲,來(lái)決定播放計(jì)時(shí)聲,之后又通過(guò)
9、ActionListener來(lái)監(jiān)視是否踩到雷和是否完成來(lái)決定,播放相應(yīng)的音樂(lè)。3.系統(tǒng)設(shè)計(jì)3.1.模塊設(shè)計(jì) 總體模塊圖3.2.雷區(qū)布局設(shè)計(jì)雷區(qū)設(shè)計(jì)流程圖4.系統(tǒng)的開(kāi)發(fā)和運(yùn)行環(huán)境及安裝配置說(shuō)明4.1系統(tǒng)的開(kāi)發(fā)和運(yùn)行環(huán)境 該程序代碼的實(shí)現(xiàn)可以通過(guò)專(zhuān)門(mén)的java編譯運(yùn)行軟件來(lái)編譯運(yùn)行如TextPad等,也可以用命令行窗口進(jìn)行編譯,輸入javac 類(lèi)名.java以及java 類(lèi)名即可。如果是Applet小程序,則必須要在瀏覽器窗口下執(zhí)行,當(dāng)然這個(gè)前提是要安裝java軟件即可(必須要改變環(huán)境變量Path和classPath來(lái)設(shè)置文件編譯的默認(rèn)路徑)。4.2. 安裝配置說(shuō)明首先先下Java(TM)SE D
10、evelopment Kit 6 Update 17.exe安裝到C java母目錄下然后右擊我的電腦 屬性 高級(jí)環(huán)境變量在下面的窗口新建變量名 JAVA_HOME變量值 C:Javajdk1.6.0_17(這一目錄是你JDK的路徑名你如果裝的版本不同就用你)然后在找到一個(gè)叫Path的變量名 把里面的全刪了換成這個(gè) 或者也可以在前面加上去 記著有分號(hào)結(jié)尾C:Javajdk1.6.0_17bin;如果要學(xué)JAVA這個(gè)是不夠的 還要去下個(gè)Eclipse 這個(gè)工具很強(qiáng)大 不過(guò)前面的JDK是一定要裝的 不然有這個(gè)工具也不能編譯。5.系統(tǒng)實(shí)現(xiàn)5.1代碼分析5.1.1.主類(lèi)中成員變量的管理(1).布爾變量
11、boo,boo1:boo控制一開(kāi)始問(wèn)題對(duì)話框的彈出,boo1主要是控制背景音樂(lè)的播放與否。(2).JButton 按鈕;JButton 按鈕組:JButton按鈕主要是開(kāi)始笑臉的控制,Jbutton按鈕組數(shù)組主要是在構(gòu)造整個(gè)GridLayout布局時(shí)構(gòu)建的按鈕數(shù)組,充當(dāng)雷區(qū)的布局。(3).JLabel 標(biāo)簽1;JLabel 標(biāo)簽2;JLabel 標(biāo)簽3:JLabel 標(biāo)簽1主要是時(shí)刻提示各種級(jí)別的雷數(shù)的控制;JLabel 標(biāo)簽2主要是在整個(gè)游戲中控制時(shí)間的流程;JLabel 標(biāo)簽3主要充當(dāng)是提示輸贏情況。(4).Timer timer;timer是一個(gè)線程變量,控制整個(gè)游戲中時(shí)間的狀況,是判斷
12、一個(gè)人游戲能力的重要指標(biāo)。(5).Int row;int col=9;控制按鈕個(gè)數(shù)(6).int 雷數(shù),int b;:控制各個(gè)級(jí)別中雷數(shù)的個(gè)數(shù)。(7)int a:int a1;:對(duì)于雷區(qū)的布局有著很重要的作用。(8).JPanel p,p1,p2,p3:四個(gè)面板主要是將布局布置的美觀。5.1.2.成員方法(1).public 掃雷程序(String s):這個(gè)方法是類(lèi)的構(gòu)造方法,有著awt界面的各種屬性功能以及一些內(nèi)部的各種布局所需要的內(nèi)容,是一個(gè)程序的必不可少的一部分。(2).public static void main(String args):該方法是每一個(gè)程序的最總要的核心方法,創(chuàng)建
13、了窗口對(duì)象,并且設(shè)置了一個(gè)AudioPlayer對(duì)象,來(lái)實(shí)現(xiàn)對(duì)背景音樂(lè)的控制。(3).public void 創(chuàng)建圖形界面():主要是充當(dāng)創(chuàng)建圖形見(jiàn)面的功能,里面新建了各種Jmenu對(duì)象并且創(chuàng)建了面板p2中的按鈕,實(shí)現(xiàn)雷區(qū)布局(4).public void out(int a,JButton 按鈕組,ActionEvent e,int i,int x,int y):主要是對(duì)整個(gè)掃雷的思想的整個(gè)算法,完整實(shí)現(xiàn)了該游戲九宮圖的思想,并且對(duì)雷區(qū)的布局進(jìn)行了詳細(xì)的設(shè)置。(5).public void 級(jí)別雷布局(int row1,int col1,int 雷數(shù)1):這個(gè)方法是對(duì)各種級(jí)別即初級(jí)、中級(jí)、高
14、級(jí)、超高級(jí)的實(shí)現(xiàn)的一個(gè)公共方法,實(shí)現(xiàn)對(duì)級(jí)別的控制只需要傳遞相應(yīng)的參數(shù)即可。(6).public void actionPerformed(ActionEvent e):是“掃雷程序”類(lèi)實(shí)現(xiàn)的ActionListener接口中的方法。當(dāng)用戶(hù)單擊“按鈕組”中的某個(gè)方塊時(shí),actionPerformed(ActionEvent)方法負(fù)責(zé)執(zhí)行有關(guān)算法,例如,當(dāng)用鼠標(biāo)左鍵單擊方塊上的按鈕后,若該方塊下有雷,actionPerformed(ActionEvent)方法將使結(jié)束本局的游戲,若該方塊下無(wú)雷,actionPerformed(ActionEvent)方法將顯示blockView對(duì)象中的標(biāo)簽,該標(biāo)簽
15、上是一個(gè)數(shù)字,該數(shù)字代表當(dāng)前方塊的周?chē)?個(gè)方塊中共有多少顆雷。(7).public void mouseClicked(MouseEvent e):方法是NormoreMouseEvent類(lèi)實(shí)現(xiàn)的MouseListener接口中的方法,當(dāng)用戶(hù)按下鼠標(biāo)有件事mousePressed(MouseEvent)方法負(fù)責(zé)讓方塊上顯示一個(gè)探雷標(biāo)記。5.2運(yùn)行結(jié)果的代碼實(shí)現(xiàn)(運(yùn)行一開(kāi)始的界面)(游戲的級(jí)別選擇)(中級(jí)的界面)(高級(jí)的界面)(超高級(jí)的界面)(失敗后的界面)6.總結(jié)與心得體會(huì)通過(guò)這個(gè)掃雷游戲,我學(xué)到了許多在課本上學(xué)不到的知識(shí)并且也把課本上的知識(shí)結(jié)合運(yùn)用了起來(lái),自己的能力也有了一定程度的提高。我
16、同時(shí)也領(lǐng)悟到了其中的編程的樂(lè)趣所在。當(dāng)然我也遇到了一些問(wèn)題,雖然是很小的問(wèn)題,但可以提高自己編程的能力,而且還可以培養(yǎng)自己編程的嚴(yán)謹(jǐn)性,同時(shí)還可以為以后的編程積累經(jīng)驗(yàn)。編寫(xiě)完這個(gè)掃雷游戲,我發(fā)現(xiàn)自己有很多的不足,我想如果讓我來(lái)單獨(dú)來(lái)編寫(xiě)這個(gè)游戲,我感覺(jué)很困難,因?yàn)檫@個(gè)游戲涉及到好多算法。感觸最深的就是我們真的要扎扎實(shí)實(shí)的打基礎(chǔ)!并且我感覺(jué)到只要我們自己肯下功夫?qū)W習(xí),我們也可以做出很好的東西,不需要每次都抄襲別人的,只有自己的才是最珍貴的!這次課程設(shè)計(jì)通過(guò)把枯燥的的課本知識(shí)變得生動(dòng)有趣,激發(fā)了學(xué)習(xí)的積極性。把學(xué)過(guò)的計(jì)算機(jī)編譯原理的知識(shí)強(qiáng)化,能夠把課堂上學(xué)的知識(shí)通過(guò)自己設(shè)計(jì)的程序表示出來(lái),加深了對(duì)
17、理論知識(shí)的理解?,F(xiàn)在通過(guò)自己動(dòng)手做實(shí)驗(yàn),從實(shí)踐上認(rèn)識(shí)了操作系統(tǒng)是如何處理命令的,課程設(shè)計(jì)中程序比較復(fù)雜,在調(diào)試時(shí)應(yīng)該仔細(xì)。 雖然在過(guò)程當(dāng)中我花了很多的精力和時(shí)間,但是我的java編程能力有了一定程度的提高,我相信再加以一定的努力,我一定會(huì)學(xué)的更好。參考文獻(xiàn)1 王浩. 獲得客戶(hù)需求的語(yǔ)言描述,清華大學(xué)出版社,2010-07-312 陳丹丹.Java學(xué)習(xí)手冊(cè),北京中新偉業(yè),2011年4月3 David Brackeen.Java游戲編程,北京希望電子出版社,2004.34 李志剛.由淺入深學(xué)Java,電子工業(yè)出版社,2011年7月附錄程序源代碼:import java.awt.event.*;im
18、port java.awt.*;import javax.swing.*;import javax.swing.JOptionPane;import sun.audio.AudioPlayer;import sun.audio.AudioStream;import java.io.*;public class 掃雷程序 extends JFrame implements ActionListener boolean boo=true; static boolean boo1=true;JButton 按鈕; JButton 按鈕組;JLabel 標(biāo)簽1; JLabel 標(biāo)簽2; JLabel
19、標(biāo)簽3; Timer timer; int row=9; int col=9; int 雷數(shù)=10;int a; int b; int a1;JPanel p,p1,p2,p3; public 掃雷程序(String s)super(s); JLabel imgLabel = new JLabel(); ImageIcon img = new ImageIcon("2.jpg"); imgLabel.setIcon(img); imgLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight(); (JPanel)
20、getContentPane().setOpaque(false); getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE); setSize(300,400);setBounds(400, 100, 400, 500); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); timer =new Timer(1000,this); a = new introw+2col+2; 創(chuàng)建圖形
21、界面(); setVisible(true); if(boo) String s1="請(qǐng)首先在'游戲'一欄里面選擇級(jí)別"JOptionPane.showMessageDialog(this,s1,"問(wèn)題對(duì)話框",JOptionPane.QUESTION_MESSAGE); public static void main(String args) int i=1;new 掃雷程序("盧浩洋的掃雷程序"); try if(boo1) FileInputStream fileau = new FileInputStream(
22、"歡樂(lè)斗地主.wav"); AudioStream as = new AudioStream(fileau); AudioPlayer.player.start(as); catch(Exception e)System.out.println(e); public void 創(chuàng)建圖形界面() p3=new JPanel();b=雷數(shù); JMenuBar menuBar=new JMenuBar();JMenu menu1=new JMenu("游戲(G)");JMenu menu2=new JMenu("幫助(H)"); JMenu
23、 menu3=new JMenu("暫停"); JMenu menu4=new JMenu("繼續(xù)"); JMenu menu5=new JMenu("退出");JMenuItem mi1=new JMenuItem("初級(jí)");JMenuItem mi2 = new JMenuItem("中級(jí)"); JMenuItem mi3 =new JMenuItem("高級(jí)"); JMenuItem mi31 =new JMenuItem("超高級(jí)"); JMen
24、uItem mi4 =new JMenuItem("自定義"); JMenuItem mi5 =new JMenuItem("標(biāo)記"); JMenuItem mi6 =new JMenuItem("顏色"); JMenuItem mi7 =new JMenuItem("聲音"); JMenuItem mi8 =new JMenuItem("打雷英雄榜"); JMenuItem mi9 =new JMenuItem("退出"); JMenuItem mi10 =new JMen
25、uItem("開(kāi)局"); JMenuItem mi11 =new JMenuItem("目錄"); JMenuItem mi12 =new JMenuItem("查找?guī)椭黝}"); JMenuItem mi13 =new JMenuItem("使用幫助"); JMenuItem mi14 =new JMenuItem("關(guān)于掃雷"); menu1.add(mi10);mi1.addActionListener(this);menu1.add(mi1);mi2.addActionListener(
26、this);menu1.add(mi2);mi3.addActionListener(this); mi31.addActionListener(this);menu1.add(mi3); menu1.add(mi31); menu1.add(mi4); menu1.add(mi5); menu1.add(mi6); menu1.add(mi7); menu1.add(mi8); menu1.add(mi9); menu5.add(mi9); menu2.add(mi11); menu2.add(mi12); menu2.add(mi13); menu2.add(mi14); mi9.addA
27、ctionListener(this);menuBar.add(menu1);menuBar.add(menu2); menuBar.add(menu3); menuBar.add(menu4); menuBar.add(menu5);p3.add(menuBar);標(biāo)簽1=new JLabel("一共有"+雷數(shù)+"顆雷數(shù)");a1=new int雷數(shù); ImageIcon icon=new ImageIcon("1.jpg");/加入笑臉圖像按鈕=new JButton(icon);按鈕.addActionListener(this
28、); java.util.Date date=new java.util.Date(); String str=date.toString().substring(11,19);標(biāo)簽2=new JLabel("時(shí)間"+str);標(biāo)簽3=new JLabel("");按鈕組=new JButtonrow*col;p=new JPanel();p.setLayout(new BorderLayout(); add(p);p1=new JPanel();p1.add(標(biāo)簽1);p1.add(按鈕);p1.add(標(biāo)簽2);p1.add(標(biāo)簽3);p.add(p
29、3,BorderLayout.NORTH);p.add(p1,BorderLayout.CENTER);p2=new JPanel(); GridLayout grid=new GridLayout(row,col);p2.setLayout(grid);for(int i=0;i<row*col;i+) 按鈕組i=new JButton("");按鈕組i.setMargin(new Insets(0,0,0,0);按鈕組i.setFont(new Font("隸書(shū)",Font.BOLD,30);按鈕組i.addActionListener(thi
30、s); 按鈕組i.setBackground(Color.yellow);按鈕組i.addMouseListener(new NormoreMouseEvent(); 按鈕組i.setSize(3,4);p2.add(按鈕組i);add(p,BorderLayout.NORTH); add(p2,BorderLayout.CENTER); public void out(int a,JButton 按鈕組,ActionEvent e,int i,int x,int y) int p=1; if(axy=0) axy=10; 按鈕組i.setEnabled(false); for(int l=y
31、-1;l<=y+1;l+) int m=x-1-1;int n=l-1;p=1; System.out.println(a12); if(n>-1&&n<col&&m>-1&&m<row) for(int q=0;q<row&&p=1;q+) if(n+col*q)>=(m*col)&&(n+col*q)<(m+1)*col) if(ax-1l!=0&&ax-1l!=10) 按鈕組n+col*q.setText(ax-1l+"");
32、ax-1l=10; 按鈕組n+col*q.setEnabled(false); else if(ax-1l=0) 按鈕組n+col*q.setEnabled(false); out(a,按鈕組,e,n+col*q,x-1,l); ax-1l=10; 按鈕組n+col*q.setEnabled(false); p=0; p=1; m=x; if(n>-1&&n<col&&m>-1&&m<col) for(int q=0;q<row&&p=1;q+) if(n+col*q)>=(m*col)&
33、;&(n+col*q)<(m+1)*col) if(ax+1l!=0&&ax+1l!=10) 按鈕組n+col*q.setText(ax+1l+""); ax+1l=10; 按鈕組n+col*q.setEnabled(false); else if(ax+1l=0) out(a,按鈕組,e,n+col*q,x+1,l); ax+1l=10; 按鈕組n+col*q.setEnabled(false); p=0; int m=x-1;int n=y-1-1;p=1; if(n>-1&&n<col&&m&g
34、t;-1&&m<col) for(int q=0;q<row&&p=1;q+) if(n+col*q)>=(m*col)&&(n+col*q)<(m+1)*col)if(axy-1!=0&&axy-1!=10)按鈕組n+col*q.setText(axy-1+"");axy-1=10; 按鈕組n+col*q.setEnabled(false);else if(axy-1=0) out(a,按鈕組,e,n+col*q,x,y-1); axy-1=10;按鈕組n+col*q.setEnabl
35、ed(false);p=0;p=1;m=x-1;n=y+1-1;if(n>-1&&n<col&&m>-1&&m<col)for(int q=0;q<row&&p=1;q+)if(n+col*q)>=(m*col)&&(n+col*q)<(m+1)*col)if(axy+1!=0&&axy+1!=10)按鈕組n+col*q.setText(axy+1+"");axy+1=10;按鈕組n+col*q.setEnabled(false);els
36、e if(axy+1=0)out(a,按鈕組,e,n+col*q,x,y+1); axy+1=10;按鈕組n+col*q.setEnabled(false);p=0; public void 級(jí)別雷布局(int row1,int col1,int 雷數(shù)1) row=row1;col=col1;雷數(shù)=雷數(shù)1;a1=new int雷數(shù);b=雷數(shù);a = new introw+2col+2;this.remove(p2);timer.stop();if(雷數(shù)=10) 標(biāo)簽1.setText("一共有"+雷數(shù)+"顆雷數(shù)");標(biāo)簽2.setText("0
37、");標(biāo)簽3.setText("初級(jí)"); else if(雷數(shù)=40) 標(biāo)簽1.setText("一共有"+雷數(shù)+"顆雷數(shù)");標(biāo)簽2.setText("0");標(biāo)簽3.setText("中級(jí)"); else if(雷數(shù)=99) 標(biāo)簽1.setText("一共有"+雷數(shù)+"顆雷數(shù)");標(biāo)簽2.setText("0");標(biāo)簽3.setText("高級(jí)"); else 標(biāo)簽1.setText("一共
38、有"+雷數(shù)+"顆雷數(shù)");標(biāo)簽2.setText("0");標(biāo)簽3.setText("超高級(jí)");按鈕組=new JButtonrow*col;p2=new JPanel();p2.setLayout(new GridLayout(row,col);for(int i=0;i<row*col;i+) 按鈕組i=new JButton(" ");按鈕組i.setMargin(new Insets(0,0,0,0);按鈕組i.setFont(new Font(null,Font.BOLD,30);按鈕組
39、i.addActionListener(this);按鈕組i.addMouseListener(new NormoreMouseEvent(); if(雷數(shù)=10)按鈕組i.setBackground(Color.yellow); else if(雷數(shù)=40)按鈕組i.setBackground(Color.red); else if(雷數(shù)=9)按鈕組i.setBackground(Color.cyan); else if(雷數(shù)=199)按鈕組i.setBackground(Color.blue); p2.add(按鈕組i);this.pack(); add(p2,BorderLayout.C
40、ENTER);for(int i=0;i<row*col;i+) 按鈕組i.setText(" ");按鈕組i.setEnabled(true);for(int i=0;i<row+2;i+)for(int j=0;j<col+2;j+)aij=0; public void actionPerformed(ActionEvent e) if(e.getActionCommand()="初級(jí)") 級(jí)別雷布局(9,9,10); else if(e.getActionCommand()="中級(jí)") 級(jí)別雷布局(16,16,
41、40); else if(e.getActionCommand()="高級(jí)") 級(jí)別雷布局(16,32,99); else if(e.getActionCommand()="超高級(jí)") 級(jí)別雷布局(32,32,199); else if(e.getActionCommand()="退出") dispose(); if(e.getSource()=按鈕) ImageIcon icon=new ImageIcon("1.jpg");/加入笑臉圖像 按鈕.setIcon(icon);timer.start();b=雷數(shù);
42、標(biāo)簽3.setText("開(kāi)始計(jì)時(shí)");for(int i=0;i<row*col;i+)按鈕組i.setText("");按鈕組i.setEnabled(true);for(int i=0;i<row+2;i+)for(int j=0;j<col+2;j+)aij=0;/產(chǎn)生隨機(jī)數(shù)for(int i=0;i<雷數(shù);i+)int p=1;int m=(int)(Math.random()*row*col);while(p=1)int l=1;int j;for( j=0;j<i&&l=1;j+)if(a1j=
43、m)m=(int)(Math.random()*row*col); l=0;if(j=i)a1i=m;p=0;標(biāo)簽1.setText("一共有"+雷數(shù)+"顆雷數(shù)");標(biāo)簽2.setText("0"); for(int i=0;i<雷數(shù);i+)int x=(a1i/col+1); int y=(a1i%col+1);axy=100; for(int i=0;i<row+2;i+) for(int j=0;j<col+2;j+) if(i=0|j=0|i=row+1|j=col+1)aij=0; for(int i=1;
44、i<=row;i+) for(int j=1;j<=col;j+) if(aij!=100)for(int l=j-1;l<=j+1;l+) if(ai-1l=100)aij+; if(ai+1l=100) aij+; if(aij-1=100) aij+; if(aij+1=100)aij+; if(e.getSource()=timer) String time=標(biāo)簽2.getText().trim(); int t=Integer.parseInt(time); if(t>=500)timer.stop(); else t+;標(biāo)簽2.setText(t+"
45、;"); for(int i=0;i<col*row;i+) if(按鈕組i.getText()!="#") int x=i/col+1; int y=i%col+1; if(e.getSource()=按鈕組i&&axy=100) 按鈕組i.setText("#"); 按鈕組i.setEnabled(false); axy=10; for(int k=0;k<col*row;k+) int m1=k/col+1;int n1=k%col+1; if(am1n1!=10&&按鈕組k.getText()="#") 按鈕組k.setText("*o*"); for(int j=0;j<col*row;j+) int m=j/col+1; int n=j%col+1; if(amn=100) 按鈕組j.setText(&q
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年機(jī)械設(shè)備采購(gòu)協(xié)議模板
- 梵高傳課件教學(xué)課件
- 新生培訓(xùn)課件教學(xué)課件
- 籃球社團(tuán)活動(dòng)-教案
- 再生堂課件教學(xué)課件
- 產(chǎn)業(yè)園區(qū)前期物業(yè)管理重點(diǎn)事項(xiàng)
- 企業(yè)廉潔自律共建協(xié)議
- 企業(yè)市場(chǎng)調(diào)研咨詢(xún)合同
- 《桂花病蟲(chóng)害防治技術(shù)》課程標(biāo)準(zhǔn)
- 倉(cāng)儲(chǔ)服務(wù)合作協(xié)議樣本
- A0422脫密期回訪記錄表
- 飼料加工系統(tǒng)粉塵防爆安全規(guī)程
- 婦產(chǎn)科學(xué)課件:胎心監(jiān)測(cè)
- 新蘇教版科學(xué)四年級(jí)上冊(cè)學(xué)生活動(dòng)手冊(cè)習(xí)題與講解
- 基礎(chǔ)護(hù)理質(zhì)量標(biāo)準(zhǔn)及考核評(píng)分表
- 商務(wù)條款響應(yīng)表
- 二年級(jí)上冊(cè)美術(shù)教案-7. 去遠(yuǎn)航 -冀教版
- 二年級(jí)上冊(cè)語(yǔ)文課件-10《日月潭》|人教(部編版) (共19張PPT)
- 《詩(shī)情畫(huà)意》教學(xué)設(shè)計(jì)
- 中華文化與傳播教材課件
- Unit3 Sports and Fitness Reading for writing健康生活講義-高中英語(yǔ)人教版(2019)必修第三冊(cè)
評(píng)論
0/150
提交評(píng)論