版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 前言</b></p><p> 隨著大學(xué)的擴(kuò)招,在校大學(xué)生的人數(shù)也劇增。老師教學(xué)任務(wù)繁重,加上各種教學(xué)設(shè)計(jì)、評估,老師工作量繁重不說,卻往往事倍功半,教學(xué)質(zhì)量沒有明顯的提高。同時,如何設(shè)計(jì)考核的題目,使學(xué)生的知識得到總結(jié)、歸納和應(yīng)用,并且使零散的知識條理化和系統(tǒng)化,這也是老師們重點(diǎn)思考的方向,但如此一來,在繁重的教學(xué)任務(wù)之外,分散了老師們不少的精力。與傳統(tǒng)考試
2、模式相比,在線考試具有無可比擬的優(yōu)越性,它可以將傳統(tǒng)考試過程中的試卷組織、審定印制、傳送收集、登記發(fā)放、評判歸檔各個環(huán)節(jié)縮小到一至兩個環(huán)節(jié),幾乎屏蔽了所有人工直接干預(yù)考試活動的可能性,不但能夠節(jié)約大量的時日、人力、物力與財力,而且還可以大幅度增加考試成績的客觀性和公正性。所以本次課程設(shè)計(jì)充分利用現(xiàn)有的計(jì)算機(jī)軟、硬件和網(wǎng)絡(luò)資源實(shí)現(xiàn)無紙化考試以避免傳統(tǒng)手工考試的不足,力求一種高效率的考試系統(tǒng),來減輕教師負(fù)擔(dān),為學(xué)生提供更好的學(xué)習(xí)平臺,同時提
3、高自己系統(tǒng)開發(fā)的能力。同時可以對試卷的難度系數(shù)、考試的時間、參考的對象等考試規(guī)則等進(jìn)行量化。操作簡便快捷,解決了考試程序繁蕪,教師耗時費(fèi)力的問題。學(xué)生可以在線自測,系統(tǒng)按照考試規(guī)則隨機(jī)出題;也可以參加統(tǒng)一考試,試題由系統(tǒng)按照老師制</p><p> 總之本系統(tǒng)實(shí)現(xiàn)后將有如下的功能: </p><p> (1) 可以創(chuàng)立電子題庫,方便地實(shí)現(xiàn)試題的數(shù)字化管理.</p>&l
4、t;p> (2) 可以按照科學(xué)的策略智能組卷,從而提高出卷效率. </p><p> (3) 可以具有操作性和交互性. </p><p> (4) 使考試和評卷更具規(guī)范性和合理性. </p><p> (5) 實(shí)現(xiàn)自動評卷和數(shù)據(jù)的有效保存.</p><p><b> 1 . 設(shè)計(jì)目的</b></p
5、><p> 通過選擇掃雷游戲軟件設(shè)計(jì),這個綜合性的題目作為本次的課程設(shè)計(jì)??梢宰屛覀兏邮煜ava程序設(shè)計(jì)這門課程,學(xué)會熟練使用Java這個軟件,加深對Java語言的掌握,提高編程水平。同時培養(yǎng)獨(dú)立思考和同學(xué)間團(tuán)結(jié)合作的能力,為畢業(yè)設(shè)計(jì)以及將來的工作打下堅(jiān)實(shí)的基礎(chǔ)。</p><p> 2 . 設(shè)計(jì)內(nèi)容及要求</p><p> 2.1 掃雷游戲的基本要求</
6、p><p> Windows 2000/XP系統(tǒng)提供的掃雷游戲是一個很有趣的游戲。本章的課程設(shè)計(jì)使用Java語言編寫一個與其類似的掃雷游戲。具體要求如下:</p><p> (1) 掃雷游戲分為初級、中級和高級三個級別,掃雷英雄榜存儲每個級別的最好成績,即挖出全部的地雷且用時最少者。單擊游戲菜單可以選擇“初級”、“中級”和“高級”或“查看英雄版”。</p><p>
7、 (2) 選擇級別后將出現(xiàn)相應(yīng)級別的掃雷區(qū)域,這是用戶使用鼠標(biāo)左鍵單擊雷區(qū)中任何一個方塊便啟動計(jì)時器。</p><p> (3) 用戶要揭開某個方塊,可單擊它。若所揭方塊下有淚,用戶便輸了這一局,若所揭方塊下五雷,則顯示一個數(shù)字,該數(shù)字代表方塊的周圍的8個方塊中共有多少顆雷。</p><p> (4) 如果用戶認(rèn)為某個方塊下埋著雷,單擊右鍵可以在方塊上標(biāo)識一個用戶認(rèn)為是雷的圖標(biāo),即給
8、出一個掃雷標(biāo)記。用戶每標(biāo)記出一個掃雷標(biāo)記(無論用戶的標(biāo)記是否正確),程序?qū)@示的剩余雷數(shù)減少一個。 </p><p> (5) 掃雷勝利后(用時最少者),程序彈出保存成績的對話框。 </p><p> (6)用戶可以選擇標(biāo)記疑問的方塊,用可以勾選游戲菜單下的標(biāo)記(或者用快捷鍵alt+G 然后M)即可,此時雙擊右鍵并可出現(xiàn)“?”標(biāo)記。另有顏色選項(xiàng),當(dāng)用戶勾選此項(xiàng)時,游戲?qū)⒁宰畹蛨D像像素
9、來顯示。</p><p> (7)如果用戶需要即使提示聲,并可選中聲音選項(xiàng),此時將聽到計(jì)時的卡塔聲。當(dāng)用戶點(diǎn)中雷時,將有爆炸聲產(chǎn)生,勝利時,將有凱旋的旋律播放,此時企鵝出現(xiàn)歡悅表情。</p><p> 2.2 需實(shí)現(xiàn)的主要功能 </p><p> (1) 用戶可以自定義級別并且可以任意輸入雷數(shù);</p><p> (2) 具有計(jì)時功
10、能,即顯示用戶完成移動盤子所花費(fèi)的時間;</p><p> (3) 用戶可以選擇是否有音效;</p><p> (4) 自動保存掃雷英雄榜;</p><p><b> 3 .需求分析</b></p><p> 3.1 掃雷棋盤的布局設(shè)計(jì)</p><p> 系統(tǒng)的整體布局為:CardLay
11、out布局, 采用了菜單、按鈕、面板?等組件,菜單主要包括開始,選擇級別,標(biāo)記,掃雷英雄榜,退出, 按鈕的功能是重新開始新的游戲。</p><p><b> 3.2 雷區(qū)的設(shè)計(jì)</b></p><p> MineArea類是javax.swing包中Jpanel容器的子類,實(shí)現(xiàn)了ActionListener和MouseListener接口,所創(chuàng)建的對象:mineA
12、rea是MineGame類中最重要的成員之一,作為一個容器添加到MineGame窗口的中心。標(biāo)明MineArea類的主要成員變量、方法以及和MineGame類之間組合關(guān)系的UML圖如圖2-1所示。</p><p> 以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說明。</p><p><b> 3.2.1成員變量</b></p><p> (1)b
13、lock是Block類型的數(shù)組,用來確定雷區(qū)有多少需進(jìn)行掃雷的方塊。</p><p> (2)blockView是BlockView類型的數(shù)組,負(fù)責(zé)為block數(shù)組中的Block對象提供視圖。</p><p> (3)lay是LayMines類型的對象,負(fù)責(zé)設(shè)置block數(shù)組中的哪些方塊是雷或不是雷。 (4)record負(fù)責(zé)提供保存成績的界面,是一個對話框,默認(rèn)不可見。用戶只有掃雷成
14、功后(用時最少),才可以看見對話框。 </p><p> (5)reStart是一個按鈕對象,用戶單擊它重新開始游戲。 (6)time是計(jì)時器對象,負(fù)責(zé)計(jì)算用戶的用時。</p><p><b> 3.2.2方法</b></p><p> (1)initMineArea(int,int,int,int)方法可根據(jù)參數(shù)提供的數(shù)據(jù)設(shè)置雷區(qū)的寬度
15、、高度、雷的數(shù)目以及雷區(qū)的級別。</p><p> (2)actionPerformed(ActionEvent)是MineArea類實(shí)現(xiàn)的ActionListener接口中的方法。當(dāng)用戶單擊blockView中的某個方塊時,actionPerformed(ActionEvent)方法負(fù)責(zé)執(zhí)行有關(guān)算法,例如,當(dāng)用鼠標(biāo)左鍵單擊方塊上的按鈕后,若該方塊下有雷,actionPerformed(ActionEvent)
16、方法將使用戶輸?shù)舯揪?,若該方塊下無雷,actionPerformed(ActionEvent)方法將顯示blockView對象中的標(biāo)簽,該標(biāo)簽上是一個數(shù)字,該數(shù)字代表當(dāng)前方塊的周圍的8個方塊中共有多少顆雷。</p><p> (3)show()方法是一個遞歸方法。actionPerformed(ActionEvent)方法執(zhí)行時將調(diào)用show方法進(jìn)行掃雷。</p><p> (4)mo
17、usePressed(MouseEvent)方法是MineArea類實(shí)現(xiàn)的MouseListener接口中的方法,當(dāng)用戶按下鼠標(biāo)有件事mousePressed(MouseEvent)方法負(fù)責(zé)讓方塊上顯示一個探雷標(biāo)記。 </p><p> (5)inquireWin()方法用來判斷用戶是否掃雷成功,如果成功該方法負(fù)責(zé)讓record對話框可見。所謂掃雷成功是指不僅找到了全部的累而且用時最少。 綜上所述,MineA
18、rea創(chuàng)建的掃雷區(qū)域效果如圖2.2.2所示。</p><p><b> 3.3 排行榜設(shè)計(jì)</b></p><p> LogDialog是javax.swing包中Jdialog對話框的子類,并實(shí)現(xiàn)了ActiongListener接口。LogDialog創(chuàng)建的對象dialog是MainFrame類(主類)的成員之一,當(dāng)用戶選擇查看“英雄榜”菜單項(xiàng)時,該對話框可見,
19、提供了查看掃雷的最好成績的界面。標(biāo)明LogDialog類的主要成員變量、方法以及和MainFrame類之間組合關(guān)系的UML圖如圖2-3所示。</p><p><b> 4 .總體設(shè)計(jì)</b></p><p><b> 4.1 總體功能圖</b></p><p><b> 4.2 總體流程圖</b>
20、;</p><p> 4.3雷區(qū)設(shè)計(jì)流程圖</p><p> 4.4 排行榜設(shè)計(jì)流程圖</p><p><b> 5 .代碼實(shí)現(xiàn)</b></p><p> 5.1 類之間關(guān)系圖</p><p><b> 5.2 運(yùn)行效果圖</b></p><p&
21、gt; 5.3 程序打包發(fā)布過程</p><p> 可以使用jar.exe命令制作JAR文件來發(fā)布編寫的軟件。 </p><p> (1)首先用文本編輯器,如Windows下的“記事本”,編寫一個清單文件:</p><p><b> Mymoon.mf</b></p><p> Manifest-Versio
22、n: 1.0 </p><p> Main-Class: MineGame</p><p> Created-By: 1.5(Sun Microsystems Inc.) </p><p> 將Mymoon.mf保存到G:\Java課程設(shè)計(jì)\掃雷游戲1\掃雷游戲33中,即和應(yīng)用程序所用的字節(jié)碼文件保存在相同的目錄中。 </p>
23、<p> 注意:清單文件中的“Manifest-Version:”和1.0、“Main-Class”和主類MineGame之間以及“Created-By:”和1.5之間必須有且只有一個空格。 </p><p> (2)生成JAR文件。 G:\Java課程設(shè)計(jì)\掃雷游戲1\掃雷游戲33\jar cfm Game.jar Mymoon.mf *.class其中,參數(shù)c表示要生成一個新的JAR文件,f
24、表示要生成的JAR文件的名字,m表示清單文件的名字。 </p><p> 可以將Hannoi.jar復(fù)制到任何一個安裝了Java運(yùn)行環(huán)境(版本號需高于1.5的計(jì)算機(jī)上)的計(jì)算機(jī)上,用戶用鼠標(biāo)雙擊該文件的圖標(biāo)就可以運(yùn)行掃雷游戲。</p><p><b> 6 .總結(jié)</b></p><p> 通過這次的課程設(shè)計(jì),我對Java這門語言有了
25、更深刻的理解。其中包括類、對象、接口、繼承、方法以及Java語言中的常用包等的使用方法,特別是圖形用戶界面里各種組件的創(chuàng)建,事件處理等相關(guān)知識。還學(xué)會了很多在這個學(xué)期《Java2課程設(shè)計(jì)基礎(chǔ)》課上沒有學(xué)會和沒有學(xué)懂的東西,使我對Java語言是一種非常難懂的語言的思想有了極大的改觀。這次的課程設(shè)計(jì)是用Java語言及相關(guān)知識設(shè)計(jì)一個掃雷游戲系統(tǒng),能實(shí)現(xiàn)選擇游戲級別,記錄游戲時間和保存游戲成績等功能。雖然整個設(shè)計(jì)的時間才短短兩周,我還是對JD
26、K和JCreator等Java語言開發(fā)工具有了深層次的認(rèn)知,并熟練掌握了它們的使用方法。而且這次的課程設(shè)計(jì),也使我的編程能力有了明顯的提高。通過這次課程設(shè)計(jì)設(shè)計(jì),我才明白學(xué)習(xí)是一個長期積累的過程,在以后的工作、生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己知識和綜合素質(zhì)。此外,我認(rèn)為這次課程設(shè)計(jì)最大的收獲就是:知識必須通過應(yīng)用才能實(shí)現(xiàn)其價值!有些東西以為學(xué)會了,但真正到用的時候才發(fā)現(xiàn)是兩回事,所以我認(rèn)為只有到真正會用的時候才是真的學(xué)會了。<
27、/p><p><b> 參考文獻(xiàn)</b></p><p> [1] Java課程設(shè)計(jì)(第二版) 清華大學(xué)出版社 耿祥義 張躍平</p><p> [2] Java2實(shí)用教程(第三版) 清華大學(xué)出版社 耿祥義 等 </p><p> [3]精通Struts:基于MVC的Java Web設(shè)計(jì)與開發(fā).北京:電
28、子工業(yè)出版社,2004.08 </p><p> [4]《JAVA 語言與面向?qū)ο蟪绦蛟O(shè)計(jì)》 . 印 旻 . 清華大學(xué)出版社。 </p><p> [5]《 JavaApplet 實(shí)例編程》,赤金、聶松編著,中國水利水電出版社 </p><p> [6]《 Java 開發(fā)利器 ——Eclipse 從入門到精通》張峰科技 編,清華大學(xué)出版社 </p&g
29、t;<p> [7]《 Java2 核心》第二版窗體底端 </p><p><b> 7 .主要源代碼</b></p><p> importjava.awt.BorderLayout;</p><p> importjava.awt.Container;</p><p> importjav
30、a.awt.Font;</p><p> importjava.awt.GridLayout;</p><p> importjava.awt.Insets;</p><p> importjava.awt.event.ActionEvent;</p><p> importjava.awt.event.ActionListener;
31、</p><p> importjava.awt.event.MouseAdapter;</p><p> importjava.awt.event.MouseEvent;</p><p> importjavax.swing.JButton;</p><p> importjavax.swing.JFrame;</p>
32、<p> importjavax.swing.JLabel;</p><p> importjavax.swing.JMenu;</p><p> importjavax.swing.JMenuBar;</p><p> importjavax.swing.JMenuItem;</p><p> importjavax.
33、swing.JPanel;</p><p> importjavax.swing.Timer;</p><p> public class ScanLei1 extends JFrame implements ActionListener{</p><p> private static final long serialVersionUID = 1L;&l
34、t;/p><p> private Container contentPane;</p><p> privateJButtonbtn;</p><p> privateJButton[] btns;</p><p> privateJLabel b1;</p><p> privateJLabel b2;<
35、;/p><p> privateJLabel b3;</p><p> private Timer timer;</p><p> privateint row=9;</p><p> privateint col=9;</p><p> privateint bon=10;</p><p&g
36、t; privateint[][] a;</p><p> privateint b;</p><p> privateint[] a1;</p><p> privateJPanel p,p1,p2,p3;</p><p> public ScanLei1(String title){</p><p>
37、super(title);</p><p> contentPane=getContentPane();</p><p> setSize(297,377);</p><p> this.setBounds(400, 100, 400, 500);</p><p> setDefaultCloseOperation(JFrame.EX
38、IT_ON_CLOSE);</p><p> timer =new Timer(1000,(ActionListener) this);</p><p> a = new int[row+2][col+2];</p><p> initGUI();</p><p><b> }</b></p>&
39、lt;p> public void initGUI(){</p><p> p3=new JPanel();</p><p><b> b=bon;</b></p><p> JMenuBarmenuBar=new JMenuBar();</p><p> JMenu menu1=new JMenu(&q
40、uot;游戲");</p><p> JMenu menu2=new JMenu("幫助");</p><p> JMenuItem mi1=new JMenuItem("初級");</p><p> JMenuItem mi2 = new JMenuItem("中級");</p>
41、;<p> JMenuItem mi3 =new JMenuItem("高級");</p><p> mi1.addActionListener(this);</p><p> menu1.add(mi1);</p><p> mi2.addActionListener(this);</p><p>
42、 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> p3.add(
43、menuBar);</p><p> b1=new JLabel(bon+"");</p><p> a1=new int[bon];</p><p> btn =new JButton("開始");</p><p> btn.addActionListener(this);</p>
44、<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.setLayout(new B
45、orderLayout());</p><p> contentPane.add(p);</p><p> p.add(p3,BorderLayout.NORTH);</p><p> //combo=new JComboBox(new Object[]{"初級","中級","高級"} );</
46、p><p><b> //加監(jiān)聽</b></p><p> /*combo.addItemListener(new ItemListener(){</p><p><b> }});*/</b></p><p> p1=new JPanel();</p><p>
47、<b> //在那個位置</b></p><p> //(( FlowLayout)p1.getLayout()).setAlignment( FlowLayout.RIGHT);</p><p> p1.add(b1);</p><p> p1.add(btn);</p><p> p1.add(b2);&l
48、t;/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.setLayout(new Grid
49、Layout(row,col,0,0));</p><p> for(inti=0;i<row*col;i++){</p><p> btns[i]=new JButton("");</p><p> btns[i].setMargin(new Insets(0,0,0,0));</p><p> btns[
50、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]);</p>&
51、lt;p><b> }</b></p><p> contentPane.add(p,BorderLayout.NORTH);</p><p> contentPane.add(p2,BorderLayout.CENTER);</p><p><b> }</b></p><p>
52、 public void go(){</p><p> setVisible(true);</p><p><b> }</b></p><p> public static void main(String[] args){</p><p> new ScanLei1("掃雷").go
53、();</p><p><b> }</b></p><p> public void out(int[][] a,JButton[] btns,ActionEvente,inti,intx,int y){</p><p><b> int p=1;</b></p><p> if(a[x
54、][y]==0){</p><p> a[x][y]=10;</p><p> btns[i].setEnabled(false);//33 </p><p> for(int l=y-1;l<=y+1;l++){</p><p> int m=x-1-1;</p><p> int n=l-1;&l
55、t;/p><p><b> p=1;</b></p><p> System.out.println(a[1][2]);</p><p> if(n>-1&&n<col&&m>-1&&m<row)</p><p><b> {</
56、b></p><p> for(int q=0;q<row&&p==1;q++){//col-->row;</p><p> if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){</p><p> if(a[x-1][l]!=0&&a[x-
57、1][l]!=10){</p><p> btns[n+col*q].setText(a[x-1][l]+"");</p><p> a[x-1][l]=10;</p><p> btns[n+col*q].setEnabled(false);</p><p><b> }</b></p
58、><p> else if(a[x-1][l]==0){</p><p> //a[x-1][l]=10;</p><p> btns[n+col*q].setEnabled(false);</p><p> out(a,btns,e,n+col*q,x-1,l); ////55////</p><p> a[x
59、-1][l]=10;</p><p> btns[n+col*q].setEnabled(false);</p><p><b> }</b></p><p><b> p=0;</b></p><p><b> }</b></p><p>&l
60、t;b> }</b></p><p><b> }</b></p><p><b> p=1;</b></p><p><b> m=x;</b></p><p> if(n>-1&&n<col&&m>
61、;-1&&m<col)</p><p><b> {</b></p><p> for(int q=0;q<row&&p==1;q++){</p><p> if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){</p&
62、gt;<p> if(a[x+1][l]!=0&&a[x+1][l]!=10){</p><p> btns[n+col*q].setText(a[x+1][l]+"");</p><p> a[x+1][l]=10;</p><p> btns[n+col*q].setEnabled(false);<
63、/p><p><b> }</b></p><p> else if(a[x+1][l]==0){</p><p> out(a,btns,e,n+col*q,x+1,l);///55////</p><p> a[x+1][l]=10;</p><p> btns[n+col*
64、q].setEnabled(false);</p><p><b> }</b></p><p><b> p=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><
65、;b> }</b></p><p><b> }</b></p><p> int m=x-1;</p><p> int n=y-1-1;</p><p><b> p=1;</b></p><p> if(n>-1&&n
66、<col&&m>-1&&m<col)</p><p><b> {</b></p><p> for(int q=0;q<row&&p==1;q++){</p><p> if(((n+col*q)>=(m*col))&&((n+col*q)&l
67、t;(m+1)*col)){</p><p> if(a[x][y-1]!=0&&a[x][y-1]!=10){</p><p> btns[n+col*q].setText(a[x][y-1]+"");</p><p> a[x][y-1]=10;</p><p> btns[n+col*q].s
68、etEnabled(false);</p><p><b> }</b></p><p> else if(a[x][y-1]==0){</p><p> out(a,btns,e,n+col*q,x,y-1);</p><p> a[x][y-1]=10;</p><p> btns[
69、n+col*q].setEnabled(false);</p><p><b> }</b></p><p><b> p=0;</b></p><p><b> }</b></p><p><b> }</b></p><p&
70、gt;<b> }</b></p><p><b> p=1;</b></p><p><b> m=x-1;</b></p><p><b> n=y+1-1;</b></p><p> if(n>-1&&n<col
71、&&m>-1&&m<col)</p><p><b> {</b></p><p> for(int q=0;q<row&&p==1;q++){</p><p> if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)
72、*col)){</p><p> if(a[x][y+1]!=0&&a[x][y+1]!=10){</p><p> btns[n+col*q].setText(a[x][y+1]+"");</p><p> a[x][y+1]=10;</p><p> btns[n+col*q].setEnabl
73、ed(false);</p><p><b> }</b></p><p> else if(a[x][y+1]==0){</p><p> out(a,btns,e,n+col*q,x,y+1);</p><p> a[x][y+1]=10;</p><p>
74、 btns[n+col*q].setEnabled(false);</p><p><b> }</b></p><p><b> p=0;</b></p><p><b> }</b></p><p><b> }</b></p>
75、<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e) {</p><p> if(e.getActio
76、nCommand()=="初級"){</p><p><b> row=9;</b></p><p><b> col=9;</b></p><p><b> bon=10;</b></p><p> a1=new int[bon];</p&g
77、t;<p><b> b=bon;</b></p><p> //setSize(297,377);</p><p> a = new int[row+2][col+2];</p><p> this.remove(p2);</p><p> timer.stop();</p>&l
78、t;p> b1.setText("10");</p><p> b2.setText("0");</p><p> b3.setText("");</p><p> btns=new JButton[row*col];</p><p> p2=new JPanel()
79、;</p><p> p2.setLayout(new GridLayout(row,col,0,0));</p><p> for(inti=0;i<row*col;i++){</p><p> btns[i]=new JButton(" ");</p><p> btns[i].setMargin
80、(new Insets(0,0,0,0));</p><p> btns[i].setFont(new Font(null,Font.BOLD,25));</p><p> btns[i].addActionListener(this);</p><p> btns[i].addMouseListener(new NormoreMouseEvent());&l
81、t;/p><p> p2.add(btns[i]);</p><p><b> }</b></p><p> contentPane.add(p2,BorderLayout.CENTER);</p><p> //setSize(297,377);</p><p> this.pack();
82、</p><p> for(inti=0;i<row*col;i++){</p><p> btns[i].setText(" ");</p><p> btns[i].setEnabled(true);</p><p><b> }</b></p><p>
83、for(inti=0;i<row+2;i++){</p><p> for(int j=0;j<col+2;j++){</p><p> a[i][j]=0;</p><p><b> }</b></p><p><b> }</b></p><p>
84、}else if(e.getActionCommand()=="中級"){</p><p><b> row=16;</b></p><p><b> col=16;</b></p><p><b> bon=40;</b></p><p> //s
85、etSize(33*col,33*row+80);</p><p> a1=new int[bon];</p><p> a = new int[row+2][col+2];</p><p><b> b=bon;</b></p><p> this.remove(p2);</p><p>
86、; timer.stop();</p><p> b1.setText("40");</p><p> b2.setText("0");</p><p> b3.setText("");</p><p> btns=new JButton[row*col];</p&g
87、t;<p> p2=new JPanel();</p><p> p2.setLayout(new GridLayout(row,col,0,0));</p><p> for(inti=0;i<row*col;i++){</p><p> btns[i]=new JButton(" ");</p>
88、<p> btns[i].setMargin(new Insets(0,0,0,0));</p><p> btns[i].setFont(new Font(null,Font.BOLD,25));</p><p> btns[i].addActionListener(this);</p><p> btns[i].addMouseListene
89、r(new NormoreMouseEvent());</p><p> p2.add(btns[i]);</p><p><b> }</b></p><p> contentPane.add(p2,BorderLayout.CENTER);</p><p> this.pack();</p>&
90、lt;p> //setSize(33*col,33*row+80);</p><p> for(inti=0;i<row*col;i++){</p><p> btns[i].setText("");</p><p> btns[i].setEnabled(true);</p><p><b>
91、; }</b></p><p> for(inti=0;i<row+2;i++){</p><p> for(int j=0;j<col+2;j++){</p><p> a[i][j]=0;</p><p><b> }</b></p><p><b>
92、; }</b></p><p> }else if(e.getActionCommand()=="高級"){</p><p><b> row=16;</b></p><p><b> col=32;</b></p><p><b> bon=99
93、;</b></p><p> setSize(33*col,33*row+80);</p><p> a1=new int[bon];</p><p> a = new int[row+2][col+2];</p><p><b> b=bon;</b></p><p> t
94、his.remove(p2);</p><p> timer.stop();</p><p> b1.setText("99");</p><p> b2.setText("0");</p><p> b3.setText("");</p><p>
95、 btns=new JButton[row*col];</p><p> p2=new JPanel();</p><p> p2.setLayout(new GridLayout(row,col,0,0));</p><p> for(inti=0;i<row*col;i++){</p><p> btns[i]=new JB
96、utton(" ");</p><p> btns[i].setMargin(new Insets(0,0,0,0));</p><p> btns[i].setFont(new Font(null,Font.BOLD,25));</p><p> btns[i].addActionListener(this);</p>
97、<p> btns[i].addMouseListener(new NormoreMouseEvent());</p><p> p2.add(btns[i]);</p><p><b> }</b></p><p> contentPane.add(p2,BorderLayout.CENTER);</p>&
98、lt;p> //setSize(33*col,33*row+80);</p><p> this.pack();</p><p> for(inti=0;i<row*col;i++){</p><p> btns[i].setText("");</p><p> btns[i].setEnabled(
99、true);</p><p><b> }</b></p><p> for(inti=0;i<row+2;i++){</p><p> for(int j=0;j<col+2;j++){</p><p> a[i][j]=0;</p><p><b> }<
100、/b></p><p><b> }</b></p><p><b> }</b></p><p> if(e.getSource()==btn){</p><p> timer.start();</p><p><b> b=bon;</b&
101、gt;</p><p> b3.setText("");</p><p> //System.out.println(bon);</p><p><b> //清空</b></p><p> for(inti=0;i<row*col;i++){</p><p>
102、 btns[i].setText("");</p><p> btns[i].setEnabled(true);</p><p><b> }</b></p><p> for(inti=0;i<row+2;i++){</p><p> for(int j=0;j<col+2;j+
103、+){</p><p> a[i][j]=0;</p><p><b> }</b></p><p><b> }</b></p><p><b> //產(chǎn)生隨機(jī)數(shù)</b></p><p> for(inti=0;i<bon;i++)&l
104、t;/p><p> { int p=1;</p><p> int m=(int)(Math.random()*row*col);</p><p> while(p==1){</p><p><b> int l=1;</b></p><p><b> int j;</b
105、></p><p> for( j=0;j<i&&l==1;j++){</p><p> if(a1[j]==m){</p><p> m=(int)(Math.random()*row*col); </p><p><b> l=0;</b></p><p>
106、<b> }</b></p><p><b> }</b></p><p><b> if(j==i){</b></p><p><b> a1[i]=m;</b></p><p><b> p=0;</b></p&g
107、t;<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> b1.setText(bon+"");</p><p> b2.setText("0&q
108、uot;);</p><p><b> //布雷</b></p><p> for(inti=0;i<bon;i++){</p><p> int x=(a1[i]/col+1);</p><p> int y=(a1[i]%col+1);</p><p> a[x][y]=
109、100;</p><p><b> }</b></p><p> for(inti=0;i<row+2;i++){</p><p> for(int j=0;j<col+2;j++){</p><p> if(i==0||j==0||i==row+1||j==col+1){</p>&l
110、t;p> a[i][j]=0; </p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> for(inti=1;i<=row;i++){</p><p>
111、 for(int j=1;j<=col;j++){</p><p> if(a[i][j]!=100){</p><p> for(int l=j-1;l<=j+1;l++){</p><p> if(a[i-1][l]==100){</p><p> a[i][j]++;</p><p><
112、;b> }</b></p><p> if(a[i+1][l]==100){</p><p> a[i][j]++;</p><p><b> }</b></p><p><b> }</b></p><p> if(a[i][j-1]==100
113、){</p><p> a[i][j]++;</p><p><b> }</b></p><p> if(a[i][j+1]==100){</p><p> a[i][j]++;</p><p><b> }</b></p><p>&l
114、t;b> } </b></p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p> if(e.getSource()==timer)</p><p>
115、<b> {</b></p><p> String time=b2.getText().trim();</p><p> int t=Integer.parseInt(time);</p><p> //System.out.println(t);</p><p> if(t>=600){</p&
116、gt;<p> timer.stop();</p><p><b> }else{</b></p><p><b> t++;</b></p><p> b2.setText(t+"");</p><p><b> }</b><
117、/p><p><b> }</b></p><p> for(inti=0;i<col*row;i++){</p><p> if(btns[i].getText()!="★")</p><p><b> {</b></p><p> int
118、x=i/col+1;</p><p> int y=i%col+1;</p><p> if(e.getSource()==btns[i]&&a[x][y]==100){</p><p> btns[i].setText("★");</p><p> btns[i].setEnabled(false
119、);</p><p> a[x][y]=10;</p><p> for(int k=0;k<col*row;k++){</p><p> int m1=k/col+1;</p><p> int n1=k%col+1;</p><p> if(a[m1][n1]!=10&&btns[k
120、].getText()=="★"){</p><p> btns[k].setText("*o*");</p><p><b> }</b></p><p><b> }</b></p><p> for(int j=0;j<col*row;j+
121、+){</p><p> int m=j/col+1;</p><p> int n=j%col+1;</p><p> if(a[m][n]==100){</p><p> btns[j].setText("★");</p><p> btns[j].setEnabled(false);
122、</p><p> b3.setText("你輸了!!");</p><p><b> }</b></p><p> btns[j].setEnabled(false);</p><p> a[m][n]=10;</p><p><b> }<
123、/b></p><p> timer.stop();</p><p><b> }</b></p><p> else if(e.getSource()==btns[i]){</p><p> if(a[x][y]==0){</p><p> out(a,btns,e,i,x
124、,y);</p><p> a[x][y]=10;</p><p> btns[i].setEnabled(false); </p><p><b> }</b></p><p> if(a[x][y]!=0&&a[x][y]!=10){</p><p> btns[i]
125、.setText(a[x][y]+"");</p><p> btns[i].setEnabled(false);</p><p> a[x][y]=10;</p><p><b> }</b></p><p><b> }</b></p><p>
126、; }else if(btns[i].getText()=="★"){</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> classNormoreMouseEvent
127、 extends MouseAdapter{</p><p> public void mouseClicked(MouseEvent e) {</p><p> System.out.println(b);</p><p> for(inti=0;i<col*row;i++){</p><p> int x1=i/col+1;
128、</p><p> int y1=i%col+1;</p><p> if(e.getSource()==btns[i]&&btns[i].getText()!="★"&&a[x1][y1]!=10)</p><p><b> {</b></p><p> if
129、(e.getButton()==MouseEvent.BUTTON3){</p><p> btns[i].setText("★");</p><p><b> b--;</b></p><p><b> if(b==0){</b></p><p> int flag=0
130、;</p><p> for(int j=0;j<col*row;j++){</p><p> int x=j/col+1;</p><p> int y=j%col+1;</p><p> if(a[x][y]==100&&btns[j].getText()=="★"){</p>
131、<p><b> flag++;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(flag==bon){</p><p> timer.stop();</p><p>
132、 b3.setText("你贏了!");</p><p><b> }</b></p><p><b> }</b></p><p> b1.setText(b+"");</p><p><b> }</b></p>
133、<p> }else if(e.getSource()==btns[i]&&btns[i].getText()=="★"&&a[x1][y1]!=-1){</p><p> if(e.getButton()==MouseEvent.BUTTON3){</p><p> btns[i].setText("&quo
134、t;);</p><p><b> b++;</b></p><p> if(b>bon){</p><p> b1.setText(bon+""); </p><p><b> }</b></p><p><b> else{&
135、lt;/b></p><p> b1.setText(b+"");</p><p><b> }</b></p><p> btns[i].setEnabled(true);</p><p><b> }</b></p><p>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 掃雷畢業(yè)設(shè)計(jì)---基于java掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn)
- java課程設(shè)計(jì)-掃雷游戲
- java掃雷游戲課程設(shè)計(jì)
- java課程設(shè)計(jì)--掃雷游戲報告
- java_課程設(shè)計(jì)報告_拼圖游戲
- java_課程設(shè)計(jì)報告_拼圖游戲
- 基于java的掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- java課程設(shè)計(jì)報告-掃雷小游戲
- 基于java的掃雷游戲課程設(shè)計(jì)
- java掃雷課程設(shè)計(jì)
- java 課程設(shè)計(jì) 掃雷
- java掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn)
- java課程設(shè)計(jì)--基于java的掃雷游戲軟件設(shè)計(jì)
- java版掃雷游戲設(shè)計(jì)與實(shí)現(xiàn)
- 基于java的掃雷游戲設(shè)計(jì)與實(shí)現(xiàn)
- java_五子棋小游戲課程設(shè)計(jì)
- java_計(jì)算器課程設(shè)計(jì)
- 掃雷游戲課程設(shè)計(jì)報告
- 掃雷游戲課程設(shè)計(jì)報告
- 掃雷小游戲課程設(shè)計(jì)
評論
0/150
提交評論