版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計-掃雷游戲
- java課程設(shè)計報告-掃雷小游戲
- java掃雷游戲課程設(shè)計
- 基于java的掃雷游戲課程設(shè)計
- 掃雷游戲課程設(shè)計報告
- 掃雷游戲課程設(shè)計報告
- java掃雷課程設(shè)計
- java 課程設(shè)計 掃雷
- java課程設(shè)計--基于java的掃雷游戲軟件設(shè)計
- c程序課程設(shè)計報告(掃雷游戲)
- java_掃雷游戲課程設(shè)計與實(shí)現(xiàn)畢業(yè)設(shè)計
- 掃雷游戲程序設(shè)計課程設(shè)計報告
- 掃雷小游戲課程設(shè)計
- 基于java的掃雷課程設(shè)計
- 基于java的掃雷課程設(shè)計
- java火柴游戲課程設(shè)計報告
- android平臺掃雷游戲課程設(shè)計
- java課程設(shè)計-猜數(shù)游戲課程設(shè)計報告
- java課程設(shè)計-蜘蛛紙牌游戲設(shè)計課程設(shè)計報告
- java課程設(shè)計報告--- 蜘蛛紙牌游戲
評論
0/150
提交評論