2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  計算機(jī)科學(xué)與技術(shù)系</b></p><p><b>  課程設(shè)計報告</b></p><p>  20013~2014學(xué)年第一學(xué)期</p><p><b>  2013年9月</b></p><p><b>  目 錄</b>

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

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

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

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

6、t;  參考文獻(xiàn)14</b></p><p><b>  附錄15</b></p><p><b>  設(shè)計內(nèi)容及要求</b></p><p>  1.1掃雷游戲的基本要求</p><p>  當(dāng)前各種游戲?qū)映霾桓F,因?yàn)橛螒虻拈_發(fā)成本非常大,所以游戲的開發(fā)具有一定的風(fēng)險性,但是一些小

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

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

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

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

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

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

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

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

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

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

17、)是MineArea類實(shí)現(xiàn)的ActionListener接口中的方法。當(dāng)用戶單擊blockView中的某個方塊時,actionPerformed(ActionEvent)方法負(fù)責(zé)執(zhí)行有關(guān)算法,例如,當(dāng)用鼠標(biāo)左鍵單擊方塊上的按鈕后,若該方塊下有雷,actionPerformed(ActionEvent)方法將使用戶輸?shù)舯揪?,若該方塊下無雷,actionPerformed(ActionEvent)方法將顯示blockView對象中的標(biāo)簽,該

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

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

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

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

22、和MainFrame類之間組合關(guān)系的UML圖如圖2-3所示。</p><p>  圖2-3 LogDialog類的UML圖</p><p><b>  總體設(shè)計</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>  主要功能設(shè)計流程</b></p><p>  4.1 雷區(qū)設(shè)計流程圖</p><p>  圖4-1 雷區(qū)設(shè)計流程圖</p><p>  4.2 音效設(shè)計流程

24、圖</p><p>  圖4-2 音效設(shè)計流程圖</p><p>  4.3 英雄榜設(shè)計流程圖</p><p>  圖4-3 排行榜設(shè)計流程圖</p><p><b>  運(yùn)行結(jié)果</b></p><p>  5.1 類之間關(guān)系圖</p><p>  圖5-1 類之間關(guān)系圖

25、</p><p><b>  程序運(yùn)行效果圖</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游戲運(yùn)行界面</p><p>  圖5-6 游戲自定義雷區(qū)界面</p><p>  圖5-7 游戲運(yùn)行主界面</p><p>  圖5-8 游戲失敗界面</p><p>  圖5-9 游戲勝利界面</p>

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

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

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

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

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

32、大學(xué)出版社</p><p>  [2] 耿祥義 《JAVA課程設(shè)計》 清華大學(xué)出版</p><p>  [3] 黃小東 《Java課程設(shè)計案例精編》中國水利水電出版社</p><p>  [4] 印旻 《Java與面向?qū)ο蟪绦蛟O(shè)計》清華大學(xué)出版社</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ū)設(shè)計代碼</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("雷數(shù):");</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)系上傳者。文件的所有權(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

提交評論