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

下載本文檔

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

文檔簡介

1、<p>  Java 課程設(shè)計(jì)</p><p>  題目: 掃 雷 游 戲</p><p>  系 別 信息與計(jì)算科學(xué)</p><p>  專業(yè)班級 信息與計(jì)算科學(xué)091班</p><p>  學(xué)生姓名 </p><p>  指導(dǎo)教師

2、 </p><p>  提交日期 2012年5月25日 </p><p><b>  目 錄</b></p><p>  一、設(shè)計(jì)目的(一級標(biāo)題,用黑體小三)3</p><p>  二、設(shè)計(jì)要求和設(shè)計(jì)指標(biāo)3</p><p><b>  三、設(shè)計(jì)內(nèi)容3&l

3、t;/b></p><p>  3.1 總體設(shè)計(jì)..............................................................................................................3</p><p>  3.2 MineGame類................................

4、.........................................................................4</p><p>  3.3 MineArea..............................................................................................................

5、5</p><p>  3.4 Block類………………………………………………………………………………………………………………………………………………… 7</p><p>  3.5 BlockView類……………………………………………………………………………………………………………………………………… 7</p><p>  3.6 LayMines類

6、………………………………………………………………………………………………………………………………………… 9</p><p>  3.7 Record類……………………………………………………………………………………………………………………………………………… 9</p><p>  3.8 ShowRecord類………………………………………………………………………………………………

7、……………………………………10</p><p>  3.9 userDefine 類………………………………………………………………………………………………………………………………… 11</p><p>  3.10 voiceShow類……………………………………………………………………………………………………………………………………..13</p><p>

8、;  3.11 ruleShow 類……………………………………………………………………………………………………………………………………….14</p><p>  3.12 authorShow 類………………………………………………………………………………………………………………………………….16</p><p>  3.13所需圖像…………………………………………………………………

9、…………………………………………………………………………….17</p><p>  3.14所需音頻…………………………………………………………………………………………………………………………………………… 17</p><p>  3.15 整體效果…………………………………………………………………………………………………………………………………………… 17</p>

10、<p>  四、本設(shè)計(jì)改進(jìn)和建議20</p><p>  五、總結(jié)(感想和心得等)20</p><p>  六、主要參考文獻(xiàn)20</p><p><b>  附錄20</b></p><p><b>  一、設(shè)計(jì)目的</b></p><p>  通過選擇

11、《Java課程設(shè)計(jì)(第二版)》中掃雷游戲,這個(gè)綜合性的題目作為本次的課程設(shè)計(jì)??梢宰屛覀兏邮煜ava程序設(shè)計(jì)這門課程,學(xué)會熟練使用Jcreator這個(gè)軟件,加深對Java語言的掌握,提高編程水平。同時(shí)培養(yǎng)獨(dú)立思考和同學(xué)間團(tuán)結(jié)合作的能力,為畢業(yè)設(shè)計(jì)以及將來的工作打下堅(jiān)實(shí)的基礎(chǔ)。</p><p>  二、設(shè)計(jì)要求和設(shè)計(jì)指標(biāo)</p><p>  參考Windows 2000/XP系統(tǒng)提供的掃

12、雷游戲,改進(jìn)掃雷游戲程序, 增加以下功能:在主界面中添加一個(gè)菜單欄,菜單欄中包括游戲和幫助兩個(gè)菜單,其中游戲菜單中設(shè)置初級、中級、高級、自定義、聲音、掃雷英雄榜這幾個(gè)菜單項(xiàng),幫助菜單中設(shè)置游戲規(guī)則和制作人員兩個(gè)菜單項(xiàng)。</p><p><b>  設(shè)計(jì)內(nèi)容</b></p><p><b>  3.1總體設(shè)計(jì)</b></p><

13、p>  在設(shè)計(jì)掃雷游戲時(shí),需要編寫 個(gè)Java源文件:MineGame.java、MineArea.java、Block.java、BlockView.java、LayMines.Java、Record.java、ShowRecord.java、voiceShow.java、userDefine.java、autherShow.java、ruleShow</p><p>  掃雷游戲除了需要編寫上述java

14、 源文件所給出的類外,還需要Java 系統(tǒng)提供的一些重要的類,如File、JButton、和Jlabel等類。掃雷游戲所用到的一些重要的類以及之間的組合關(guān)系如圖1所示:</p><p>  圖1 類之間的組合關(guān)系</p><p>  3.2 MineGame類 </p><p>  3.2.1. 效果圖(如下圖2)</p><p>  圖

15、2 MineGame創(chuàng)建的窗口</p><p>  3.2.2 UML類圖</p><p>  MineGame類是javax.swing 包中Jframe的一人子類,并實(shí)現(xiàn)了ActionListener接中,標(biāo)明該類的主要成員變量和方法的UML圖如圖3所示</p><p>  圖3 MineGame類的UML圖</p><p>  

16、以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說明。</p><p><b>  成員變量</b></p><p>  · bar和fileMenu提供菜單操作,單擊游戲菜單中的選項(xiàng)為“初級”“中級”“高級”“自定義”“掃雷英雄榜”“背景聲音”“退出”“游戲規(guī)則”“制作人”等</p><p>  ·MineArea 是掃雷區(qū)域,提供有

17、關(guān)掃雷的主要功能。</p><p>  ·“英雄榜”負(fù)責(zé)存放三個(gè)級別的掃雷最好成績。</p><p>  ·showheroRecord負(fù)責(zé)顯示英雄榜中的數(shù)據(jù)</p><p>  ·userdefine負(fù)責(zé)用戶自定義功能</p><p>  ·VoiceShow 負(fù)責(zé)背景音樂功能</p>

18、<p>  ·ruleshow負(fù)責(zé)顯示游戲規(guī)則功能</p><p>  ·authorshow負(fù)責(zé)顯示作者功能</p><p><b>  2)</b></p><p>  ·MineGame()是橘色造方法,負(fù)責(zé)完成窗口的主要功能</p><p>  ·actionPe

19、rformed(ActionEvent)方法是MineGame類實(shí)現(xiàn)的ActionListerer接口中的方法,該方法負(fù)責(zé)執(zhí)行菜單發(fā)出的有關(guān)命令。用戶選擇菜單項(xiàng)可以觸發(fā)ActionEvent事件,導(dǎo)致actionPerformed(ActionEvent)方法執(zhí)行相應(yīng)的操作,例如將mineAreaw創(chuàng)建的雷區(qū)設(shè)置為初級 中級 高級等</p><p>  ·Main(String[])方法是程序的入口方法

20、</p><p>  3.2.3代碼(見附錄1)</p><p>  3.3 MineArea</p><p>  3.3.1 效果圖:(見下圖4)</p><p>  圖4 MineArea創(chuàng)建的掃雷區(qū)域效果圖</p><p>  3.3.2 UML圖</p><p>  MineArea

21、類是javax.swing包中JPanel容器的子類,實(shí)現(xiàn)了ActionListener和MouserListener接口,所創(chuàng)建的對象:mineArea是MineGame類中最重要的成員之一,作為一個(gè)容器添加到MineGame窗口的中心。標(biāo)明MineArea類的主要成員變量、方法以及和MineGame類之間組合關(guān)系的UML圖如圖5:</p><p>  圖5 MineGame類之間組合關(guān)系的UML圖</

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

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

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

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

26、)方法將顯示BlockView對象中的標(biāo)簽,該標(biāo)簽上是一個(gè)數(shù)字,該數(shù)字代表當(dāng)前方塊的周圍的8個(gè)方塊中總共有多少顆雷</p><p>  ·show()方法是一個(gè)遞歸方法。actionPerformed(ActionEvent)方法執(zhí)行時(shí)將調(diào)用show方法進(jìn)行掃雷。</p><p>  ·mousePress(MouseEvent)方法是MineArea類實(shí)現(xiàn)的Mouse

27、Listener接口中的方法,當(dāng)用戶按下鼠標(biāo)右鍵時(shí),mousePress(MouseEvent)方法負(fù)責(zé)讓方塊上顯示一個(gè)探雷標(biāo)記。</p><p>  ·inquireWin()方法用來判斷用戶是否掃雷成功,如果成功該方法負(fù)責(zé)讓record對話框可見。所謂掃雷成功是指不僅找到了全部的雷而且用時(shí)最少。</p><p>  3.3.3代碼(見附錄2)</p><p

28、>  3.4 Block類</p><p><b>  3.4.1.效果圖</b></p><p>  Block對象負(fù)責(zé)封裝雷區(qū)中方塊中的數(shù)據(jù)以及對這些數(shù)據(jù)的操作,外觀效果由Blockview負(fù)責(zé)提供(見后面的BlockView)。</p><p>  3.4.2.UML圖</p><p>  Block類創(chuàng)建

29、的對象是數(shù)組block的單元的對象。Block型數(shù)組block是MineArea類的重要成員之一。標(biāo)明Block類的主要成員變量和方法以及和MineArea類之間的組合關(guān)系的UML圖如下圖6:</p><p>  圖6 Block類的UML圖</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)的方法的詳細(xì)說明。</p><p><b>  1)成員變量<

30、/b></p><p>  ·name是方塊上的名字。</p><p>  ·aroundMineNumber是方塊周圍雷的數(shù)目。</p><p>  ·mineIcon是方塊上雷的圖標(biāo)。</p><p>  ·sMine用來表示方塊是否是雷。</p><p>  

31、3;isMark用來表示方塊是否被標(biāo)記。</p><p>  ·isOpen用來表示方塊是否被挖開。</p><p><b>  2)方法</b></p><p>  ·setAroundMineNumber(int)方法用來設(shè)置aroundMineNumber的值。</p><p>  ·

32、getAroundMineNumber()方法用來獲取aroundMineNumber的值。</p><p>  3.4.3代碼(見附錄3)</p><p>  3.5 BlockView類</p><p><b>  3.5.1.效果圖</b></p><p>  BlockView創(chuàng)建的對象負(fù)責(zé)為Block對象提供

33、視圖,以便用戶通過該視圖與Block對象交互。BlockView對象使用一個(gè)標(biāo)簽和按鈕為Block對象提供視圖,標(biāo)簽和按鈕按著卡片布局層疊在一起,默認(rèn)狀態(tài)按鈕遮擋住標(biāo)簽。當(dāng)用戶單擊按鈕后,如果Block對象時(shí)雷,BlockView對象中的標(biāo)簽顯示的事雷的圖標(biāo);如果Block對象不是雷,標(biāo)簽顯示的是周圍雷的總數(shù)。效果如圖7所示:</p><p>  圖7 BlockView對象</p><p&

34、gt;  3.5.2.UML圖</p><p>  BlockView類是javax。swing包中JPanel類的一個(gè)子類,創(chuàng)建的對象是數(shù)組blockView的單元中的對象。BlockView型數(shù)組BlockView是MineArea類的重要成員之一。標(biāo)明BlockView類的主要成員變量和方法以及和MineArea類之間的組合關(guān)系的UML圖如圖8:</p><p>  圖8 Mine

35、Area類的UML圖</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)的方法的詳細(xì)說明。</p><p><b>  1)成員變量</b></p><p>  ·blockNameOrIcon用來顯示Block對象的name,number和mineIcon屬性。</p><p>  ·blockCover

36、用來遮擋blockNameOrIcon。</p><p><b>  ·card卡片布局</b></p><p><b>  2)方法</b></p><p>  ·giveView(Block block)方法給參數(shù)指定的Block對象提供視圖,如果Block對象的isMine屬性為true,即方塊是

37、雷,那么blockNameOrIcon標(biāo)簽上設(shè)置的文本就是Block對象的name屬性的值,同時(shí)blockNameOrIcon標(biāo)簽上設(shè)置的圖標(biāo)就是Block對象的mineIcon指定的圖標(biāo)。如果Block對象的isMine屬性為false,blockNameOrIcon標(biāo)簽上設(shè)置的圖標(biāo)就是Block對象的aroundMineNumber屬性的值,及周圍雷的數(shù)目</p><p>  ·seeblockNa

38、meOrIcon()方法讓用戶看見視圖中的標(biāo)簽,無法看見按鈕。</p><p>  ·seeblockNameOrIcon(0方法讓用戶看見視圖中的按鈕,無法看見標(biāo)簽。</p><p>  3.5.3代碼(見附錄4)</p><p>  3.6 LayMines類</p><p><b>  3.6.1.效果圖</

39、b></p><p>  LayMines對象使用隨機(jī)算法制定MineArea對象中的哪些Block對象是雷,哪些對象不是雷,沒有可現(xiàn)實(shí)的效果圖。</p><p>  3.6.2.UML圖</p><p>  LayMines創(chuàng)建的對象Lay是MineArea中的重要成員,表明該類的主要成員變量和方法以及和MineArea類之間組合關(guān)系的UML圖如圖9:<

40、;/p><p>  圖9 LayMines類的UML圖</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)的方法的詳細(xì)說明。</p><p><b>  1)成員變量</b></p><p>  mineIcon用來存放一個(gè)格式為gif的圖像。</p><p><b>  2)方法</b&

41、gt;</p><p>  layMinesForBlock(Block[][],in)方法對參數(shù)指定的Block數(shù)組進(jìn)行設(shè)置,其中int參數(shù)指定雷的數(shù)目,當(dāng)指定Block數(shù)組中每個(gè)單元中的方塊是雷時(shí),就將該房快上的圖標(biāo)設(shè)置為mineIcon,當(dāng)指定Block數(shù)組中每個(gè)單元中的方塊不是雷時(shí),就將該方塊的名字設(shè)置為周圍的雷的數(shù)目。</p><p>  3.6.3代碼(見附錄5)</p&

42、gt;<p>  3.7 Record類</p><p><b>  3.7.1.效果圖</b></p><p>  Record創(chuàng)建的對象負(fù)責(zé)提供保存成績的界面,效果如圖10:</p><p>  圖10 保存創(chuàng)建對話框</p><p>  3.7.2.UML圖</p><p&g

43、t;  Record是javax。swing包中jDialog對話框的子類,并實(shí)現(xiàn)了ActionListener接口。Record創(chuàng)建的對象:record是MineArea類的成員之一,當(dāng)用戶掃雷成功時(shí),該對象提供了保存成績到文件的界面。標(biāo)明Record類的主要成員變量,方法以及和MineArea類之間組合關(guān)系的UML圖如圖11:</p><p>  圖11 Record類的UML圖</p>&l

44、t;p>  以下是UML圖中有關(guān)數(shù)據(jù)的方法的詳細(xì)說明。</p><p><b>  1)成員變量</b></p><p>  ·textName提供用戶掃雷優(yōu)勝者輸入姓名</p><p>  ·用戶單擊”確定“按鈕,可以保存成績</p><p><b>  2)方法</b>

45、</p><p>  ·actionPerformed(ActionEvent)方法是Record類實(shí)現(xiàn)的ActionListener接口中的方法,當(dāng)用戶單擊”確定“按鈕后,該方法被執(zhí)行,所執(zhí)行的操作就是獲取用戶輸入的名字和用時(shí)然后調(diào)用writeRecord(String,String)方法將信息寫入”英雄榜“中。</p><p>  ·writeRecord(Stri

46、ng,String)方法負(fù)責(zé)將有關(guān)信息掃雷用時(shí),掃雷級別,掃雷優(yōu)勝者姓名等心思寫入到”英雄榜“文件。</p><p>  3.7.3代碼(見附錄6)</p><p>  3.8 ShowRecord類</p><p><b>  3.8.1.效果圖</b></p><p>  ShowRecord創(chuàng)建的對象負(fù)責(zé)提供顯

47、示成績的界面,效果如圖12:</p><p>  圖12 顯示成績對話框</p><p>  3.8.2.UML圖</p><p>  ShowRecord是javax。swing包中JDialog對話框的子類,并實(shí)現(xiàn)了ActionListener接口。ShowReacord創(chuàng)建的對象showHeroRecord是MineGame類的成員之一,當(dāng)用戶選擇查看&quo

48、t;英雄榜“菜單項(xiàng)時(shí),該對話框可見,提供了查看掃雷的最好成績的界面。標(biāo)明ShowRecord類的主要成員變量,方法以及和MineGame類之間組合關(guān)系的UML圖如圖13:</p><p>  圖13 ShowRecord類的UML圖</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)的方法的詳細(xì)說明。</p><p><b>  成員變量</b>&

49、lt;/p><p>  ·File存放文件的引用</p><p>  ·用戶單擊”顯示成績“按鈕,可以查看各個(gè)級別掃雷的最好成績。</p><p>  ·用戶單擊”重新計(jì)分“按鈕,可以將”英雄榜“中的成績恢復(fù)為初始值。</p><p><b>  2)方法</b></p><

50、p>  ·actionPerformed(ActionEvent)方法是ShowRecord類實(shí)現(xiàn)的ActionListener接口中的方法,當(dāng)用戶單擊”顯示成績“按鈕后,該方法被執(zhí)行,所執(zhí)行的操作就是調(diào)用readAndShow()方法。</p><p>  ·readAndShow()方法負(fù)責(zé)讀取存放在文件中的各個(gè)級別的掃雷最好成績以及掃雷者姓名,并顯示這些相關(guān)信息。</p>

51、;<p>  3.8.3代碼(見附錄7)</p><p>  3.9 userDefine 類</p><p>  3.9.1效果圖 (如圖14)</p><p>  圖14 自定義窗口</p><p>  3.9.2 UML圖 </p><p>  userDefine是java.awt包中Rame框

52、架的子類,并實(shí)現(xiàn)了ActionListener接口。userDefine創(chuàng)建的對像:usedefine是MineArea類的成員之一,當(dāng)用戶點(diǎn)擊菜單欄中的游戲->自定義時(shí),彈出界面,在界面的文本框中輸入相應(yīng)的數(shù)字。然后單擊確定即可,或者單擊取消退出界面。標(biāo)明userDefine類的主要成員變量、方法以及和MineArea類之間的組合關(guān)系的UML圖如圖15所示</p><p>  圖15 userDefin

53、e類的UML圖</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說明。</p><p><b>  1)成員變量</b></p><p>  ·行數(shù),列數(shù),雷數(shù),分?jǐn)?shù):分別用來顯示行數(shù),列數(shù),雷數(shù),分?jǐn)?shù)</p><p>  ·行數(shù)1,列數(shù)1,雷數(shù)1,分?jǐn)?shù)1:用來自定義雷區(qū)的長度值,寬度值,所有

54、的雷數(shù)值以及每贏一局所得的分?jǐn)?shù)</p><p>  ·說明1,說明2 說明3,說明4:用來說明上述內(nèi)容</p><p>  ·容器1,容器2,容器3 :用來裝Label 和TextFiled,以方便布局</p><p>  ·確定,取消;單擊“確定”后,如果輸入的內(nèi)容合法,就會實(shí)現(xiàn)自定義的雷區(qū),如果不合法的話,就會彈出一個(gè)警告框,提示輸

55、入有誤;單擊“取消”退出自定義窗口。</p><p><b>  2)方法</b></p><p>  actionPerformrd(ActonEvent)方法是userDefine類中實(shí)現(xiàn)的ActionListener接口中的方法,當(dāng)用戶單擊界面的“確定”,該方法被執(zhí)行,所執(zhí)行的操作就是,將用戶輸入的信息傳入程序,實(shí)驗(yàn)自定義雷區(qū)的難度級別。當(dāng)用戶單擊界面的“取消”

56、,該方法被執(zhí)行,所執(zhí)行的操作就是,退出用戶自定義界面。</p><p>  3.9.3 代碼(見附錄8 userDefine.java)</p><p>  3.10 voiceShow類</p><p>  3.10.1 效果圖(如圖16)</p><p>  圖16 背景音樂窗口</p><p>  3.10.2

57、UML圖 </p><p>  voiceShow是java.awt包中Rame框架的子類,并實(shí)現(xiàn)了ActionListener接口。voiceShow創(chuàng)建的對像:voiceshow是MineArea類的成員之一,當(dāng)用戶點(diǎn)擊菜單欄中的游戲->背景音樂時(shí),彈出界面,單擊下拉列表,選擇背景音樂,然后單擊一次播放,就可以實(shí)現(xiàn)有背景音樂,循環(huán)播放和停止播放類似。標(biāo)明author類的主要成員變量、方法以及和MineA

58、rea類之間的組合關(guān)系的UML圖如圖17所示</p><p>  圖17 voiceShow類的UML圖</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說明。</p><p><b>  1)成員變量</b></p><p>  ·la1:用來顯示“選擇播放曲目”</p><p&g

59、t;  ·Ch1:音樂選擇下拉列表</p><p>  ·Bu1,bu2,bu3;分別表示一次播放,循環(huán)播放,停止播放,單擊后實(shí)現(xiàn)相應(yīng)的功能</p><p>  ·url;用來表示所選擇音樂的URL</p><p>  ·clip:音樂播放中類,用以實(shí)現(xiàn)音樂的播放功能:</p><p>  ·

60、str,str1;表示所選擇音樂的Itme的值</p><p><b>  2)方法</b></p><p>  actionPerformrd(ActonEvent)方法是voiceShow類中實(shí)現(xiàn)的ActionListener接口中的方法,當(dāng)用戶單擊界面的“一次播放”,該方法被執(zhí)行,所執(zhí)行的操作就是,開始播放音樂。當(dāng)用戶單擊界面的“循環(huán)播放”,該方法被執(zhí)行,所執(zhí)行

61、的操作就是,開始循環(huán)播放音樂。當(dāng)用戶單擊界面的“停止”,該方法被執(zhí)行,所執(zhí)行的操作就是,停止正在播放音樂。</p><p>  3.10.3 代碼(見附錄9 voiceShow.java)</p><p>  3.11 ruleShow 類</p><p>  3.11.1 效果圖(如圖18)</p><p><b>  圖18

62、 游戲規(guī)則</b></p><p>  3.11.2 UML圖</p><p>  ruleShow是javax.swing包中JRame框架的子類,并實(shí)現(xiàn)了ActionListener接口。ruleShow創(chuàng)建的對像:ruleshow是MineArea類的成員之一,當(dāng)用戶點(diǎn)擊菜單欄中的幫助->游戲規(guī)則時(shí),彈出界面,說明游戲,標(biāo)明author類的主要成員變量、方法以及和M

63、ineArea類之間的組合關(guān)系的UML圖如圖19所示</p><p>  圖19 ruleShow類的UML圖</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說明。</p><p><b>  1)成員變量</b></p><p>  ·la1:用來顯示掃雷游戲的規(guī)則如下</p>&l

64、t;p>  ·la2,la2………;用來顯示下面幾條游戲規(guī)則</p><p>  ·Con1,Con2,Con3;用來裝la1,la2 以實(shí)現(xiàn)在JFrame中布局;</p><p>  ·bu1;用記單擊bu1,關(guān)閉窗口;</p><p><b>  2)方法</b></p><p>

65、  actionPerformrd(ActonEvent)方法是ruleShow類中實(shí)現(xiàn)的ActionListener接口中的方法,當(dāng)用戶單擊界面的“確定”,該方法被執(zhí)行,所執(zhí)行的操作就是,并關(guān)閉界面。</p><p>  3.11.3 代碼(見附錄10 ruleShow.java)</p><p>  3.12 authorShow 類</p><p>  3.1

66、2.1 效果圖(如圖20)</p><p>  圖20 作者及意見</p><p>  3.12.2 UML圖</p><p>  authorShow是javax.swing包中JRame框架的子類,并實(shí)現(xiàn)了ActionListener接口。authorShow創(chuàng)建的對像:authorshow是MineArea類的成員之一,當(dāng)用戶點(diǎn)擊菜單欄中的幫助->制作

67、人時(shí),彈出界面,說明作者信息以及傳入用戶提交的建議,標(biāo)明author類的主要成員變量、方法以及和MineArea類之間的組合關(guān)系的UML圖如下所示</p><p>  以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說明。</p><p><b>  成員變量</b></p><p>  ·bu1:用戶單擊bu1,可以提交用戶輸入的信息以及關(guān)閉窗

68、口</p><p>  ·tx1:用來輸入用戶的建議</p><p>  ·la1,la2……:用來顯示作者信息</p><p><b>  2)方法</b></p><p>  actionPerformrd(ActonEvent)方法是authorShow類中實(shí)現(xiàn)的ActionListener接口

69、中的方法,當(dāng)用戶單擊界面的“確定”,該方法被執(zhí)行,所執(zhí)行的操作就是將用戶的建議與意見保存在一個(gè)advice.txt 文檔中,并關(guān)閉界面。</p><p>  3.12.3 代碼(見附錄11 authorShow.java)</p><p><b>  3.13所需圖像</b></p><p>  預(yù)備名字為mark.gif、mine.gif、a

70、.jpg 、b.jpg 、c.jpg圖像文件,其中mark.gif、mine.gif分別是掃雷時(shí)所用的“標(biāo)記”圖像“雷”的圖像,a.jpg 、b.jpg 、c.jpg用于authorShow中作者的圖像。</p><p><b>  3.14 所需音頻</b></p><p>  準(zhǔn)備好 爆炸聲.wav、猜不透.wav、范逸臣 不說出的溫柔.wav、林宥嘉 –說謊.w

71、av 和我舍不得 弦子.wav 等音頻文件(注意,一定要是wav格式的音頻文件)其中爆炸聲.wav 用于Minearea 中,當(dāng)點(diǎn)到雷就會發(fā)出聲音,其余用于voiceShow中用來顯示背景音樂。</p><p><b>  3.15 整體效果</b></p><p>  3.15.1 初始界面(圖21)</p><p><b>  圖

72、21初始界面</b></p><p>  3.15.2 單擊游戲->自定義->確定(圖22、23)</p><p>  圖 22 自定認(rèn)界面 圖23 自定義游戲難度</p><p>  3.15.3 單擊 游戲->背景聲音->一次播放(圖24、25)</p><p>  圖 24

73、 背景音樂界面 圖25 播放音樂</p><p>  3.15.4單擊 幫助->游戲規(guī)則(圖26)</p><p>  圖 26 游戲規(guī)則界面</p><p>  3.15.5 單擊 幫助->制作人(圖27)</p><p>  圖 27 作者及意見</p><p><

74、;b>  本設(shè)計(jì)改進(jìn)建議</b></p><p>  1、界面的美觀性做的不太好,比如說布局,顏色搭配有待改進(jìn)</p><p>  2、背景音樂在播方的時(shí)候有一點(diǎn)小問題,比如單擊停止播放,音樂并沒有停止,需要單擊2次或多次;另外背景音樂似乎很占內(nèi)存,運(yùn)行的時(shí)候容易死機(jī)。</p><p>  3、MineGame的初始化界面大小難以控制,特別是在自定

75、義的情況下,需在手動改面窗口的大小。</p><p>  五、總結(jié)(感想和心得等)</p><p>  1、做完之后,確實(shí)有一點(diǎn)成就感,這種感覺激勵著自已更加努力的學(xué)習(xí)這門課程</p><p>  2、編程的進(jìn)程肯定會遇到困難,要充分利用現(xiàn)有的資源 比如說互聯(lián)網(wǎng),書籍,這次實(shí)驗(yàn)多虧在在網(wǎng)上找的Java API,幫助我解決了不小困難。</p><p

76、>  3、要有團(tuán)隊(duì)合作精神,很感謝我的認(rèn)友在這次實(shí)驗(yàn)給予我的幫助。</p><p><b>  六、主要參考文獻(xiàn)</b></p><p>  [1] Java課程設(shè)計(jì)(第二版) 清華大學(xué)出版社 耿祥義 張躍平 </p><p>  [2] Java2實(shí)用教程(第三版) 清華大學(xué)出版社 耿祥義 等</p><

77、p>  [3]孫衛(wèi)琴. 精通Struts:基于MVC的Java Web設(shè)計(jì)與開發(fā).北京:電子工業(yè)出版社,2004.08</p><p>  [4]《JAVA 語言與面向?qū)ο蟪绦蛟O(shè)計(jì)》 . 印 旻 . 清華大學(xué)出版社。[5]《 JavaApplet 實(shí)例編程》,赤金、聶松編著,中國水利水電出版社 [6]《 Java 開發(fā)利器 ——Eclipse 從入門到精通》張峰科技 編,清華大學(xué)出版社[7]

78、《 Java2 核心》第二版窗體底端 </p><p><b>  附錄</b></p><p><b>  附錄1:</b></p><p>  import java.awt.event.*;</p><p>  import java.awt.*;</p><p>

79、  import javax.swing.*;</p><p>  import javax.swing.border.*;</p><p>  import java.util.*;</p><p>  import java.io.*;</p><p>  import javax.swing.KeyStroke;</p>

80、<p>  import java.awt.event.KeyEvent;</p><p>  public class MineGame extends JFrame implements ActionListener</p><p><b>  {</b></p><p>  JMenuBar bar;</p>&l

81、t;p>  JMenu fileMenu,fileMenu1;////////////////////////</p><p>  JMenuItem 初級,中級,高級,掃雷英雄榜;</p><p>  JMenuItem 自定義,背景聲音,游戲規(guī)則,制作人,退出;////////////////////////</p><p>  static MineAr

82、ea mineArea=null;</p><p>  File 英雄榜=new File("英雄榜.txt");</p><p>  Hashtable hashtable=null;</p><p>  ShowRecord showHeroRecord=null;</p><p>  userDefine userd

83、efine=new userDefine();///////////////</p><p>  voiceShow voiceshow;////////////////</p><p>  ruleShow ruleshow;////////////////</p><p>  authorShow authorshow;////////////////</

84、p><p>  MineGame()</p><p><b>  {</b></p><p>  mineArea=new MineArea(16,16,40,1);</p><p>  add(mineArea,BorderLayout.CENTER);</p><p>  bar=new JMen

85、uBar();</p><p>  fileMenu=new JMenu("游戲");</p><p>  fileMenu.setMnemonic(KeyEvent.VK_G);</p><p>  fileMenu1=new JMenu("幫助");//////////////////</p><p&g

86、t;  fileMenu1.setMnemonic(KeyEvent.VK_H);/////////////////////</p><p>  初級=new JMenuItem("初級",KeyEvent.VK_P);////////////////</p><p>  初級.setAccelerator(KeyStroke.getKeyStroke(KeyEvent

87、.VK_P,ActionEvent.CTRL_MASK));/////////////</p><p>  中級=new JMenuItem("中級",KeyEvent.VK_M);//////////////</p><p>  中級.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M,ActionEvent.CTR

88、L_MASK));//////////</p><p>  高級=new JMenuItem("高級(H)",KeyEvent.VK_H);//////////</p><p>  高級.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,ActionEvent.CTRL_MASK));/////////</p&

89、gt;<p>  掃雷英雄榜=new JMenuItem("掃雷英雄榜",KeyEvent.VK_B); //////////////</p><p>  掃雷英雄榜.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,ActionEvent.CTRL_MASK));/////////</p><p>

90、  自定義=new JMenuItem("自定義",KeyEvent.VK_S);///////////////</p><p>  自定義.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK));//////////</p><p>  背景聲音=new JMenuItem

91、("背景聲音",KeyEvent.VK_M);//////////////////</p><p>  背景聲音.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M,ActionEvent.CTRL_MASK));////////</p><p>  游戲規(guī)則=new JMenuItem("游戲規(guī)則"

92、;,KeyEvent.VK_R);////////////////</p><p>  游戲規(guī)則.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M,ActionEvent.CTRL_MASK));////////</p><p>  制作人=new JMenuItem("制作人",KeyEvent.VK_O);///

93、////////////////</p><p>  制作人.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK));//////////</p><p>  退出=new JMenuItem("退出",KeyEvent.VK_E);</p><p>

94、  退出.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,ActionEvent.CTRL_MASK));//////////</p><p>  voiceshow=new voiceShow();/////////////</p><p>  ruleshow=new ruleShow();//////////////</p

95、><p>  authorshow=new authorShow();///////////////</p><p>  fileMenu.add(初級);</p><p>  fileMenu.add(中級);</p><p>  fileMenu.add(高級);</p><p>  fileMenu.add(自定義)

96、;///////////////////</p><p>  fileMenu.add(掃雷英雄榜);</p><p>  fileMenu.add(背景聲音);//////////////////;//////</p><p>  fileMenu.add(退出);</p><p>  fileMenu1.add(游戲規(guī)則);///////

97、///////////////</p><p>  fileMenu1.add(制作人);////////////////////////</p><p>  bar.add(fileMenu);</p><p>  bar.add(fileMenu1);/////////////////////////////</p><p>  setJ

98、MenuBar(bar);</p><p>  初級.addActionListener(this);</p><p>  中級.addActionListener(this);</p><p>  高級.addActionListener(this);</p><p>  掃雷英雄榜.addActionListener(this);<

99、/p><p>  自定義.addActionListener(this);///////////////</p><p>  背景聲音.addActionListener(this);////////////////</p><p>  游戲規(guī)則.addActionListener(this);//////////////</p><p>  制

100、作人.addActionListener(this);/////////////////</p><p>  退出.addActionListener(this);</p><p>  hashtable=new Hashtable();</p><p>  hashtable.put("初級","初級#"+999+"

101、;#匿名"); </p><p>  hashtable.put("中級","中級#"+999+"#匿名");</p><p>  hashtable.put("高級","高級#"+999+"#匿名");</p><p>  if(!英雄

102、榜.exists()) </p><p><b>  {</b></p><p><b>  try</b></p><p>  { FileOutputStream out=new FileOutputStream(英雄榜);</p><p>  ObjectOutputStream object

103、Out=new ObjectOutputStream(out);</p><p>  objectOut.writeObject(hashtable);</p><p>  objectOut.close();</p><p>  out.close();</p><p><b>  }</b></p>&

104、lt;p>  catch(IOException e){}</p><p><b>  }</b></p><p>  showHeroRecord=new ShowRecord(this,hashtable);</p><p>  setBounds(100,100,280,380);</p><p>  set

105、Visible(true);</p><p>  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p>  validate();</p><p><b>  }</b></p><p>  public void actionPerformed(ActionEv

106、ent e)</p><p><b>  {</b></p><p>  if(e.getSource()==初級){</p><p>  mineArea.initMineArea(8,8,10,1);</p><p>  setBounds(100,100,360,340); </p><p>

107、;<b>  }</b></p><p>  if(e.getSource()==中級){</p><p>  mineArea.initMineArea(16,16,40,2);</p><p>  setBounds(100,100,320,420);</p><p><b>  }</b>&l

108、t;/p><p>  if(e.getSource()==高級){</p><p>  mineArea.initMineArea(22,22,99,3);</p><p>  setBounds(100,100,390,450);</p><p><b>  }</b></p><p>  if(e

109、.getSource()==自定義)////////////////</p><p><b>  {</b></p><p>  userdefine.setvisible(true);//////////////</p><p><b>  }</b></p><p>  if(e.getSour

110、ce()==背景聲音)/////////////</p><p><b>  {</b></p><p>  voiceshow.setVisible(true);////////////</p><p><b>  }</b></p><p>  if(e.getSource()==游戲規(guī)則)//

111、/////////////</p><p><b>  {</b></p><p>  ruleshow.setVisible(true);////////////</p><p><b>  } </b></p><p>  if(e.getSource()==制作人)/////////////

112、/////</p><p><b>  {</b></p><p>  authorshow.setVisible(true);////////////////</p><p><b>  }</b></p><p>  if(e.getSource()==掃雷英雄榜){ </p>&

113、lt;p>  if(showHeroRecord!=null)</p><p>  showHeroRecord.setVisible(true);</p><p><b>  }</b></p><p>  if(e.getSource()==退出){ </p><p>  System.exit(0);<

114、/p><p><b>  }</b></p><p><b>  }</b></p><p>  public static void main(String args[])</p><p><b>  {</b></p><p>  new MineGam

115、e();</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  附錄2:</b></p><p>  import java.awt.*;</p><p>  import java.awt.ev

116、ent.*;</p><p>  import javax.swing.*;</p><p>  import java.net.*;</p><p>  import java.io.*;</p><p>  import java.applet.*;</p><p>  public class MineArea

117、extends JPanel implements ActionListener,MouseListener{</p><p>  JButton reStart;</p><p>  Block [][] block;</p><p>  BlockView [][] blockView;</p><p>  URL url;///////

118、///////</p><p>  String str;///////////</p><p>  AudioClip clip;</p><p>  LayMines lay;</p><p>  int row,colum,mineCount,markMount;//雷區(qū)的行數(shù)、列數(shù)以及地雷個(gè)數(shù)和用戶給出的標(biāo)記數(shù)</p>

119、<p>  ImageIcon mark;</p><p>  int grade; </p><p>  JPanel pCenter,pNorth;</p><p>  JTextField showTime,showMarkedMineCount; //顯示用時(shí)以及標(biāo)記數(shù)</p><p>  Timer time; //計(jì)時(shí)

120、器</p><p>  int spendTime=0;</p><p>  Record record;</p><p>  public MineArea(int row,int colum,int mineCount,int grade) {</p><p>  reStart=new JButton("重新開始")

121、;</p><p>  //reStart.setSize(4,4);</p><p>  mark=new ImageIcon("mark.gif"); //探雷標(biāo)記</p><p>  time=new Timer(1000,this);</p><p>  showTime=new JTextField(4);&l

122、t;/p><p>  str="爆炸聲.wav";</p><p>  showMarkedMineCount=new JTextField(4);</p><p>  showTime.setHorizontalAlignment(JTextField.CENTER);</p><p>  showTime.setForeg

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論