java課程設計--掃雷游戲報告_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  計算機科學與技術系</b></p><p><b>  課程設計報告</b></p><p>  20013~2014學年第一學期</p><p><b>  2013年9月</b></p><p><b>  目 錄</b>

2、;</p><p>  第一章 設計內容及要求1</p><p>  1.1 掃雷游戲的基本要求1</p><p>  1.2 游戲需要實現(xiàn)的主要功能1</p><p>  第二章 需求分析2</p><p>  2.1掃雷游戲界面設計 2</p><p>  2.2 雷區(qū)的設計 2

3、</p><p>  2.3 音效的設計3</p><p>  2.4 掃雷英雄榜的設計3</p><p>  第三章 總體設計5</p><p>  3.1 總體功能圖5</p><p>  3.2 總體流程圖5</p><p>  第四章 主要功能設計流程6</p>

4、<p>  4.1 雷區(qū)設計流程圖6</p><p>  4.2 音效設計流程圖6</p><p>  4.3 英雄榜設計流程圖7</p><p>  第五章 主要功能設計流程8</p><p>  5.1 類之間關系圖8</p><p>  5.2 程序運行效果圖8</p>&l

5、t;p>  5.2.1 游戲登錄界面 8</p><p>  5.2.2 游戲菜單界面 9</p><p>  5.2.3 游戲運行界面 10</p><p>  5.2.4 游戲英雄榜界面 12</p><p><b>  第六章 總結13</b></p><p><b&g

6、t;  參考文獻14</b></p><p><b>  附錄15</b></p><p><b>  設計內容及要求</b></p><p>  1.1掃雷游戲的基本要求</p><p>  當前各種游戲層出不窮,因為游戲的開發(fā)成本非常大,所以游戲的開發(fā)具有一定的風險性,但是一些小

7、游戲的開發(fā)成本具有成本小,編寫簡單的優(yōu)勢,所以這些小游戲在游戲開發(fā)中也占有一席之地。在這類小游戲中包括益智類游戲,它以畫面精美、游戲方法簡單等特點得到大家的認可。成為人們在工作之余不可或缺的好伙伴。針對這種情況我選擇了掃雷游戲該課題作為我的課程題目。</p><p>  Windows XP和Windows 7系統(tǒng)提供的掃雷游戲是一個很有趣的游戲。本次課程設計的主要任務是使用JAVA語言編寫一個與其類似的掃雷游戲

8、。具體要求如下:</p><p>  1、掃雷游戲分為初級、中級和高級三個級別,同時掃雷英雄榜存儲每個級別的最好成績,即挖出全部的地雷且用時最少者。單擊游戲菜單可以選擇“初級”、“中級”和“高級”或“查看英雄版”。</p><p>  2、選擇級別后將出現(xiàn)相應級別的掃雷區(qū)域,這時用戶使用鼠標左鍵單擊雷區(qū)中任何一個方塊便啟動了計時器。</p><p>  3、用戶要揭

9、開某個方塊,可單擊它。若所揭方塊下有雷,用戶便輸了這一局,若所揭方塊下沒有雷,則顯示一個數字,該數字代表此方塊周圍的8個方塊中共有多少顆雷。</p><p>  4、如果用戶認為某個方塊下埋著雷,單擊右鍵可以在方塊上標識一個用戶認為是雷的圖標,即給出一個掃雷標記。用戶每標記出一個掃雷標記(無論用戶的標記是否正確),窗口左上角的雷數計數器將會減少一個。</p><p>  5、掃雷勝利后(用

10、時最少者),程序彈出保存成績的對話框。</p><p>  6、用戶如果遇到疑問的方塊,可以勾選游戲菜單下的標記選項卡(或者用快捷鍵Alt+G然后點擊M)即可標記該可疑方塊,此時雙擊右鍵并可出現(xiàn)“?”標記。另有顏色選項,當用戶選中該項時,游戲將以最低圖像像素來顯示。</p><p>  7、如果用戶需要使用提示聲,可選中聲音選項,此時將聽到計時的咔嗒聲。當用戶點中雷時,將有爆炸聲產生;勝利

11、時,將有凱旋的旋律播放,此時企鵝出現(xiàn)歡悅表情。</p><p>  游戲需要實現(xiàn)的主要功能</p><p>  1、用戶可以自定義級別并且可以任意輸入雷數;</p><p>  2、具有計時功能,既顯示用戶完成所有掃雷任務所需要的時間;</p><p>  3、自動保存掃雷英雄榜。</p><p><b> 

12、 需求分析</b></p><p>  2.1 掃雷游戲界面設計</p><p>  系統(tǒng)的整體布局為:CardLayout布局,采用了菜單、按鈕、面板等組件,菜單主要包括開始、選擇級別、標記、掃雷英雄榜、退出等選項。</p><p><b>  2.2 雷區(qū)的設計</b></p><p>  MineAre

13、a類是java.swing包中Jpanel容器的子類,實現(xiàn)了ActionListener和MouseListener接口,所創(chuàng)建的對象:mineArea是MineGame類中最重要的成員之一,作為一個容器添加到MineGame窗口的中心。其中MineArea類的主要成員變量、方法以及和MineGame類之間組合關系的UML圖如圖2-1所示。</p><p>  圖2-1 MineArea類的UML圖</p&

14、gt;<p>  以下是UML圖中有關數據和方法的詳細說明。</p><p><b>  1、成員變量</b></p><p>  (1)block是Block類型的數組,用來確定雷區(qū)有多少需進行掃雷的方塊。</p><p>  (2)blockView是BlockView類型的數組,負責為block數組中的Block對象提供視圖

15、。</p><p>  (3)lay是LayMines類型的對象,負責設置block數組中的哪些方塊是雷或不是雷。</p><p>  (4)record負責提供保存成績的界面,是一個對話框,默認不可見。用戶只有掃雷成功后(用時最少),才可以看見對話框。</p><p>  (5)reStart是一個按鈕對象,用戶單擊它重新開始游戲。</p><

16、p>  (6)time是計時器對象,負責計算用戶的用時。</p><p><b>  2、方法</b></p><p>  (1)initMineArea(int,int,int,int)方法可根據參數提供的數據設置雷區(qū)的寬度、高度、雷的數目以及雷區(qū)的級別。</p><p>  (2)actionPerformed(ActionEvent

17、)是MineArea類實現(xiàn)的ActionListener接口中的方法。當用戶單擊blockView中的某個方塊時,actionPerformed(ActionEvent)方法負責執(zhí)行有關算法,例如,當用鼠標左鍵單擊方塊上的按鈕后,若該方塊下有雷,actionPerformed(ActionEvent)方法將使用戶輸掉本局,若該方塊下無雷,actionPerformed(ActionEvent)方法將顯示blockView對象中的標簽,該

18、標簽上是一個數字,該數字代表當前方塊的周圍的8個方塊中共有多少顆雷。</p><p>  (3)show()方法是一個遞歸方法。actionPerformed(ActionEvent)方法執(zhí)行時將調用show方法進行掃雷。</p><p>  (4)mousePressed(MouseEvent)方法是MineArea類實現(xiàn)的MouseListener接口中的方法,當用戶按下鼠標有件事mo

19、usePressed(MouseEvent)方法負責讓方塊上顯示一個探雷標記。</p><p>  (5)inquireWin()方法用來判斷用戶是否掃雷成功,如果成功該方法負責讓record對話框可見。所謂掃雷成功是指不僅找到了全部的累而且用時最少。</p><p><b>  2.3 音效的設計</b></p><p>  music類是j

20、ava.awt包中Frame的子類,通過構造音效聲音方法,在MainFrame主類中,通過ActionListener來監(jiān)視是否已開始游戲,來決定播放計時聲,之后又通過ActionListener來監(jiān)視是否踩到雷和是否完成來決定,播放相應的音樂。下面標明music類的主要成員變量、方法以及和MineFrame類之間組合關系的UML圖如圖2-2所示。</p><p>  圖2-2 MineArea類的UML圖&l

21、t;/p><p>  2.4 掃雷英雄榜的設計</p><p>  LogDialog是javax.swing包中Jdialog對話框的子類,并實現(xiàn)了ActiongListener接口。LogDialog創(chuàng)建的對象dialog是MainFrame類(主類)的成員之一,當用戶選擇查看“英雄榜”菜單項時,該對話框可見,提供了查看掃雷的最好成績的界面。標明LogDialog類的主要成員變量、方法以及

22、和MainFrame類之間組合關系的UML圖如圖2-3所示。</p><p>  圖2-3 LogDialog類的UML圖</p><p><b>  總體設計</b></p><p><b>  3.1 總體功能圖</b></p><p>  圖3-1 總體功能圖</p><

23、p><b>  3.2 總體流程圖</b></p><p>  圖3-2 總體流程圖</p><p><b>  主要功能設計流程</b></p><p>  4.1 雷區(qū)設計流程圖</p><p>  圖4-1 雷區(qū)設計流程圖</p><p>  4.2 音效設計流程

24、圖</p><p>  圖4-2 音效設計流程圖</p><p>  4.3 英雄榜設計流程圖</p><p>  圖4-3 排行榜設計流程圖</p><p><b>  運行結果</b></p><p>  5.1 類之間關系圖</p><p>  圖5-1 類之間關系圖

25、</p><p><b>  程序運行效果圖</b></p><p>  5.2.1游戲登錄界面</p><p>  圖5-2 初級掃雷界面圖</p><p>  圖5-3 初級掃雷界面圖</p><p>  圖5-4 高級掃雷界面圖</p><p>  5.2.2游戲菜單

26、界面</p><p>  圖5-5 游戲菜單界面</p><p>  5.2.3游戲運行界面</p><p>  圖5-6 游戲自定義雷區(qū)界面</p><p>  圖5-7 游戲運行主界面</p><p>  圖5-8 游戲失敗界面</p><p>  圖5-9 游戲勝利界面</p>

27、<p>  5.2.4游戲英雄榜界面</p><p>  圖5-10 游戲英雄榜界面</p><p><b>  總結</b></p><p>  此次課程設計的題目為掃雷游戲,通過課程設計,進一步鞏固、加深我們所學專業(yè)課程《JAVA語言教程》的基本理論知識,理論聯(lián)系實際,進一步培養(yǎng)我們的綜合分析問題,解決問題的能力;全面考核我們

28、所掌握的基本理論知識及其實際業(yè)務能力,從而達到提高學生素質的最終目的;利用所學知識,開發(fā)小型應用系統(tǒng),掌握運用JAVA語言編寫調試應用系統(tǒng)程序,訓練獨立開發(fā)應用系統(tǒng),進行數據處理的綜合能力;對于給定的設計題目,如何進行分析,理清思路,并給出相應的數學模型;熟練掌握JAVA語言的GUI設計、線程技術,靈活運用各種類庫,為今后從事實際工作打下堅實的基礎。通過該課程設計,全面系統(tǒng)的理解了JAVA語言的一般原理和基本實現(xiàn)方法。把死板的課本知識變

29、得生動有趣,激發(fā)了學習的積極性。把學過的JAVA的知識強化,能夠把課堂上學的知識通過自己設計的程序表示出來,加深了對理論知識的理解。 </p><p>  我在網上查詢了許多與掃雷游戲程序的相關資料,終于完成了掃雷游戲的設計。程序基本實現(xiàn)了該課程設計的基本要求。在設計的過程中了解到自己的知識還是比較有限,更肯定了自己再以后學習編程的道路上的堅定不移,同時也讓我懂得組合作的重要性。但由于只學習了一個學期的Java

30、語言,自己水平有限,使得程序還是有些不完善的地方?;仡櫰鸫舜蜫ava課程設計,至今我仍感慨頗多,的確,從拿到題目的開始,從理論到實踐,在整整兩個星期的日子里,可以說是苦多于甜,但是可以學到很多很多的東西,同時不僅可以鞏固了以前所學的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實踐相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正掌握這門技術,也

31、提高了自己的獨立思考的能力。在設計的過程遇到問題,可以說得上是困難重重,這畢竟第一次做的,難免會遇到各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設計之后,一定把以前所學的知識重新溫故。</p><p><b>  參考文獻</b></p><p>  [1] 呂鳳羽、馬皓《JAVA程序設計》清華

32、大學出版社</p><p>  [2] 耿祥義 《JAVA課程設計》 清華大學出版</p><p>  [3] 黃小東 《Java課程設計案例精編》中國水利水電出版社</p><p>  [4] 印旻 《Java與面向對象程序設計》清華大學出版社</p><p><b>  附 錄</b></p&

33、gt;<p>  游戲登陸界面部分源代碼</p><p>  public class LogDialog extends JDialog implements ActionListener {</p><p>  private LevelLog levelLog[];</p><p>  private JTextArea logArea;<

34、/p><p>  private JButton resetButton;</p><p>  private JButton confirmButton;</p><p>  public LogDialog(JFrame frame, LevelLog log[]) {</p><p>  super(frame, "掃雷英雄榜&q

35、uot;, true);</p><p>  getContentPane().set Layout(null);</p><p>  levelLog = log;</p><p>  logArea = new JTextArea();</p><p>  logArea.setEditable(false);</p>&l

36、t;p>  logArea.setBackground(UIManager.getColor("CheckBox.background"));</p><p>  logArea.setBounds(10,10,160,60);</p><p>  getContentPane().add(logArea, null);</p><p> 

37、 resetButton = new JButton("重新計分");</p><p>  resetButton.setBounds(10,70,90,25);</p><p>  resetButton.addActionListener(this);</p><p>  getContentPane().add(resetButton, n

38、ull);</p><p>  setTextArea();</p><p>  confirmButton = new JButton("確定");</p><p>  confirmButton.setBounds(105,70,60,25);</p><p>  confirmButton.addActionList

39、ener(this);</p><p>  getContentPane().add(confirmButton, null);</p><p>  setSize(180,140);</p><p>  setLocationRelativeTo(frame);</p><p>  setResizable(false);</p>

40、;<p><b>  show();</b></p><p><b>  }</b></p><p>  private void setTextArea() {</p><p>  logArea.setText("初級:" + levelLog[0].toString()</p&

41、gt;<p>  + "中級:" + levelLog[1].toString()</p><p>  + "高級:" + levelLog[2].toString());</p><p><b>  }</b></p><p>  public void actionPerformed(A

42、ctionEvent e) {</p><p>  if(e.getSource()==resetButton) {</p><p>  for(int i=0;i<3;i++) {</p><p>  levelLog[i].setDefault();</p><p><b>  }</b></p>

43、<p>  setTextArea();</p><p><b>  } else {</b></p><p>  dispose();</p><p><b>  }</b></p><p><b>  }</b></p><p><

44、b>  }</b></p><p><b>  雷區(qū)設計代碼</b></p><p>  public class LedNumber extends Component {</p><p>  private Polygon segmentPolygon[];</p><p>  private in

45、t numberSegment[][] = {</p><p>  {0, 1, 2, 3, 4, 5 }, //0</p><p>  {1, 2 }, //1</p><p>  {0, 1, 3, 4, 6 }, //2</p><p>  {0, 1, 2, 3, 6 }, //3</p><p&

46、gt;  {1, 2, 5, 6 }, //4</p><p>  {0, 2, 3, 5, 6 }, //5</p><p>  {0, 2, 3, 4, 5, 6 }, //6</p><p>  {0, 1, 2 }, //7</p><p>  {0, 1, 2, 3, 4, 5, 6 }, //8</p>

47、;<p>  {0, 1, 2, 3, 5, 6 } //9 };</p><p>  private int div[] = {1,10,100,1000,10000,100000};</p><p>  private Image numberImage[];</p><p>  private Color fontColor = Color.

48、red; //the color of number</p><p>  private Color bgColor = Color.black;</p><p>  private Color maskColor = Color.darkGray;</p><p>  private int dWidth = 12;</p><p> 

49、 private int dHeight = 21;</p><p>  public LedNumber() {</p><p>  init(); }</p><p>  public LedNumber(Color fc) {</p><p>  fontColor = fc;</p><p>  init(

50、); }</p><p>  public LedNumber(Color fc, Color bgc) {</p><p>  bgColor = bgc;</p><p>  fontColor = fc;</p><p>  init(); }</p><p>  public LedNumber(Color

51、 fc,Color bgc,Color mc) {</p><p>  bgColor = bgc;</p><p>  fontColor = fc;</p><p>  maskColor = mc;</p><p>  init(); }</p><p>  public Image getLedImage(i

52、nt dg, int bound) {</p><p>  dg %= div[bound];</p><p>  Image image = new BufferedImage(dWidth*bound, dHeight,BufferedImage.TYPE_INT_RGB);</p><p>  Graphics g = image.getGraphics();

53、</p><p><b>  bound--;</b></p><p>  for(int i = bound;i>=0;i--) {</p><p>  g.drawImage(numberImage[dg/div[i]],(bound-i)*dWidth,0,this);</p><p>  dg %= div

54、[i]; }</p><p>  return image; }</p><p>  public void init() {</p><p>  segmentPolygon = new Polygon[7];</p><p>  numberImage = new Image[10];</p><p>  

55、//setup polygons</p><p>  setNumberPolygon();</p><p>  setNumberImage(); }</p><p>  public void setBackGround(Color bgc) {</p><p>  bgColor = bgc; }</p><

56、p>  public void setFontColor(Color fc) {</p><p>  fontColor = fc; }</p><p>  public void setMaskColor(Color mkc) {</p><p>  maskColor = mkc; }</p><p>  public void

57、setDigitWidth(int w) {</p><p>  dWidth = w;</p><p>  init(); }</p><p>  public void setDigitHeight(int h) {</p><p>  dHeight = h;</p><p>  init(); }<

58、/p><p>  public void setDigitSize(int w, int h) {</p><p>  dWidth = w;</p><p>  dHeight = h;</p><p>  init(); }</p><p>  private void setNumberImage() {</

59、p><p>  int i = 0;</p><p>  int j = 0;</p><p><b>  int k;</b></p><p>  Graphics g;</p><p>  while(i<10) {</p><p>  numberImage[i]

60、= new BufferedImage(15,20,BufferedImage.TYPE_INT_RGB);</p><p>  g = numberImage[i].getGraphics();</p><p>  g.setColor(bgColor);</p><p>  g.fillRect(0,0,15,20);</p><p> 

61、 g.setColor(Color.DARK_GRAY);</p><p><b>  j = 0;</b></p><p>  while(j<numberSegment[8].length) {</p><p>  k = numberSegment[8][j];</p><p>  g.fillPolygon

62、(segmentPolygon[k]);</p><p>  j++; }</p><p>  g.setColor(fontColor);</p><p><b>  j = 0;</b></p><p>  while(j<numberSegment[i].length) {</p>&l

63、t;p>  k = numberSegment[i][j];</p><p>  g.fillPolygon(segmentPolygon[k]);</p><p><b>  j++; }</b></p><p><b>  i++; }</b></p><p><b>  }

64、 </b></p><p>  public void setNumberPolygon() {</p><p>  int mid = dHeight/2+1;</p><p>  segmentPolygon[0] = new Polygon();</p><p>  segmentPolygon[0].addPoint(2

65、, 1);</p><p>  segmentPolygon[0].addPoint(dWidth-2,1);</p><p>  segmentPolygon[0].addPoint(dWidth-5,4);</p><p>  segmentPolygon[0].addPoint(4,4);</p><p>  segmentPolygo

66、n[1] = new Polygon();</p><p>  segmentPolygon[1].addPoint(dWidth-1, 1);</p><p>  segmentPolygon[1].addPoint(dWidth-1, mid-1);</p><p>  segmentPolygon[1].addPoint(dWidth-2, mid-1);&l

67、t;/p><p>  segmentPolygon[1].addPoint(dWidth-4, mid-3);</p><p>  segmentPolygon[1].addPoint(dWidth-4, 4);</p><p>  segmentPolygon[2] = new Polygon();</p><p>  segmentPolyg

68、on[2].addPoint(dWidth-1, mid);</p><p>  segmentPolygon[2].addPoint(dWidth-1, dHeight-2);</p><p>  segmentPolygon[2].addPoint(dWidth-4, dHeight-5);</p><p>  segmentPolygon[2].addPoin

69、t(dWidth-4, mid+1);</p><p>  segmentPolygon[2].addPoint(dWidth-3, mid);</p><p>  segmentPolygon[3] = new Polygon();</p><p>  segmentPolygon[3].addPoint(dWidth-2, dHeight-1);</p&g

70、t;<p>  segmentPolygon[3].addPoint(1, dHeight-1);</p><p>  segmentPolygon[3].addPoint(4, dHeight-4);</p><p>  segmentPolygon[3].addPoint(dWidth-4, dHeight-4);</p><p>  segmen

71、tPolygon[4] = new Polygon();</p><p>  segmentPolygon[4].addPoint(1, dHeight-2);</p><p>  segmentPolygon[4].addPoint(1, mid);</p><p>  segmentPolygon[4].addPoint(3, mid);</p>

72、<p>  segmentPolygon[4].addPoint(4, mid+1);</p><p>  segmentPolygon[4].addPoint(4, dHeight-5);</p><p>  segmentPolygon[5] = new Polygon();</p><p>  segmentPolygon[5].addPoint(1

73、, mid-1);</p><p>  segmentPolygon[5].addPoint(1, 1);</p><p>  segmentPolygon[5].addPoint(4, 4);</p><p>  segmentPolygon[5].addPoint(4, mid-3);</p><p>  segmentPolygon[5

74、].addPoint(2, mid-1);</p><p>  segmentPolygon[6] = new Polygon();</p><p>  segmentPolygon[6].addPoint(3, mid-1);</p><p>  segmentPolygon[6].addPoint(4, mid-2);</p><p> 

75、 segmentPolygon[6].addPoint(dWidth-4, mid-2);</p><p>  segmentPolygon[6].addPoint(dWidth-3, mid-1);</p><p>  segmentPolygon[6].addPoint(dWidth-5, mid+1);</p><p>  segmentPolygon[6].

76、addPoint(4, mid+1);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  自定義掃雷界面代碼</b></p><p>  public class CustomDialog extends JDialog

77、 implements ActionListener {</p><p>  private JTextField widthField;</p><p>  private JTextField heightField;</p><p>  private JTextField mineField;</p><p>  private JB

78、utton confirmButton;</p><p>  private JButton cancelButton;</p><p>  private static LevelInfo level;</p><p>  public CustomDialog(Frame frame, LevelInfo levelInfo) {</p><

79、p>  super(frame,"自定義雷區(qū)",true);</p><p>  getContentPane().set Layout(null);</p><p>  JLabel tempLabel = new JLabel("高度:");</p><p>  tempLabel.setBounds(10,10,3

80、0,20);</p><p>  heightField = new JTextField(""+levelInfo.getXBound());</p><p>  heightField.setBounds(50,10,40,20);</p><p>  getContentPane().add(tempLabel,null);</p&g

81、t;<p>  getContentPane().add(heightField,null);</p><p>  tempLabel = new JLabel("寬度:");</p><p>  tempLabel.setBounds(10,40,30,20);</p><p>  widthField = new JTextFi

82、eld(""+levelInfo.getYBound());</p><p>  widthField.setBounds(50,40,40,20);</p><p>  getContentPane().add(tempLabel,null);</p><p>  getContentPane().add(widthField,null);&l

83、t;/p><p>  tempLabel = new JLabel("雷數:");</p><p>  tempLabel.setBounds(10,70,30,20);</p><p>  mineField = new JTextField(""+levelInfo.getMineCount());</p>&l

84、t;p>  mineField.setBounds(50,70,40,20);</p><p>  getContentPane().add(tempLabel,null);</p><p>  getContentPane().add(mineField,null);</p><p>  confirmButton = new JButton("確

85、定");</p><p>  confirmButton.addActionListener(this);</p><p>  confirmButton.setBounds(100,10,60,25);</p><p>  getContentPane().add(confirmButton,null);</p><p>  ca

86、ncelButton = new JButton("取消");</p><p>  cancelButton.addActionListener(this);</p><p>  cancelButton.setBounds(100,45,60,25);</p><p>  getContentPane().add(cancelButton,nu

87、ll);</p><p>  setSize(180,137);</p><p>  setLocationRelativeTo(frame);</p><p>  setResizable(false);</p><p><b>  show();</b></p><p><b>  

88、}</b></p><p>  public void actionPerformed(ActionEvent e) {</p><p>  level = null;</p><p>  if(e.getSource()==confirmButton) {</p><p>  int x = Integer.parseInt(h

89、eightField.getText());</p><p>  int y = Integer.parseInt(widthField.getText());</p><p>  int m = Integer.parseInt(mineField.getText());</p><p>  level = new LevelInfo(x,y,m);</p&

90、gt;<p><b>  }</b></p><p>  dispose();</p><p><b>  }</b></p><p>  public static LevelInfo getUserLevel(JFrame frame, LevelInfo levelInfo) {</p>

91、<p>  CustomDialog dialog = new CustomDialog(frame, levelInfo);</p><p>  return level;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>

92、  掃雷英雄榜界面代碼</b></p><p>  public class LogDialog extends JDialog implements ActionListener {</p><p>  private LevelLog levelLog[];</p><p>  private JTextArea logArea;</p>

93、<p>  private JButton resetButton;</p><p>  private JButton confirmButton;</p><p>  public LogDialog(JFrame frame, LevelLog log[]) {</p><p>  super(frame, "掃雷英雄榜",

94、true);</p><p>  getContentPane().set Layout(null);</p><p>  levelLog = log;</p><p>  logArea = new JTextArea();</p><p>  logArea.setEditable(false);</p><p>

95、;  logArea.setBackground(UIManager.getColor("CheckBox.background"));</p><p>  logArea.setBounds(10,10,160,60);</p><p>  getContentPane().add(logArea, null);</p><p>  reset

96、Button = new JButton("重新計分");</p><p>  resetButton.setBounds(10,70,90,25);</p><p>  resetButton.addActionListener(this);</p><p>  getContentPane().add(resetButton, null);&

97、lt;/p><p>  setTextArea();</p><p>  confirmButton = new JButton("確定");</p><p>  confirmButton.setBounds(105,70,60,25);</p><p>  confirmButton.addActionListener(t

98、his);</p><p>  getContentPane().add(confirmButton, null);</p><p>  setSize(180,140);</p><p>  setLocationRelativeTo(frame);</p><p>  setResizable(false);</p><

99、;p><b>  show();</b></p><p><b>  }</b></p><p>  private void setTextArea() {</p><p>  logArea.setText("初級:" + levelLog[0].toString()</p>&

100、lt;p>  + "中級:" + levelLog[1].toString()</p><p>  + "高級:" + levelLog[2].toString());</p><p><b>  }</b></p><p>  public void actionPerformed(ActionE

101、vent e) {</p><p>  if(e.getSource()==resetButton) {</p><p>  for(int i=0;i<3;i++) {</p><p>  levelLog[i].setDefault();</p><p><b>  }</b></p><p

102、>  setTextArea();</p><p><b>  } else {</b></p><p>  dispose();</p><p><b>  }</b></p><p><b>  }</b></p><p><b> 

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論