版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
VB做掃雷游戲畢業(yè)設(shè)計PAGEPAGE9編號畢業(yè)論文題目用VB實(shí)現(xiàn)一個簡單的游戲?qū)W生姓名學(xué)號學(xué)院專業(yè)班級指導(dǎo)教師VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第1頁。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第1頁。用VB實(shí)現(xiàn)一個簡單的游戲摘要當(dāng)前,隨著計算機(jī)應(yīng)用及網(wǎng)絡(luò)的的深入普及,越來越多的政府部門、廠礦企業(yè)、學(xué)校等單位及個人都擁有了自己的計算機(jī),計算機(jī)不僅在工作方面給人們以很大的幫助,還給人們帶來了多種的娛樂享受.,操作系統(tǒng)自帶的游戲也起到了很大的娛樂作用,而且它的開發(fā)成本小,所以小游戲的開發(fā)在這種形勢下就應(yīng)運(yùn)而生,它的開發(fā)主要采用VC++,VB等編程語言.
本設(shè)計采用VB編寫,VB一直以來被認(rèn)為有以下優(yōu)缺點(diǎn):優(yōu)點(diǎn)是上手快、開發(fā)效率高;缺點(diǎn)是能力有限,運(yùn)行效率低.這正是有些軟件把VB做為首選語言,而有些軟件肯定不會用VB做的原因.而很多VC,DELPHI的程序員都認(rèn)為VB里搞開發(fā)不自由.的確,簡單和功能強(qiáng)大這兩者本身就是一對矛盾.
掃雷游戲是操作系統(tǒng)中的一個主要的益智類游戲.用戶對鼠標(biāo)進(jìn)行操作,單擊鼠標(biāo)左鍵為踩雷,單擊鼠標(biāo)左鍵在標(biāo)記,疑問,空白三種狀態(tài)中循環(huán),同時單擊鼠標(biāo)左右鍵為踩單擊點(diǎn)在內(nèi)的周圍九格內(nèi)所有沒有標(biāo)記為已標(biāo)記的所有格子.同時程序從你單擊第一次時開始計時,到勝利或引爆地雷終結(jié).結(jié)束后單擊開始按鈕重新開始游戲.這款游戲?qū)崿F(xiàn)了開發(fā)人類大腦思維的目的.
關(guān)鍵詞VB,掃雷游戲
VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第2頁。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第2頁。RealizesasimplegamewithVBAbstract
Front,isappliedalongwiththecalculatorandnetworkofofthethoroughuniversality,moreandmoregovernmentssection,factorymineralbusinessenterprise,school...etc.unitandindividualallownedowncalculator,thecalculatorisnotonlytogivepeopleintheaspectsofworkingwiththeverybighelp,returningtopeoplebroughtvariousamusementsenjoys.,theoperatesystemalsorosefromthegamethattakeverybigamusementfunction,anditofthecostofdevelopmentissmall,sothedevelopmentoftheget-awaydramaunderthiskindofsituationemergewiththetideofthetimes,itofmainadoptionindevelopmentVC++,VBetc.plaitdistancelanguage.
ThisdesignadoptionVBplaitwrites,theVBhasesbeenpassingfortohavesincethenbelowmeritandshortcoming:Theadvantageistoundertakesquick,developmenttheefficiencyishigh;Theweaknessisanabilitylimited,circulatetheefficiencylow.Thisexactlysomesoftwaresisusedasareasonforchoosethelanguage,butsomesoftwaresisaffirmativeanddowiththeVBofVBs.AndalotofVCs,theDELPHIprocedurememberthinkstheVBinmakethedevelopmentnotfree.Really,itissimpletoisstrongandbigwiththefunctionthisbothoneselfisanonerightnessantinomy.
Themineclearancegameisanoperatesysteminsideofagrowsinwisdomagameprimarily.Thecustomerproceedstheoperationtotheratmark,theleftkeyinmarkinratinsingleshotisfortramplingthethunder,thesingleshotratmarkstheleftkeyinmarking,question,blankthreekindsofappearancescirculating,thesingleshotratmarksorsokeyastotrampleatthesametimethesingleshotordersthesurroundingsininsideninethemarkinghadinspacesesarealreadyallblanksofthemarking.Atthesametimeprocedureisfromyousingleshotfirsttimehourstartsaccounting,arrivevictoryorsetoffthelandmineend.Endingthesingleshotinempressstartspressingbuttonrestartingthegame.Thisgamerealizesthepurposeofthehumanbrainindevelopmentthought.
Keywords:VB,ThemineclearancegameVB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第3頁。目錄VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第3頁。1引言 12VisualBasic概況 22.1VB簡介 22.2本設(shè)計運(yùn)用的技術(shù) 23可行性分析 64總體設(shè)計 74.1設(shè)計構(gòu)想 74.2流程規(guī)劃 75詳細(xì)設(shè)計 95.1畫面規(guī)劃 95.2設(shè)計過程 105.2.1添加菜單 105.2.2自定義窗體設(shè)計 105.2.3關(guān)于窗體設(shè)計 115.3運(yùn)行界面 126系統(tǒng)測試 13結(jié)束語 14參考文獻(xiàn) 16附錄 17VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第4頁。
VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第4頁。1引言本論文研究的是以VisualBasic6.0為開發(fā)環(huán)境,設(shè)計并開發(fā)一款掃雷游戲,其功能類似于Windows操作系統(tǒng)自帶的掃雷游戲?論文首先介紹了制作游戲的整體思路及整個游戲設(shè)計的流程規(guī)劃,然后介紹了雷區(qū)的布置及地雷隨機(jī)產(chǎn)生的實(shí)現(xiàn)方法;重點(diǎn)介紹了在游戲過程中各事件的處理,其中又以鼠標(biāo)事件和清除未靠近地雷區(qū)方塊這兩方面最為重要,鼠標(biāo)事件是利用鼠標(biāo)所發(fā)出的信息了解使用者的意圖,進(jìn)而做出相對應(yīng)的動作,而清除未靠近地雷區(qū)方塊由于引進(jìn)了“遞歸”這個概念而使其簡單化?掃雷游戲是WINDOWS系統(tǒng)自帶的一個娛樂性的小游戲,在玩掃雷游戲的過程中也可以很好的培養(yǎng)耐心和細(xì)心,同時在無聊得時候可以用以休閑娛樂,如果我們自己也能動手做一個小程序來實(shí)現(xiàn)這個功能,自然能樂在其中。本次設(shè)計只是完成了掃雷游戲的基本功能,在細(xì)節(jié)方面仍有待完善?VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第5頁。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第5頁。2VisualBasic概況2.1VB簡介VISUALBASIC是微軟公司出品的一個快速可視化程序開發(fā)工具軟件。借助微軟在操作系統(tǒng)和辦公自動化軟件的壟斷地位,VB在短短的幾年內(nèi)風(fēng)靡全球。VB是極具特色和功能強(qiáng)大的軟件,主要表現(xiàn):所見即所得的界面設(shè)計,基于對象的設(shè)計方法,極短的軟件開發(fā)周期,較易維護(hù)的代碼。同時眾多的ACTIVE控件,提高了軟件的使用效率??梢杂糜诳梢蚤_發(fā)多媒體、數(shù)據(jù)庫、網(wǎng)絡(luò)、圖形等方面的應(yīng)用程序。
VB應(yīng)用程序語言的基本特點(diǎn)[1]:
1可視化界面設(shè)計
VB為用戶提供大量的界面元素(在VB中稱為控件對象),這些控件對象對于熟悉WINDOWS應(yīng)用程序的用戶來說是一點(diǎn)也不陌生,如“窗體”,“菜單”,“命令按扭”,“工具按扭”,“檢查框”等等,用戶只要利用鼠標(biāo)、鍵盤把這些控件對象拖動到合適的位置,設(shè)置其大小、形狀、屬性等,就可以設(shè)計出所需的應(yīng)用程序界面。
2事件驅(qū)動編程
在使用VB設(shè)計應(yīng)用程序是,必須首先確定應(yīng)用程序如何同用戶進(jìn)行交互。例如發(fā)生鼠標(biāo)單擊、鍵盤輸入等事件是,由用戶編寫代碼控制這些事件的響應(yīng),這就是所謂的事件驅(qū)動編程。3與數(shù)據(jù)庫的連接性
VISUALBASIC提供了與底層數(shù)據(jù)庫系統(tǒng)緊密的連接。VISUALBASIC支持不同的關(guān)系數(shù)據(jù)庫管理系統(tǒng)并充分發(fā)揮每一個數(shù)據(jù)庫的特長。開發(fā)人員和利用內(nèi)置的高性能數(shù)據(jù)庫引擎——JET生成獨(dú)立應(yīng)用或脫離服務(wù)器運(yùn)行的服務(wù)以上的應(yīng)用。2.2本設(shè)計運(yùn)用的技術(shù)VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第6頁。這個游戲里運(yùn)用了VB里的組件及語法作為游戲運(yùn)算和顯示,其相關(guān)語法及組件如下表1所示:VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第6頁。表1使用的語法及組件組件及語法說明For...Next利用循環(huán)布置地雷區(qū)、按下時檢查非地雷方塊Load(Unload)動態(tài)加載或刪除指令產(chǎn)生表示地雷方塊圖案的Image組件Mousedown與Mouseup事件判斷按下或放開方塊時的按鍵為左鍵或右鍵Imagelist組件存儲游戲過程中所需的圖案Image組件利用此顯示地雷方塊Timer組件設(shè)定觸發(fā)時間,來控制方塊游戲時間PictureBox組件利用此組件作為地雷方塊的布置區(qū)域遞歸利用遞歸展開非地雷的方塊詳細(xì)說明如下:1.For...Next循環(huán)應(yīng)用在游戲設(shè)計上,利用了兩個二維數(shù)組分別記錄地雷的分布狀況及地雷區(qū)及表面探測情形。利用數(shù)據(jù)循環(huán)的對比,不但速度快,而且在設(shè)計階段,程序的架構(gòu)比較清楚。2.Load及Unload動態(tài)增加或刪除組件利用Load及Unload指令,可動態(tài)新增及刪除組件。在游戲的雷區(qū),依照使用者自定義的地圖類型,布置未探測的地雷方塊。加載組件后,通過Image組件的Move屬性,將組件布置于預(yù)定的位置。Move函數(shù)的原型如下:組件.MoveX坐標(biāo),[Y坐標(biāo)],[組件寬度][組件高度]VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第7頁。再配合雙循環(huán)的變量值,可以控制組件布置于窗體的方向及方式。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第7頁。3.MouseDown與MouseUp事件在游戲過程中,利用鼠標(biāo)所發(fā)出的信息了解使用者的意圖,進(jìn)而做出相應(yīng)的動作。在MouseDown與MouseUp事件中,可以捕捉鼠標(biāo)所按下或放開的按鍵為何、鼠標(biāo)光標(biāo)在該組件上的坐標(biāo)及是否同時按下輔助鍵等。用Button參數(shù)值表示鼠標(biāo)上的按鈕數(shù)值。其意義如下:1:左鍵2:右鍵4:中央鍵若同時按下不止一個按鍵時,則傳回數(shù)值為按鍵數(shù)相加。例如同時按下左鍵及右鍵,則Button值為1+2=3.在本游戲中,利用右鍵的MouseDown事件標(biāo)示“已標(biāo)示”方塊,利用左鍵的MouseDown事件,標(biāo)示使用者準(zhǔn)備按下的方塊,利用左鍵的MouseUp事件確定翻開的方塊。4.ImageList組件利用Imagelist可以存儲顯示方塊的圖形[2]。將組件布置于窗體上后編輯組件屬性,通過【插入圖片】按鈕和【刪除圖片】按鈕即可編輯組件內(nèi)所存放的圖片。如圖1所示。因為一個Imagelist組件內(nèi)必須存儲大小相同的圖片,所在這款游戲設(shè)計中,顯示的圖片共分為三個部分:游戲狀態(tài)圖形、數(shù)字計數(shù)圖形和地雷區(qū)標(biāo)示圖形。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第8頁。圖1ImageList組件屬性VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第8頁。利用ListImage集合對象的Picture方法,即可將ListImage組件內(nèi)的圖片指定給圖形顯示組件,語法如下:Set圖形組件.Picture=Imagelist.ListImage(圖片索引).Picture5.Image組件利用Image組件作為游戲執(zhí)行階段所有圖形的顯示。在游戲畫面中,計數(shù)數(shù)字、游戲狀態(tài)表情及地雷區(qū)方塊圖形等,都利用Image組件作為顯示組件,再搭配ImageList組件所存儲的圖形,便可在執(zhí)行階段在同一個Image組件上變換不同的圖片。6.Timer組件在游戲中,地雷引爆的可能有2中,第一種為使用者翻開(踩到)地雷方塊,第二種為設(shè)定時間內(nèi)未探測完所有地雷而引爆。其中第二種的行為,可以通過Timer組件來加以控制。利用Timer組件在固定時間即會觸發(fā)事件的特性,在事件觸發(fā)時便將計數(shù)值加1,直到判斷計數(shù)值超過限定值時,即引爆地雷。7.PictureBox組件PictureBox為容器類型的組件,可以加入其它組件在內(nèi)[3]。在游戲中利用了PictureBox的兩個特性:容器特性和立體框架。分述如下:●容器特性:只要容器本身顯示的行為改變,在容器內(nèi)的組件也會跟著改變。當(dāng)游戲初始時,地雷區(qū)的顯示組件會循環(huán)執(zhí)行,逐一布置在畫面上,但由于執(zhí)行循環(huán)時多個Image組件要顯示圖形,造成分時系統(tǒng)執(zhí)行頻率顯示上會出現(xiàn)不流暢的情形,若在循環(huán)之前,先將容器本身的Visible屬性設(shè)為False,在循環(huán)執(zhí)行完成后再將Visible屬性設(shè)為True,則顯示就會變得流暢許多?!窳Ⅲw框架:通過組件本身立體框線的屬性設(shè)定,可以為游戲畫面的顯示上營造出層次感。8.遞歸VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第9頁。遞歸就是一個程序能被自己所定義的語句調(diào)用。在游戲過程中,當(dāng)使用者按下非地雷方塊時,方塊會沿四周八個方向向外翻開非地雷的方塊。程序執(zhí)行時必須判斷:以按下方塊為中心。檢查周圍八個方塊是否為非地雷方塊,若其中一個方塊是非地雷方塊時,則又以其為中心,向外檢查周圍八個方塊是否為非地雷方塊,如此反復(fù)的行為即構(gòu)成了遞歸的使用條件。當(dāng)判斷方塊內(nèi)容為數(shù)字時(即在非地雷方塊周圍),即停止遞歸執(zhí)行。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第9頁。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第10頁。
VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第10頁。3可行性分析可行性研究的目的是用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。也就是說可行性研究的目的不是解決問題,而是確定問題是否值得去解,研究在當(dāng)前的具體條件下,是否具備必要的資源和其它條件。一般說來,應(yīng)從經(jīng)濟(jì)可行性、技術(shù)可行性、運(yùn)行可行性、和開發(fā)方案可行性等方面研究可行性??尚行苑治觯?.對于當(dāng)前條件下,完全可以達(dá)到該系統(tǒng)功能目標(biāo);
2.該系統(tǒng)功能在現(xiàn)有技術(shù)下,完全可以實(shí)現(xiàn);3目標(biāo):實(shí)現(xiàn)游戲的各類功能,如:初、中、高(自定義)各個游戲等級.4用戶的特點(diǎn);都是對掃雷游戲的喜好者.VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第11頁。
VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第11頁。4總體設(shè)計4.1設(shè)計構(gòu)想本游戲的功能類似于Windows操作系統(tǒng)自帶掃雷游戲,設(shè)計之前,先了解這款游戲的規(guī)則。在不掀開任何的情況下,以最快的速度找出所有的地雷。如果在掀開方塊的過程中,不小心翻開(踩到)藏有地雷的方塊,則宣告失?。ㄋ劳觯┯袑⑺胁缓乩椎姆綁K掀開,游戲才算成功(存活)。游戲的操作方面主要以鼠標(biāo)為主,當(dāng)鼠標(biāo)指針對準(zhǔn)未翻開的方塊按下左鍵時即表示翻開方塊,當(dāng)鼠標(biāo)指針對準(zhǔn)未翻開的方塊按下右鍵時即表示標(biāo)示或疑似地雷,反復(fù)按下右鍵則方塊會依未標(biāo)示→標(biāo)示→疑似三者關(guān)系不斷循環(huán)。使用者可以通過地雷區(qū)內(nèi)的數(shù)表示以其為中心的周邊八個方塊內(nèi)所含的地雷數(shù)。當(dāng)按下的方塊不是地雷,且周邊也沒有地雷時,方塊會以被翻開的八個方向?qū)⒖瞻追綁K翻開。4.2流程規(guī)劃流程規(guī)劃分為三個部分,分別為:畫面初始、使用者按下第一個方塊和為非地雷方塊時展開。畫面初始時,以使用者最后一次設(shè)定的地雷區(qū)大小為范圍畫出地雷區(qū),但此時并未產(chǎn)生地雷。當(dāng)使用者按下第一個方塊時產(chǎn)生地雷并啟動定時器,主要為了不讓使用者第一次就踩到地雷,這樣在某種程度上提高了游玩的氣氛。接著就是如何判斷按下的方塊為非地雷時的處理,這也是整個游戲的技術(shù)核心,可以通過遞歸的觀念來檢查周邊是否含有地雷及是否繼續(xù)往外翻開。流程規(guī)劃如圖2所示:VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第12頁。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第12頁。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第13頁。開始依照使用者設(shè)定初始VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第13頁。開始依照使用者設(shè)定初始等待按鍵右鍵?第一次按下方塊?顯示方塊1.布置地圖2.啟動定時器按下方塊是否為地圖左鍵?顯示分?jǐn)?shù)是否再玩結(jié)束計時器時間到?延按下方塊周圍展開非地雷方塊是是是否否否否否是否5詳細(xì)設(shè)計5.1畫面規(guī)劃畫面規(guī)劃如圖3所示:1778612101113051601501404932117786121011130516015014049321圖3畫面規(guī)劃圖說明如下:●eq\o\ac(○,1):游戲窗口(Form)。為了避免因改變窗口大小而造成畫面呈現(xiàn)不美觀,將BorderStyle屬性值設(shè)定為3(雙線固定對話框),即無法以窗口邊緣進(jìn)行窗口大小調(diào)整?!馿q\o\ac(○,2):計數(shù)區(qū)(PictureBox)?!馿q\o\ac(○,3):地雷數(shù)顯示區(qū)(PictureBox)?!馿q\o\ac(○,4):游戲時間顯示區(qū)(PictureBox)?!馿q\o\ac(○,5):地雷區(qū)(PictureBox)?!馿q\o\ac(○,6)~eq\o\ac(○,8):地雷數(shù)(Image)?!馿q\o\ac(○,9):游戲狀態(tài)(Image)?!馿q\o\ac(○,10)~eq\o\ac(○,12):經(jīng)過秒數(shù)(Image)。●eq\o\ac(○,13):地雷區(qū)圖樣(Image)?!馿q\o\ac(○,14):游戲狀態(tài)圖片(ImageList)?!馿q\o\ac(○,15):地雷區(qū)圖片(ImageList)。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第14頁?!馿q\o\ac(○,16):地雷數(shù)及秒數(shù)數(shù)字圖片(ImageList)。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第14頁?!馿q\o\ac(○,17):秒數(shù)控制(Timer)。5.2設(shè)計過程5.2.1添加菜單使用菜單編輯器編輯游戲的主菜單,點(diǎn)擊“工具”菜單上的“菜單編輯器”命令選項,即可打開菜單編輯器。菜單控件在列表框中的位置決定了該控件是菜單標(biāo)題、菜單項、子菜單標(biāo)題,還是子菜單項。對于一些常用的菜單命令,可以設(shè)置“Alt+快捷鍵”組合來快速打開菜單。方法是在菜單編輯器中的Caption后面添加“(&R)”就可以了。圖4菜單編輯器5.2.2自定義窗體設(shè)計打開主菜單游戲→自定義,可以顯示窗體,如圖5所示。通過這個窗體使用者可以自己設(shè)定行數(shù)、列數(shù)和地雷數(shù)。圖5自定義窗體'設(shè)置參數(shù)PrivateSubCommand1_Click()IftHeight.Text>50OrtHeight.Text<0ThenVB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第15頁。tHeight.Text=24VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第15頁。EndIfIftWidth.Text>50OrtWidth.Text<0ThentWidth.Text=30EndIfIftMines.Text>(tHeight.Text*tWidth.Text)OrtMines.Text<0ThentMines.Text=(tHeight.Text-1)*(tWidth.Text-1)EndIfSaveSetting"Mine","SET","1",tWidth.TextSaveSetting"Mine","SET","2",tHeight.TextSaveSetting"Mine","SET","3",tMines.TextUnloadMeEndSub5.2.3關(guān)于窗體設(shè)計打開主菜單幫助→關(guān)于掃雷,可以顯示如圖6所示。幫助使用者了解相關(guān)信息。PrivateSubabout_Click()aboutfrm.ShowEndSub5.3運(yùn)行界面執(zhí)行窗體時的界面如圖6所示:VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第16頁。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第16頁。圖6窗體運(yùn)行界面'窗體加載PrivateSubForm_Load()Randomize'初始化隨機(jī)數(shù)產(chǎn)生器'加載為地雷區(qū)方塊圖片SetiMine(0).Picture=ilMap.ListImages(9).Picture'參數(shù)初始設(shè)定CallsetInit(GetSetting("Mine","Level","1","0"))'計數(shù)區(qū)配置CallsetCounterInit'地雷區(qū)配置CallsetMapInit'設(shè)定窗體大小CallsetFormSizeEndSubVB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第17頁。
VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第17頁。6系統(tǒng)測試掃雷游戲是WINDOWS系統(tǒng)自帶的一個娛樂性的小游戲,為了確保本游戲能夠正常運(yùn)行,需要在發(fā)布之后做一次較全面的測試。掃雷游戲的目標(biāo)是盡快找到雷區(qū)中的所有地雷,而不許踩到地雷。如果挖開的是地雷,您將輸?shù)粲螒?。掃雷游戲在程序運(yùn)行后生成指定的地雷,在鼠標(biāo)左鍵點(diǎn)擊下尋找地雷,右鍵點(diǎn)擊下標(biāo)記地雷,點(diǎn)擊笑臉的標(biāo)記開始重新游戲,并給出勝利和失敗的條件:標(biāo)出所有的地雷和左鍵點(diǎn)中地雷。在游戲菜單上,單擊開局。單擊游戲區(qū)中的任何方塊,要啟動計時器。通過單擊即可挖開方塊。如果挖開的是地雷,則您輸?shù)粲螒?。如果方塊上出現(xiàn)數(shù)字,則表示在其周圍的八個方塊中共有多少顆地雷。要標(biāo)記您認(rèn)為可能有地雷的方塊,請右鍵單擊它。游戲區(qū)包括雷區(qū)、地雷計數(shù)器和計時器。經(jīng)過一些簡單的步驟的測試,證明本游戲具有相當(dāng)?shù)姆€(wěn)定性。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第18頁。
VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第18頁。結(jié)束語經(jīng)過一個星期的設(shè)計和開發(fā),以VisualBasic6.0為開發(fā)工具,掃雷小游戲基本開發(fā)完畢,基本功能能夠?qū)崿F(xiàn)。但是由于設(shè)計時間較短,所以該游戲還有許多不盡如人意的地方,有待進(jìn)一步改善。在游戲的設(shè)計過程中,學(xué)習(xí)了很多知識包括設(shè)計思想和對所學(xué)語言的應(yīng)用,加深了對VisualBasic6.0的理解,還使我對各個控件有了更好的掌握。能把所學(xué)的運(yùn)用到實(shí)踐中,提高了獨(dú)立思考和動手能力。同時深深地體會到進(jìn)行軟件開發(fā)不是一件簡單的事情,它需要設(shè)計者具有全面的專業(yè)知識、縝密的思維、嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度以及較高的分析問題解決問題的能力,而我在很多方面還有欠缺。今后還要努力學(xué)習(xí)這方面的專業(yè)知識,虛心請教他人的工作經(jīng)驗,來提高自身的分析問題、解決問題的能力。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第19頁。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第19頁。參考文獻(xiàn)[1]柴欣,武優(yōu)西.VisualBasic程序設(shè)計基礎(chǔ).中國鐵道出版社,2005,8(3):73-79[2]劉瑞新,汪遠(yuǎn)佂.VisualBasic程序設(shè)計教程.機(jī)械工業(yè)出版社,2002,5:209-223[3]譚浩強(qiáng).VisualBasic程序設(shè)計案例教程.清華大學(xué)出版社,2008,2(2):32-37[4]管麗娜,白海波.實(shí)用VisualBasic6教程.北京:清華大學(xué)出版社,2001[5]段興.VisualBasic數(shù)據(jù)庫實(shí)用程序設(shè)計100例.人民郵電出版社,2002[6]王運(yùn)堅.VISUALBASIC6.0應(yīng)用指南.北京:人民郵電出版社,1998致謝VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第20頁。經(jīng)過一周的努力,我做的掃雷游戲終于完成。在課設(shè)的過程中遇到了很多問題,在老師的指導(dǎo)下和同學(xué)的幫助下,把這些問題一一解決了,按時的順利的完成了任務(wù)。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第20頁。由于學(xué)識疏淺,文中難免有失當(dāng)之處,敬請老師不吝賜教,以使本文能夠更加完善!在此,對老師和同學(xué)表示衷心的感謝!附錄VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第21頁。附上本程序完整代碼:VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第21頁。DimMAP_XAsInteger'地圖的X軸長DimMAP_YAsInteger'地圖的Y軸長DimMINE_NUMAsInteger'地雷數(shù)DimMINE_NUM_LABELAsInteger'地雷標(biāo)記數(shù)DimMINE_NUM_CLEARAsInteger'方塊清除數(shù)DimTIME_COUNTERAsInteger'時間計數(shù)DimisStartAsBoolean'游戲是否已進(jìn)行DimisDieAsBoolean'游戲是否呈結(jié)束狀態(tài)DimisFinalAsBoolean'游戲是否完成DimmapArr()AsInteger'地雷區(qū)地雷分布情形DimmapFaceArr()AsInteger'地雷區(qū)方塊探測情形'窗體加載PrivateSubForm_Load()Randomize'初始化隨機(jī)數(shù)產(chǎn)生器'加載為地雷區(qū)方塊圖片SetiMine(0).Picture=ilMap.ListImages(9).Picture'參數(shù)初始設(shè)定CallsetInit(GetSetting("Mine","Level","1","0"))'計數(shù)區(qū)配置CallsetCounterInit'地雷區(qū)配置CallsetMapInit'設(shè)定窗體大小CallsetFormSizeEndSub'地雷區(qū)方塊按下事件VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第22頁。PrivateSubiMine_MouseDown(indexAsInteger,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第22頁。DimxxxAsInteger'換算組件所代表的坐標(biāo)值DimyyyAsIntegerIfisFinal=FalseAndisDie=FalseThenxxx=indexModMAP_X'標(biāo)示動作圖片的坐標(biāo)yyy=index\MAP_XIfButton=1Then'鼠標(biāo)左鍵IfmapFaceArr(xxx,yyy)=1ThenCallsetMineImage(index,10)SetiState.Picture=ilSmile.ListImages(3).PictureEndIfElseIfButton=2Then'鼠標(biāo)右鍵IfmapFaceArr(xxx,yyy)=1Then'未探測mapFaceArr(xxx,yyy)=2MINE_NUM_LABEL=MINE_NUM_LABEL+1CallsetMineImage(index,13)CallsetNowMinesElseIfmapFaceArr(xxx,yyy)=2Then'標(biāo)示mapFaceArr(xxx,yyy)=3MINE_NUM_LABEL=MINE_NUM_LABEL-1CallsetMineImage(index,14)CallsetNowMinesElseIfmapFaceArr(xxx,yyy)=3Then'疑似mapFaceArr(xxx,yyy)=1CallsetMineImage(index,9)EndIfEndIfEndIfEndSubVB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第23頁。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第23頁。'地雷區(qū)方塊松開事件PrivateSubiMine_MouseUp(indexAsInteger,_ButtonAsInteger,_ShiftAsInteger,_xAsSingle,_yAsSingle)DimxxxAsInteger'換算組件所代表的坐標(biāo)值DimyyyAsIntegerDimrXAsInteger'隨機(jī)數(shù)產(chǎn)生坐標(biāo)值DimrYAsIntegerDimcMINE_NUMAsInteger'地雷數(shù)暫存值'判斷地雷區(qū)是否處于可動作狀態(tài)IfisDie=FalseAndisFinal=FalseThenxxx=indexModMAP_X'標(biāo)示動作圖片的坐標(biāo)yyy=index\MAP_X'判斷為左鍵且該方塊為未探測狀態(tài)IfButton=1AndmapFaceArr(xxx,yyy)=1Then'判斷游戲是否等待啟動IfisStart=FalseThencMINE_NUM=MINE_NUMisStart=TrueTimer1.Enabled=True'布置地雷DoWhilecMINE_NUM>0rX=Rnd()*(MAP_X-1)rY=Rnd()*(MAP_Y-1)'判斷數(shù)組中(rX,rY)為非地雷及'非點(diǎn)選的方塊坐標(biāo)時IfmapArr(rX,rY)<>9And_Not(rX=xxxAndrY=yyy)ThencMINE_NUM=cMINE_NUM-1VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第24頁。mapArr(rX,rY)=9VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第24頁。'地雷外圍數(shù)字各加一Forxx=rX-1TorX+1Foryy=rY-1TorY+1Ifxx>=0Andxx<=MAP_XAnd_yy>=0Andyy<=MAP_YThenIfmapArr(xx,yy)<>9And_Not(xx=rXAndyy=rY)ThenmapArr(xx,yy)=mapArr(xx,yy)+1EndIfEndIfNextyyNextxxEndIfLoopEndIf'將該方塊坐標(biāo)值設(shè)為0,表示為翻開狀態(tài)mapFaceArr(xxx,yyy)=0'選擇地雷區(qū)數(shù)組判斷該坐標(biāo)SelectCasemapArr(xxx,yyy)Case0'空白CalldoClear(xxx,yyy,index)CallsetMineImage(index,10)Case1To8'數(shù)字MINE_NUM_CLEAR=MINE_NUM_CLEAR+1CallsetMineImage(index,mapArr(xxx,yyy))Case9'地雷isDie=TrueVB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第25頁。Timer1.Enabled=FalseVB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第25頁。CallshowMineCallsetMineImage(index,12)EndSelect'檢查是否只剩下地雷未探測IfMAP_X*MAP_Y-MINE_NUM_CLEAR=MINE_NUMThenisFinal=TrueEndIfEndIf'設(shè)定狀態(tài)圖示CallsetStateImageEndIfEndSub'清除未靠近地雷的區(qū)塊PrivateSubdoClear(ByValxAsInteger,ByValyAsInteger,ByValindexAsInteger)MINE_NUM_CLEAR=MINE_NUM_CLEAR+1Forxx=x-1Tox+1Foryy=y-1Toy+1Ifxx>=0Andxx<=MAP_XAnd_yy>=0Andyy<=MAP_YThenIfNot(xx=xAndyy=y)ThenIfmapFaceArr(xx,yy)=1And_mapArr(xx,yy)>=0And_mapArr(xx,yy)<=8ThenmapFaceArr(xx,yy)=0SelectCasemapArr(xx,yy)Case0VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第26頁。CallsetMineImage((yy*MAP_X+xx),10)VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第26頁。CalldoClear(xx,yy,(yy*MAP_X+xx))Case1To8MINE_NUM_CLEAR=MINE_NUM_CLEAR+1CallsetMineImage((yy*MAP_X+xx),mapArr(xx,yy))EndSelectEndIfEndIfEndIfNextyyNextxxEndSub'按下表情圖案時PrivateSubiState_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)IfButton=1ThenSetiState.Picture=ilSmile.ListImages(2).PictureEndIfEndSub'松開表情圖案時PrivateSubiState_MouseUp(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)IfButton=1ThenSetiState.Picture=ilSmile.ListImages(1).PictureForm_LoadEndIfVB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第27頁。EndSubVB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第27頁。'設(shè)定狀態(tài)圖示PrivateSubsetStateImage()'狀態(tài)判斷IfisDie=FalseThenIfisFinal=TrueThenSetiState.Picture=ilSmile.ListImages(5).PictureCallshowFinal'顯示過關(guān)ElseSetiState.Picture=ilSmile.ListImages(1).PictureEndIfElseSetiState.Picture=ilSmile.ListImages(4).PictureEndIfEndSub'設(shè)定方塊圖片PrivateSubsetMineImage(m_indexAsInteger,il_indexAsInteger)SetiMine(m_index).Picture=ilMap.ListImages(il_index).PictureEndSub'初始設(shè)定PrivateSubsetInit(indexAsInteger)isStart=FalseisFinal=FalseisDie=FalseTimer1.Enabled=FalseTIME_COUNTER=0VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第28頁。MINE_NUM_LABEL=0VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第28頁。MINE_NUM_CLEAR=0SelectCaseindexCase0MAP_X=9MAP_Y=9MINE_NUM=10Case1MAP_X=16MAP_Y=16MINE_NUM=40Case2MAP_X=30MAP_Y=16MINE_NUM=99Case3MAP_X=GetSetting("Mine","SET","1","30")MAP_Y=GetSetting("Mine","SET","2","24")MINE_NUM=GetSetting("Mine","SET","3","50")EndSelectFori=0To3muGame_Level(i).Checked=FalseNextimuGame_Level(index).Checked=TrueSaveSetting"Mine","Level","1",index'儲存選擇EndSub'計數(shù)區(qū)初始化PrivateSubsetCounterInit()VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第29頁。DimwidAsIntegerVB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第29頁。DimhigAsInteger'地雷計數(shù)顯示CallsetNowMines'顯示現(xiàn)在地雷數(shù)iMC1.Move0,0iMC2.MoveiMC1.Left+iMC1.Width,0iMC3.MoveiMC2.Left+iMC2.Width,0'設(shè)定地雷計數(shù)框大小wid=pMC.Width-pMC.ScaleWidthhig=pMC.Height-pMC.ScaleHeightpMC.Width=iMC1.Width*3+widpMC.Height=iMC1.Height+hig'時間計數(shù)顯示CallsetNowTimeriTC1.Move0,0iTC2.MoveiTC1.Left+iTC1.Width,0iTC3.MoveiTC2.Left+iTC2.Width,0'設(shè)定時間計數(shù)框大小wid=pTC.Width-pTC.ScaleWidthhig=pTC.Height-pTC.ScaleHeightpTC.Width=iTC1.Width*3+widpTC.Height=iTC1.Height+hig'計數(shù)區(qū)配置wid=pCounter.Width-pCounter.ScaleWidthhig=pCounter.Height-pCounter.ScaleHeightpCounter.Move150,_150,_iMine(0).Width*MAP_X+wid,_pMC.Height+300+higVB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第30頁。'設(shè)定組件位置VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第30頁。SetiState.Picture=ilSmile.ListImages(1).PictureiState.Move(pCounter.ScaleWidth-iState.Width)/2,150pMC.Move150,150pTC.MovepCounter.ScaleWidth-150-pTC.Width,150EndSub'地圖初始化PrivateSubsetMapInit()pMap.Visible=False'重新定義地圖數(shù)組大小ReDimmapArr(MAP_X,MAP_Y)ReDimmapFaceArr(MAP_X,MAP_Y)'地圖中小方塊長寬DimiWidAsIntegerDimiHigAsIntegeriWid=iMine(0).WidthiHig=iMine(0).Height'設(shè)定地圖數(shù)組數(shù)據(jù)'并加載表示地圖數(shù)據(jù)之圖片F(xiàn)ory=0ToMAP_Y-1Forx=0ToMAP_X-1mapArr(x,y)=0mapFaceArr(x,y)=1CallsetMineImage(y*MAP_X+x,9)iMine(y*MAP_X+x).Movex*iWid,y*iHigiMine(y*MAP_X+x).Visible=TrueiMine(y*MAP_X+x).ZOrderIfiMine.Count<(MAP_X*MAP_Y)ThenVB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第31頁。LoadiMine(iMine.Count)VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第31頁。EndIfNextxNexty'設(shè)定地圖區(qū)大小位置DimwidAsIntegerDimhigAsIntegerwid=pMap.Width-pMap.ScaleWidthhig=pMap.Height-pMap.ScaleHeightpMap.Move150,_pCounter.Height+300,_MAP_X*iWid+wid,_MAP_Y*iHig+higpMap.Visible=TrueEndSub'設(shè)定窗體大小PrivateSubsetFormSize()DimwidAsIntegerDimhigAsIntegerwid=Me.Width-Me.ScaleWidthhig=Me.Height-Me.ScaleHeightMe.Width=pMap.Width+300+widMe.Height=pMap.Height+pCounter.Height+450+higEndSub'顯示現(xiàn)在地雷數(shù)PrivateSubsetNowMines()DimintNMAsIntegerVB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第32頁。VB做掃雷游戲畢業(yè)設(shè)計全文共36頁,當(dāng)前為第32頁。IfintNM<0ThenintNM
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人與公司間的借款逾期罰息合同3篇
- 二零二五年度生態(tài)餐飲原物料綠色配送服務(wù)合同3篇
- 2025年度個人房屋租賃合同范本(含租金支付方式)2篇
- 2025年度新型電梯銷售及居間服務(wù)合同協(xié)議書范本3篇
- 2025年度門面租賃合同租賃雙方權(quán)利義務(wù)協(xié)議4篇
- 2025年度木屋建造與木材加工技術(shù)創(chuàng)新合同4篇
- 2025年度高速公路貨運(yùn)運(yùn)輸合同4篇
- 二零二五年度電器產(chǎn)品環(huán)保標(biāo)準(zhǔn)執(zhí)行合同3篇
- 2025年度盤扣式腳手架租賃及應(yīng)急救援預(yù)案合同3篇
- 二零二五年度城市景觀工程承包合同樣本4篇
- SYT 6968-2021 油氣輸送管道工程水平定向鉆穿越設(shè)計規(guī)范-PDF解密
- 冷庫制冷負(fù)荷計算表
- 肩袖損傷護(hù)理查房
- 設(shè)備運(yùn)維管理安全規(guī)范標(biāo)準(zhǔn)
- 辦文辦會辦事實(shí)務(wù)課件
- 大學(xué)宿舍人際關(guān)系
- 2023光明小升初(語文)試卷
- GB/T 14600-2009電子工業(yè)用氣體氧化亞氮
- 申請使用物業(yè)專項維修資金征求業(yè)主意見表
- 房屋買賣合同簡單范本 房屋買賣合同簡易范本
- 無抽搐電休克治療規(guī)范
評論
0/150
提交評論