java_掃雷游戲課程設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)_第1頁
已閱讀1頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論