版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)程序設(shè)計(jì)(chn x sh j)綜合(zngh)實(shí)驗(yàn)姓名(xngmng):張起學(xué)號(hào):201332010615班級(jí):自動(dòng)化六班撰寫(xiě)時(shí)間:2015年7月8日A部分(b fen)一. 需求(xqi)分析(fnx)(一)設(shè)計(jì)要求:1、編寫(xiě)壓縮程序, 為一個(gè)文本文件進(jìn)行Huffman編碼, 對(duì)其進(jìn)行壓縮, 將壓縮后的結(jié)果存儲(chǔ)為文件。2、編寫(xiě)解壓程序, 將你壓縮后的文件解壓縮還原為原始文件。3、程序要能夠處理較大的文本文件, 例如提供的“kjv.txt”。(二)問(wèn)題分析:本課題是利用哈夫曼編碼思想,設(shè)計(jì)對(duì)一個(gè)文本文件(kjv.txt)中的字符進(jìn)行哈夫曼編碼,生成編碼壓縮文件,并且還可將一個(gè)壓縮后的文
2、件進(jìn)行解碼還原為原始文本文件(kjv.txt)。在了解哈夫曼壓縮解壓縮原理之前,首先讓我們來(lái)認(rèn)識(shí)哈夫曼樹(shù)。哈夫曼樹(shù)又稱(chēng)最優(yōu)二叉樹(shù),是帶權(quán)路徑長(zhǎng)度最小的二叉樹(shù)。在文本文件中多采用二進(jìn)制編碼。為了使文件盡可能的縮短,可以對(duì)文件中每個(gè)字符出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計(jì)。設(shè)法讓出現(xiàn)次數(shù)多的字符二進(jìn)制碼短些,而讓那些很少出現(xiàn)的字符二進(jìn)制碼長(zhǎng)一些。若對(duì)字符集進(jìn)行不等長(zhǎng)編碼,則要求字符集中任一字符的編碼都不是其它字符編碼的前綴。為了確保哈夫曼編碼的唯一性,我們可以對(duì)它的左右子樹(shù)的大小給予比較限定,如:左子樹(shù)的權(quán)值小于右子樹(shù)的權(quán)值。哈夫曼樹(shù)中的左右分支各代表0和1,則從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)所經(jīng)歷的路徑分支的0和1組成的字符串
3、,為該節(jié)點(diǎn)對(duì)應(yīng)字符的哈夫曼編碼。統(tǒng)計(jì)字符中每個(gè)字符在文件中出現(xiàn)的平均概率(概率越大,要求編碼越短)。利用哈夫曼樹(shù)的特點(diǎn):權(quán)越大的葉子離根越近,將每個(gè)字符的概率值作為權(quán)值,構(gòu)造哈夫曼樹(shù)。則概率越大的節(jié)點(diǎn),路徑越短。哈夫曼譯碼是從二進(jìn)制序列的頭部開(kāi)始,順序匹配成共的部分替換成相應(yīng)的字符,直至二進(jìn)制轉(zhuǎn)換為字符序列。哈夫曼用于文件解壓縮的基礎(chǔ)是在壓縮二進(jìn)制代碼的同時(shí)還必須存儲(chǔ)相應(yīng)的編碼,這樣就可以根據(jù)存儲(chǔ)的哈夫曼編碼對(duì)壓縮代碼進(jìn)行壓縮??傊?,該課題的任務(wù)應(yīng)該是首先要打開(kāi)要壓縮的文本文件并讀出其字符出現(xiàn)的頻率,以其為權(quán)值構(gòu)建哈夫曼樹(shù)。其次要找到構(gòu)建壓縮功能的方法,在構(gòu)建哈夫曼樹(shù)的基礎(chǔ)上進(jìn)行編碼,改變字符
4、原先的存儲(chǔ)結(jié)構(gòu),以達(dá)到壓縮文件的目的,以外還有存儲(chǔ)相應(yīng)的哈夫曼編碼,為解壓縮做準(zhǔn)備。二. 設(shè)計(jì)1. 技術(shù)路線(xiàn)1、輸入要壓縮的文件首先運(yùn)行的時(shí)候,用戶(hù)主界面上有菜單提示該如何使用軟件,根據(jù)菜單提示選擇所要執(zhí)行的 項(xiàng),依次進(jìn)行,因?yàn)楦鱾€(gè)環(huán)節(jié)之間有先后順序。第一步為輸入壓縮軟件的名稱(chēng),由鍵盤(pán)輸入文件路徑和文件名稱(chēng),讀入字符數(shù)組中,打開(kāi)該文件,按照提示進(jìn)行壓縮。若打不開(kāi),則繼續(xù)輸入。2、讀文件并計(jì)算字符頻率文件將信息存放在字符數(shù)組中;計(jì)算每個(gè)字符出現(xiàn)的次數(shù),申請(qǐng)一個(gè)(y )結(jié)構(gòu)體數(shù)組空間, 用讀取的字符減去字符結(jié)束符作為下標(biāo)記錄字符的頻率。3、根據(jù)字符(z f)的頻率,利用Huffman編碼(bin
5、m)思想創(chuàng)建Huffman樹(shù)將所記錄的字符的頻率作為權(quán)值來(lái)創(chuàng)建Huffman樹(shù),依次選擇權(quán)值最小的兩個(gè)字符作為左右孩子,其和作為父結(jié)點(diǎn)的權(quán)值,依次進(jìn)行下去,直到所有的字符結(jié)點(diǎn)都成為葉子結(jié)點(diǎn)。4、由創(chuàng)建的Huffman樹(shù)來(lái)決定字符對(duì)應(yīng)的編碼,進(jìn)行文件的壓縮根據(jù)創(chuàng)建的Huffman樹(shù)來(lái)確定個(gè)字符的01編碼,左孩子為0,右孩子為1。讀取文件,依次將每個(gè)字符用他們的編碼表示,即完成一次編碼。5、解碼壓縮即根據(jù)Huffman樹(shù)進(jìn)行譯碼讀取編碼文件,依據(jù)創(chuàng)建的Huffman樹(shù),定義一個(gè)指針指向根結(jié)點(diǎn)。從根結(jié)點(diǎn)開(kāi)始,每讀一個(gè)字符,指針變化一次(當(dāng)讀取的字符是1時(shí),指針指向當(dāng)前所指結(jié)點(diǎn)的右孩子,當(dāng)讀取的字符是
6、0時(shí),指針指向當(dāng)前所指結(jié)點(diǎn)的左孩子),直至該指針?biāo)附Y(jié)點(diǎn)為葉子結(jié)點(diǎn)時(shí)結(jié)束(即當(dāng)結(jié)點(diǎn)的左右孩子均為空時(shí))。將當(dāng)前葉子結(jié)點(diǎn)所代表的字符值輸出到譯碼文件中,依次讀取編碼文件中的字符,按照上述方法依次進(jìn)行下去直至文件建立哈夫曼樹(shù)根據(jù)哈夫曼樹(shù)解碼對(duì)二進(jìn)制文件進(jìn)行解碼統(tǒng)計(jì)字符,得出統(tǒng)計(jì)出字符的權(quán)值n根據(jù)哈夫曼樹(shù)編碼對(duì)編碼進(jìn)行壓縮生成哈夫曼樹(shù)生成對(duì)應(yīng)文件生成對(duì)應(yīng)文件圖1-1 哈夫曼設(shè)計(jì)思想2. 流程圖與結(jié)構(gòu)圖(1)函數(shù)流程圖主要步驟:編碼和解碼核心算法huffman算法:1、根據(jù)給定的n個(gè)權(quán)值w1,w2,wn構(gòu)成n棵二叉樹(shù)的集合F=T1,T2,Tn,其中每棵二叉樹(shù)T1中只有一個(gè)帶權(quán)的w1的根據(jù)點(diǎn),其左右子樹(shù)
7、均空。2、在F中選取兩棵根結(jié)點(diǎn)的權(quán)值最小的樹(shù)作為左右子樹(shù)構(gòu)造一棵新的二叉樹(shù),且置新的二叉樹(shù)的根結(jié)點(diǎn)(ji din)的權(quán)值為其左右樹(shù)上根結(jié)點(diǎn)的權(quán)值之和。3、在F中刪除(shnch)這兩棵樹(shù),同時(shí)將所得到的二叉樹(shù)加入F中。4、重復(fù)(chngf)(2)(3),直到F中只含一棵樹(shù)為止。這棵樹(shù)便是Huffman樹(shù)。Huffman樹(shù)可用于構(gòu)造代碼總長(zhǎng)度最短的編碼方案。為了詳細(xì)說(shuō)明這個(gè)問(wèn)題,特以下面例子來(lái)說(shuō)明:有四個(gè)葉子結(jié)點(diǎn)A,B,C,D,分別帶權(quán)為9,4,5,2,可以構(gòu)成許多種不同的帶權(quán)二叉樹(shù),但各個(gè)帶權(quán)二叉樹(shù)的WPL(樹(shù)的帶權(quán)路徑長(zhǎng)度)不同,要想由n個(gè)帶權(quán)葉子結(jié)點(diǎn)所構(gòu)成的二叉樹(shù)中,滿(mǎn)二叉樹(shù)或完全二叉樹(shù)不
8、一定是最優(yōu)樹(shù)。權(quán)值越大的結(jié)點(diǎn)離根越近的二叉樹(shù)才是最優(yōu)二叉樹(shù)(huffman樹(shù))。按照上面的算法,則可按照下面圖的構(gòu)造過(guò)程生成huffman樹(shù)。圖1-2 Huffman樹(shù)產(chǎn)生流程圖1-3 Hufffman編碼(bin m)流程圖1-4 Hufffman編碼(bin m)流程三. 測(cè)試(csh)以下(yxi)是我在上機(jī)過(guò)程中遇到的一些問(wèn)題及解決方案開(kāi)始考慮問(wèn)題(wnt)是,要對(duì)文件進(jìn)行壓縮,如何才能達(dá)到比較好的效果,那就huffman編碼是采用等長(zhǎng)編碼還是采用不等長(zhǎng)問(wèn)題,采用不登長(zhǎng)編碼要避免譯碼的二義性或多義性。假設(shè)用0表示字符D,用01表示字符C則當(dāng)接受到編碼串“01”,并譯到字符0時(shí),是立即譯
9、出對(duì)應(yīng)的字符D,還是接著與下一個(gè)字符1一起譯為對(duì)應(yīng)的字符C,這就產(chǎn)生了二義性。因此,若對(duì)某一個(gè)字符集進(jìn)行不等長(zhǎng)編碼,則要求字符集合中任何一個(gè)字符的編碼都不能是其他字符編碼的前綴。符合此要求的編碼叫做前綴編碼。顯然等長(zhǎng)編碼是前綴編碼,這從等長(zhǎng)編碼所對(duì)應(yīng)的編碼二叉樹(shù)也可以直接看出,任何一個(gè)葉子結(jié)點(diǎn)都不可能是其它葉子結(jié)點(diǎn)的雙親,也就是說(shuō),只有當(dāng)一個(gè)結(jié)點(diǎn)是另一個(gè)結(jié)點(diǎn)的雙親時(shí),該結(jié)點(diǎn)的字符編碼才會(huì)是另一個(gè)結(jié)點(diǎn)的字符編碼的前綴。為了使不等長(zhǎng)編碼為前綴編碼,可用該字符集中的每個(gè)字符作為葉子結(jié)點(diǎn)生成一棵編碼二叉樹(shù),為了獲得文件的最短長(zhǎng)度,特將每個(gè)字符的出現(xiàn)頻率作為字符結(jié)點(diǎn)的權(quán)值賦予該結(jié)點(diǎn)上,求出此樹(shù)的最小帶權(quán)
10、路徑長(zhǎng)度就等于文件的最短長(zhǎng)度。因此,對(duì)文件進(jìn)行壓縮,就可以轉(zhuǎn)化字符集中的所有字符作為葉子結(jié)點(diǎn),字符出現(xiàn)的頻率作為權(quán)值所產(chǎn)生的huffman樹(shù)的問(wèn)題?;舅悸反笾掠辛撕?,接下來(lái)是對(duì)程序的編寫(xiě)工作,程序初步形成后,對(duì)其測(cè)試,發(fā)現(xiàn)了一些語(yǔ)法錯(cuò)誤,修正后編譯通過(guò)。在課程設(shè)計(jì)過(guò)程中,我選擇了Huffman的壓縮和解壓縮這一課題,雖然這個(gè)課題所涉及的知識(shí)自己不太熟悉,屬于數(shù)據(jù)結(jié)構(gòu)與算法的內(nèi)容,但通過(guò)借助書(shū)本,自己動(dòng)手實(shí)踐,還是掌握了一點(diǎn)關(guān)于數(shù)據(jù)結(jié)構(gòu)的知識(shí),通過(guò)兩周的課程設(shè)計(jì)使我對(duì)哈夫曼樹(shù)以及哈夫曼編碼有了更深的認(rèn)識(shí)和理解,利用哈夫曼編碼的思想方法,熟練掌握哈夫曼編碼的過(guò)程。創(chuàng)建二叉樹(shù)的方法和二叉樹(shù)的存儲(chǔ)結(jié)
11、構(gòu),知道壓縮文件是如何進(jìn)行的,解壓縮即為它的逆過(guò)程。程序的模塊化結(jié)構(gòu)尤其重要,應(yīng)掌握各個(gè)模塊間的邏輯關(guān)系和整體程序的結(jié)構(gòu)。其實(shí)在這次課程設(shè)計(jì)中遇到很多問(wèn)題,第一就是知識(shí)不熟悉,必須從最基本的書(shū)本知識(shí)看起,通過(guò)查閱資料,使我對(duì)程序的一些算法有了最基本的了解。其次通過(guò)網(wǎng)絡(luò)資源使我了解的知識(shí)更加豐富,增強(qiáng)了我對(duì)網(wǎng)絡(luò)資源的檢索能力,使我能夠更好的應(yīng)用網(wǎng)絡(luò)資源來(lái)完成自己需要完成的任務(wù)。所以課程設(shè)計(jì)不僅能培養(yǎng)我們的專(zhuān)業(yè)知識(shí),而且還能培養(yǎng)我們的動(dòng)手能力,使我們以后能夠更加適應(yīng)社會(huì)的發(fā)展。通過(guò)這次課程設(shè)計(jì),使我的自學(xué)能力有所提高,讓我知道了怎么去熟練掌握知識(shí)并且能夠很好的掌握它。同時(shí)也增強(qiáng)我的獨(dú)立思考能力和動(dòng)
12、手能力;通過(guò)編寫(xiě)程序代碼和調(diào)試運(yùn)行,我們可以逐步積累調(diào)試程序的經(jīng)驗(yàn),逐漸培養(yǎng)我們的編程能力和利用計(jì)算機(jī)解決實(shí)際問(wèn)題的能力。課程設(shè)計(jì)為我們提供了一個(gè)自己動(dòng)手實(shí)踐的平臺(tái)。另一方面,在課程設(shè)計(jì)的過(guò)程中,使我明白了面向?qū)ο笈c面向?qū)ο蟮牟顒e。在面向?qū)ο筮^(guò)程中,類(lèi)的設(shè)計(jì)是至關(guān)重要的,類(lèi)設(shè)計(jì)好了等于程序就成功了一半,所以這次的課程設(shè)計(jì)幫助我復(fù)習(xí)了這一學(xué)期面向?qū)ο笳n程的學(xué)習(xí),剛好可以彌補(bǔ)這一學(xué)期面向?qū)ο髮W(xué)習(xí)的不足。這次課程設(shè)計(jì)不但使我掌握了一些知識(shí),更重要的是使我認(rèn)識(shí)到了作為程序員的艱辛和辛苦。一個(gè)星期面對(duì)著電腦,在你面前只有一行行的代碼,在你的耳旁只有鍵盤(pán)的敲擊聲和點(diǎn)擊鼠標(biāo)的聲音,說(shuō)實(shí)話(huà)確實(shí)很無(wú)聊也很辛苦。
13、但當(dāng)自己看到自己編寫(xiě)的程序順利通過(guò)的時(shí)候,心里的成就感就油然而生,心中的疲倦也消失了,我想,當(dāng)程序員看到自己的程序能夠(nnggu)編譯成功的話(huà),也是這種感覺(jué)吧!雖然這次課程設(shè)計(jì)結(jié)束了,但我們學(xué)習(xí)C+等語(yǔ)言的步伐不能停止,在今后的學(xué)習(xí)過(guò)程中,我會(huì)更加努力,爭(zhēng)取在今后的課程中學(xué)得更好,下次(xi c)的課程設(shè)計(jì)能夠更加成功。(1)程序運(yùn)行主界面(jimin)如圖4所示圖1-5 程序主界面(2)編碼(bin m)界面圖1-6 編碼(bin m)界面若用戶(hù)想要對(duì)某一文件進(jìn)行壓縮(y su),則按主界面的提示按“1”,然后界面提示輸入進(jìn)行壓縮操作的文件名,輸入完成后按回車(chē)鍵,此時(shí)界面會(huì)提示輸入壓縮后文
14、件的文件名,輸入完成后再按回車(chē)鍵,便可完成編碼,同時(shí)會(huì)顯示出各字符的哈夫曼編碼,系統(tǒng)也會(huì)提示用戶(hù)壓縮文件過(guò)程結(jié)束(3)解碼界面圖1-7 解碼界面若用戶(hù)想對(duì)某一壓縮文件進(jìn)行解壓操作,則按主界面的提示按“2”,然后界面提示輸入進(jìn)行解壓操作的文件名,完成輸入后按回車(chē)鍵,此時(shí)界面會(huì)提示輸入解壓后的文件的文件名,輸入完成后再按回車(chē)鍵,便可完成譯碼,系統(tǒng)提示用戶(hù)還原文件過(guò)程結(jié)束。經(jīng)過(guò)測(cè)試,程序運(yùn)行穩(wěn)定,符合實(shí)驗(yàn)要求。B部分(b fen)一. 需求(xqi)分析(fnx)編寫(xiě)程序, 實(shí)現(xiàn)掃雷游戲, 功能上模仿winows自帶的掃雷游戲(1)鼠標(biāo)左擊排雷,右擊插小旗,打問(wèn)號(hào); (2)方格里面的數(shù)字表示方格周?chē)?/p>
15、的雷數(shù);(3)能夠顯示未標(biāo)記雷數(shù)和游戲用時(shí);(4)雷區(qū)上面的小臉可以變化,顯示微笑,驚訝,痛苦,勝利。在任何情況下單擊小臉可以重新開(kāi)始游戲; (6)排行榜功能,掃雷成功時(shí)候,根據(jù)游戲用時(shí)更新排行榜。二. 設(shè)計(jì)1. 技術(shù)路線(xiàn)1、掃雷游戲是很經(jīng)典也很有趣的一款游戲,這次的游戲程序設(shè)計(jì)要求設(shè)計(jì)出功能與原游戲相近的一款游戲,首先定義變量和類(lèi)要畫(huà)出游戲方格以及位圖;然后設(shè)置隨機(jī)布雷以保證每次重新開(kāi)始游戲都有不同的雷區(qū)地圖;另外定義鼠標(biāo)左擊掃雷,左擊標(biāo)記周?chē)窭浊闆r,右擊奇數(shù)次排雷偶數(shù)次取消上次排雷,以及掃雷第一次左擊不能掃到雷。2、流程規(guī)劃大致上可以分為三個(gè)部分,分別為:畫(huà)面初始、游戲者按下第一個(gè)方塊和
16、為非地雷方塊時(shí)展開(kāi)。3、畫(huà)面初始時(shí),以游戲者最后一次設(shè)定的地雷區(qū)大小為范圍畫(huà)出地雷區(qū),當(dāng)游戲者按下第一個(gè)方塊時(shí)產(chǎn)開(kāi)始計(jì)時(shí),接著就是如何判斷按下的方塊是非地雷時(shí)的處理,這也是整個(gè)游戲的技術(shù)核心,我們可以通過(guò)遞歸的觀念來(lái)檢查周邊的方塊是否含有地雷及是否繼續(xù)往外翻開(kāi),當(dāng)鼠標(biāo)指針對(duì)準(zhǔn)未翻開(kāi)的方塊按下左鍵時(shí)即表示翻開(kāi)方塊,當(dāng)鼠標(biāo)指針對(duì)準(zhǔn)未翻開(kāi)的方塊按下右鍵時(shí)即表示標(biāo)示或疑示地雷,反復(fù)按下右鍵則方塊會(huì)以未標(biāo)示標(biāo)示疑似三者關(guān)系不斷循環(huán)。游戲者可以通過(guò)地雷區(qū)內(nèi)的數(shù)字提示了解以數(shù)字為中心的其周邊八個(gè)方格內(nèi)所含的地雷數(shù),假若翻開(kāi)的方塊顯示數(shù)字“3”,則表示以其為中心的周邊方塊內(nèi)藏有3個(gè)地雷。當(dāng)按下的方塊不是地雷,
17、且周邊八個(gè)方塊也都沒(méi)有地雷時(shí),方塊會(huì)以被翻開(kāi)方塊的八個(gè)方向?qū)⒖瞻追綁K翻開(kāi)。2. 流程圖與結(jié)構(gòu)圖(1)流程(lichng)設(shè)計(jì)流程規(guī)劃大致(dzh)上可以分為三個(gè)部分,分別為:畫(huà)面初始、游戲者按下第一個(gè)方塊和為非地雷方塊時(shí)展開(kāi)。是是開(kāi)始依照使用者初始設(shè)定等待按鍵左鍵鍵右鍵布置地圖啟動(dòng)計(jì)時(shí)器顯示分?jǐn)?shù)結(jié)束進(jìn)行遞歸掃雷否否是否是否第一次按下按下方塊最終是否為地圖是否最高分掃雷英雄榜顯示方塊是畫(huà)面初始時(shí),以游戲者最后一次設(shè)定的地雷區(qū)大小為范圍畫(huà)出地雷區(qū),但此時(shí)并未產(chǎn)生地雷。當(dāng)游戲者按下第一個(gè)方塊時(shí)產(chǎn)生地雷資料并啟動(dòng)定時(shí)器,為何在游戲者按下第一個(gè)方塊才產(chǎn)生地雷資料呢?其主要的用意在于不要讓游戲者第一次就踩
18、到地雷,這樣在某種程度上可以提高游戲者游玩的氣氛。接著就是如何判斷按下的方塊是非地雷時(shí)的處理,這也是整個(gè)游戲的技術(shù)核心,我們(w men)可以通過(guò)遞歸的觀念來(lái)檢查周邊的方塊是否含有地雷及是否繼續(xù)往外翻開(kāi)。圖2-1 整體(zhngt)流程規(guī)劃圖1、游戲的操作方面主要(zhyo)以鼠標(biāo)為主,鼠標(biāo)左鍵按下事件的主要作用是為了點(diǎn)擊用戶(hù)認(rèn)為不是地雷的方塊,當(dāng)鼠標(biāo)左鍵點(diǎn)下后,點(diǎn)下的方塊將從為探測(cè)狀態(tài)轉(zhuǎn)化為已探測(cè)狀態(tài),并可能會(huì)連帶打開(kāi)周?chē)姆綁K。2、鼠標(biāo)右鍵按下事件主要有兩個(gè)作用,當(dāng)用戶(hù)對(duì)為探測(cè)方塊第一次按下該時(shí),該方塊上將出現(xiàn)一個(gè)小紅旗,代表確認(rèn)該方塊是地雷,若對(duì)此方塊再次進(jìn)行(jnxng)右鍵單擊,則圖
19、標(biāo)變?yōu)橐粋€(gè)問(wèn)號(hào),表示此處是否有地雷還有待商榷,對(duì)于一些比較難解決的雷區(qū),使用該圖標(biāo)有助于玩家更好的進(jìn)行推理判斷。圖2-2 布雷流程(2)模塊劃分掃雷游戲共由四個(gè)類(lèi)和一個(gè)模塊組成,幫助對(duì)話(huà)框類(lèi)背景音樂(lè)播放模塊英雄榜對(duì)話(huà)窗口類(lèi)掃雷窗口類(lèi)主界面對(duì)話(huà)框類(lèi)掃雷游戲圖2-4 模塊(m kui)劃分主界面對(duì)話(huà)框類(lèi):主要負(fù)責(zé)主界面、菜單(ci dn)及各個(gè)窗口類(lèi)對(duì)象的創(chuàng)建和調(diào)用等處理。掃雷窗口類(lèi):主要負(fù)責(zé)接收(jishu)玩家鼠標(biāo)輸入的打開(kāi)格子位置、格子變換、花費(fèi)時(shí)間及掃雷格子的顯示等處理。英雄對(duì)話(huà)框類(lèi):主要負(fù)責(zé)游戲等級(jí)記錄的更新。背景音樂(lè)播放模塊:主要負(fù)責(zé)游戲中背景音樂(lè)的播放。幫助類(lèi)對(duì)話(huà)框類(lèi):主要負(fù)責(zé)幫助提
20、示的顯示及其他輔助信息。掃雷游戲的主界面設(shè)計(jì)如圖2-5所示,菜單設(shè)計(jì)如圖2-6所示圖2-5 掃雷游戲主界面設(shè)計(jì)圖2-6 掃雷游戲菜單(ci dn)設(shè)計(jì)三. 測(cè)試(csh)掃雷游戲是WINDOWS系統(tǒng)自帶的一個(gè)娛樂(lè)性的小游戲,為了確保本游戲能夠正常(zhngchng)運(yùn)行,需要在發(fā)布之后做一次較全面的測(cè)試。掃雷游戲的目標(biāo)是盡快找到雷區(qū)中的所有地雷,而不許踩到地雷。如果挖開(kāi)的是地雷,您將輸?shù)粲螒?。掃雷游戲在程序運(yùn)行后生成指定的地雷,在鼠標(biāo)左鍵點(diǎn)擊下尋找地雷,右鍵點(diǎn)擊下標(biāo)記地雷,點(diǎn)擊笑臉的標(biāo)記開(kāi)始重新游戲,并給出勝利和失敗的條件:標(biāo)出所有的地雷和左鍵點(diǎn)中地雷。在游戲菜單上,單擊開(kāi)始游戲或者,單擊游戲
21、區(qū)中的任何方塊,啟動(dòng)計(jì)時(shí)器。通過(guò)單擊即可挖開(kāi)方塊。如果挖開(kāi)的是地雷,則您輸?shù)粲螒?。如果方塊上出現(xiàn)數(shù)字,則表示在其周?chē)陌藗€(gè)方塊中共有多少顆地雷。要標(biāo)記您認(rèn)為可能有地雷的方塊,請(qǐng)右鍵單擊它。游戲區(qū)包括雷區(qū)、地雷計(jì)數(shù)器和計(jì)時(shí)器。經(jīng)過(guò)一些簡(jiǎn)單的步驟的測(cè)試,證明本游戲具有相當(dāng)?shù)姆€(wěn)定性。圖2-7 掃雷(so li)游戲主界面和菜單圖2-8 鼠標(biāo)單擊后事件(shjin)圖2-9 失敗(shbi)提示對(duì)話(huà)框圖2-10 游戲(yux)勝利界面在本次實(shí)習(xí)過(guò)程中碰到的編譯、連接的錯(cuò)誤主要有:缺少變量定義,定義位置不正確(zhngqu)、語(yǔ)法錯(cuò)誤、注釋的位置等。(1)缺少變量定義,定義位置不正確;由于該程序相對(duì)來(lái)講稍有些長(zhǎng),前后有些變量不容易聯(lián)系起來(lái),但是在錯(cuò)誤信息的提示下一般還是很容易找到。不過(guò)需要注意的是在定義的時(shí)候有些函數(shù)使用同樣的變量名而表示不同的作用,因而使用要很小心,定義及定義的位置要特別留意。為減少這樣的錯(cuò)誤我后來(lái)還是用不同的變量名來(lái)表示,結(jié)果引起的那些錯(cuò)誤解決了。(2)語(yǔ)法錯(cuò)誤;大多的語(yǔ)法錯(cuò)誤在通過(guò)書(shū)本參考下能夠修改。主要是平時(shí)缺乏鍛煉、不太注意而產(chǎn)生的。如沒(méi)有注意具體數(shù)據(jù)使用是有一定的范圍(fnwi)限定;過(guò)分重視分號(hào)的重要性而在for、if、while語(yǔ)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度美食街改造升級(jí)工程合同4篇
- 2025項(xiàng)目投資協(xié)議補(bǔ)充-項(xiàng)目退出機(jī)制3篇
- 2025年度私人土地買(mǎi)賣(mài)合同范本:全新設(shè)計(jì)
- 2025年度二零二五年度大學(xué)學(xué)生宿舍樓學(xué)生社團(tuán)管理與活動(dòng)支持承包協(xié)議3篇
- 土木工程施工課件-鋼筋工程
- 2025年度廢舊電池回收處理承包合同樣本4篇
- 2025年度航空航天廠房購(gòu)置及研發(fā)合作合同4篇
- 2025年度存量房居間買(mǎi)賣(mài)合同風(fēng)險(xiǎn)防控范本3篇
- 2025年度地質(zhì)災(zāi)害評(píng)估與測(cè)繪技術(shù)支持合同4篇
- 2025年航空燃油供應(yīng)及服務(wù)協(xié)議4篇
- 公司組織架構(gòu)圖(可編輯模版)
- 1汽輪機(jī)跳閘事故演練
- 陜西省銅川市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 禮品(禮金)上交登記臺(tái)賬
- 普通高中英語(yǔ)課程標(biāo)準(zhǔn)詞匯表
- 北師大版七年級(jí)數(shù)學(xué)上冊(cè)教案(全冊(cè)完整版)教學(xué)設(shè)計(jì)含教學(xué)反思
- 2023高中物理步步高大一輪 第五章 第1講 萬(wàn)有引力定律及應(yīng)用
- 青少年軟件編程(Scratch)練習(xí)題及答案
- 浙江省公務(wù)員考試面試真題答案及解析精選
- 系統(tǒng)性紅斑狼瘡-第九版內(nèi)科學(xué)
- 全統(tǒng)定額工程量計(jì)算規(guī)則1994
評(píng)論
0/150
提交評(píng)論