VB設(shè)計(jì)俄羅斯方塊論文_第1頁
VB設(shè)計(jì)俄羅斯方塊論文_第2頁
VB設(shè)計(jì)俄羅斯方塊論文_第3頁
VB設(shè)計(jì)俄羅斯方塊論文_第4頁
VB設(shè)計(jì)俄羅斯方塊論文_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、前言visual basic繼承了 basic語言易學(xué)易用的特點(diǎn),特別適合于初學(xué)者學(xué)習(xí)windows系 統(tǒng)編程。隨著21世紀(jì)信息社會的到來,計(jì)算機(jī)在人們的工作和生活中的深入,要求我們越來 越多地與汁算機(jī)打交道,為了使用戶在繁忙的日程工作中得到放松,于是岀現(xiàn)了各種各樣的 休閑軟件,如聊天工具,游戲等等。于是我們小組著手設(shè)汁開始一個這樣的游戲軟件。通過這 學(xué)期來Visual Basic的學(xué)習(xí),我初步掌握了 Visual Basic語言的最基本的知識,于是在化 希耀張兵等老師的指導(dǎo)下動手用Visual Basic編寫俄羅斯方塊游戲。無可爭議,俄羅斯方塊是有史以來最偉大的游戲之一。它是永恒的娛樂經(jīng)典,

2、但它 實(shí)際上又和那些傳統(tǒng)的經(jīng)典娛樂方式不同,因?yàn)樗谋举|(zhì)是電子化的,所以它的確屬于現(xiàn)代 產(chǎn)物。俄羅斯方塊舉世聞名的游戲性,在該游戲新鮮出爐時(shí)就顯得非常直觀。某些與墜 落的玩具碎片和它們的形狀有關(guān)的東西,使得哪怕新手也會很自然地企圖把它們排列起來, 并加以適當(dāng)組合,就好似俄羅斯方塊觸動了我們某些內(nèi)在的感官,使得哪怕是我們當(dāng)中 最雜亂無章的人也要把事情整理妥當(dāng)。在曾經(jīng)發(fā)布過的所有游戲中,俄羅斯方塊還被認(rèn)為是僅有的一個能夠真正吸引廣泛 人群的作品。某些批評家也許會聲稱,俄羅斯方塊要比過去二十年間出現(xiàn)的任何東四都 要浪費(fèi)人們的時(shí)間。至于我們,則要欣然提務(wù)它為GameSpot評選出的歷史上最偉大游戲之為

3、了懷念經(jīng)典,也為了能夠給大多的計(jì)算機(jī)用戶在工作之余找到一個休閑、娛樂的一個 方式,我們小組開始著手用VB語言開發(fā)一個經(jīng)典的俄羅斯方塊游戲。工程概況1.1項(xiàng)目名稱俄羅斯方塊游戲1.2設(shè)計(jì)平臺VB全稱Visual Basic,它是以Basic語言作為英基本語言的一種可視化編程工具。Vb是microsoft公司于1991年退岀的windows應(yīng)用程序開發(fā)工具visual意思是"可 視化的”。在它剛推出來時(shí),自身還存在一些缺陷,功能也相對少一些。但是經(jīng)過多年的開 發(fā)研究。最近microsoft公司又推出了 VB6. 0版本VB6. 0運(yùn)行環(huán)境:硬件,要求486以上的處理器、16MB以上內(nèi)存,

4、50MB以上的硬盤, cd-rom驅(qū)動器,鼠標(biāo)。軟件:要求windows 95以上版本。1.3程序設(shè)計(jì)思想游戲是用來給大家娛樂的,所以要能在使用的過程中給大家?guī)砜鞓?,消除大家的疲? 所以我們在游戲中添加了漂亮的場景和動聽的音樂,設(shè)置了過關(guān)升級的功能,激發(fā)大家的娛 樂激情。從游戲的基本玩法出發(fā),主要就是俄羅斯方塊的形狀和族轉(zhuǎn),我們在設(shè)汁中在一個圖片 框中構(gòu)造了一個4*4的網(wǎng)狀小塊,由這些小塊組合成新的形狀,每四個小塊連接在一起就可 以構(gòu)造岀一種造型,因此我們總共設(shè)計(jì)了7中造型,每種造型又可以通過旋轉(zhuǎn)而變化出2 到4種形狀,利用隨機(jī)函數(shù)在一個預(yù)覽窗體中提前展示形狀供用戶參考,然后將展示的形狀

5、復(fù)制到游戲窗體中進(jìn)行擺放,在游戲窗體中用戶就可以使用鍵盤的方向鍵來控制方塊的運(yùn) 動,然后利用遞歸語句對每一行進(jìn)行判斷,如果有某行的方塊是滿的,則消除這行的方塊, 并且使上而的方塊自由下落,苴中,方塊向下的速度是有時(shí)鐘控件控制的,在游戲中,用戶 也可以使用向下鍵加快下落速度,立義一個變量,對消除的函數(shù)進(jìn)行記錄,最后就可以得出 用戶的分?jǐn)?shù),用辻語句對分?jǐn)?shù)判斷,達(dá)到一泄的積分就可以升級到下一個檔次。俄羅斯方塊游戲設(shè)計(jì)的主要步驟為以下10個方而:(1)游戲界而的設(shè)計(jì)。(2)俄羅斯方塊的造型。(3)俄羅斯方塊的旋轉(zhuǎn)。(4)俄羅'斯方塊的運(yùn)動情況(包括向左,向右和向下)。(5)俄羅斯方塊的自動消行

6、功能。(6)游戲級別的自由選擇。(7)游戲速度的自由選擇。(8)游戲得分的計(jì)算。(9)游戲菜單選項(xiàng)的設(shè)計(jì)及功能實(shí)現(xiàn)。(10)游戲的背景音樂。1.4運(yùn)用的控件和主要對象我們在設(shè)訃過程中主要用到的控件有:command控件,image控件,picture控件,label 控件,timer 控件,text 控件,windows media player 控件等等。1.5主要實(shí)現(xiàn)的功能我們開發(fā)的俄羅斯方塊游戲,主要實(shí)現(xiàn)了以下幾種功能:1. 可以靈活控制方塊在圖形框中運(yùn)動。2. 游戲過程中方塊可以自由旋轉(zhuǎn)。3. 當(dāng)某一行的方塊排列滿時(shí),將自動將這一行方塊消除,然后將上面所有方塊向下移動, 可以支持連續(xù)消

7、行。4. 游戲前可以選擇游戲的速度和游戲的等級,游戲速度既為方塊下落速度,游戲等級為 初始游戲時(shí)在基層隨機(jī)生成一立行數(shù)的無規(guī)律方塊,生成的行數(shù)由你來選擇,每行至少產(chǎn)生 5個以上的無規(guī)律方塊,這樣增加了游戲難度,對于游戲高手來說,無疑不是一個新的挑戰(zhàn)。5. 游戲的得分支持積分,并且按照公式:得分二原來分?jǐn)?shù)+ 100 * (2 “同時(shí)消除的行數(shù)-1)這樣,你同一時(shí)間消除的行數(shù)越多,你的得分也就越髙,當(dāng)游戲積分到了一泄 時(shí)可以自動升級,這個升級指速度升級。6. 游戲中提供了一個漂亮的場景和動聽的音樂,給你帶來無限激情。1.6開發(fā)人員與分工組長李虎同學(xué)所做工作如下:(1)俄羅斯方塊的旋轉(zhuǎn)。(2)俄羅斯

8、方塊的運(yùn)動情況。(3)俄羅斯方塊的自動消行功能。(4)游戲得分的計(jì)算。(5)游戲菜單選項(xiàng)的設(shè)計(jì)及功能實(shí)現(xiàn)。副組長王志偉同學(xué)所做工作如下:(1) 游戲界而的設(shè)計(jì)。(2) 俄羅斯方塊的造型。(3) 游戲級別的自由選擇。(4) 游戲速度的自由選擇。(5) 游戲的背景音樂。正文2.1游戲設(shè)計(jì)的具體實(shí)現(xiàn)在我們兩個人共同努力下,此次設(shè)計(jì),終于能夠圓滿完成。由于時(shí)間的緊促,在設(shè)計(jì)中, 也許會有一些考慮不周之處,但其功能已經(jīng)能夠滿足大多用戶的需求,相信假以時(shí)日,一泄 能做岀一個更經(jīng)典,更完美的俄羅斯方塊游戲,下面我們將對每一步的具體如何實(shí)現(xiàn)展示給 大家。2.1.1游戲界面的設(shè)計(jì)和背景音樂及特效的實(shí)現(xiàn)俄羅斯方塊

9、游戲主要由兩個界面構(gòu)成,登陸界面和開始游戲界而。游戲的背景音樂是由一段代碼調(diào)用系統(tǒng)播放器Windows Player播放背景音樂,由于本 次設(shè)計(jì)主要是針對游戲如何設(shè)計(jì)的,所以在這里就不對播放背景音樂的功能做介紹了。 2.1.2俄羅斯方塊的造型相信朋友們都玩過俄羅斯方塊,對這個游戲的玩法和方塊形狀都比較熟悉。我們這個游 戲只選擇了最基本的7中造型,包括長條型,正方型,正S型,反S型,正7型,反7型, T型。如果需要我們可以添加更多的造型。將游戲界而的游戲區(qū)圖片框分割成10*20的小塊, 每個小塊放置一個command控件,預(yù)覽區(qū)圖片框按同樣比例分割成4*4的小塊,同樣有 command控件構(gòu)成,

10、我們可以把預(yù)覽區(qū)圖片框看作是從游戲區(qū)圖片框中選取的一個部分,游戲區(qū)的小方塊編號和預(yù)覽區(qū)編號如下圖:0123456789 90919293949596979899游戲區(qū)編號預(yù)覽區(qū)編號34L06131415162324252633343536利用Select將方塊的7中造型列出,比如長條型的設(shè)計(jì),在欲覽區(qū)中分別有3. 4. 5. 6 和5. 15. 25. 35四個方塊構(gòu)成兩中形態(tài),用數(shù)組為:m(0) = 3: m(l) = 4: m(2) = 5: m(3) = 6: situation2 = 0m(0) = 5: m(l) = 15: m(2) = 25: m(3) = 35: situati

11、on2 = 1將它的形狀編號為0和1,在后而方便調(diào)用,其他的方塊造型同樣的方法。2.1.3俄羅斯方塊的旋轉(zhuǎn)俄羅斯方塊的旋轉(zhuǎn)主要將方塊的位置加以變換得到的,例如上述范例,長條型有兩中樣 式,根據(jù)小方塊的編號變動來實(shí)現(xiàn)整個造型的旋轉(zhuǎn),比如:If n(0) - 18 >= 2 And n(3) + 9 <= 198 ThenIf cmdfang(n(0) - 18). Visible 二 False And _cmdfang(n(l) - 9). Visible 二 False And _cmdfang(n(3) + 9). Visible 二 False Thenhidefang 0

12、n(0)=n(0)-18n(l)=n(l)-9n(3)=n(3)+9showfang 0 situation = 1End IfEnd If方塊的造型在旋轉(zhuǎn)的時(shí)候存在一個公式,當(dāng)然首先要判斷是否滿足旋轉(zhuǎn)的要求,以上是 一個長條型由橫著變成豎立狀態(tài)的旋轉(zhuǎn),我們以它的造型中的第三個小方塊n(3)為中心旋 轉(zhuǎn),這樣,在開始運(yùn)動的時(shí)候,長條形要發(fā)生旋轉(zhuǎn)最少要運(yùn)動到第三行,才能由橫著變成豎 立狀態(tài),游戲區(qū)圖形框中第三行的第一個方塊的編號為20,所以長條造型的第一個小方塊 的編號n(0)必須要大于20。同樣,長條型方塊在下落到底部的時(shí)候也有限制。如果長條下 落到最后一行也將無法由橫著變成豎立狀態(tài)。2.1.

13、4如何實(shí)現(xiàn)方塊的運(yùn)動和自動消除滿行的方塊我們的這個俄羅斯方塊游戲主要是利用command控件的visible屬性完成效果的,其實(shí) 在游戲區(qū)圖形框可以看成是由許多的command小方塊組成,方塊運(yùn)動的過程就是造型里方塊 顯示或者隱藏,就像現(xiàn)在的霓虹燈效果一樣,由時(shí)鐘控件控制visible屬性改變的速度,上 一層的消失,下一層的顯示,這樣,從視覺效果可以看到方塊的下落運(yùn)動效果。方塊在卜-落的過程中會自動判斷每一行方塊的visible屬性,如果全部為true時(shí),就 會將這一行小方塊的visible屬性全部變成false,在將上而的小方塊向下移動,利用for 語句進(jìn)行循環(huán)判斷,將所有這樣情況的行改變小

14、方塊Visible屬性。當(dāng)有多行同時(shí)岀現(xiàn)這樣 情況時(shí)使用遞歸調(diào)用,實(shí)現(xiàn)連續(xù)消行。具體程序代碼如下:For i = 190 To 10 Step TOIf cmdfang(i)Visible = True Andcmdfang(i cmdfang(i cmdfang(i cmdfang(i cmdfang(i cmdfang(i cmdfang(i+ 1)Visible = True And+ 2). Visible = True And+ 3). Visible = True And+ 4). Visible = True And+ 5)Vis讓le = True And+ 6)Visible

15、 = True And+ 7)Visible = True Andcmdfang(i+ 8). Visible = True Andcmdfang(i + 9)Visible = True ThenFor j = i + 4 To i Step -1cmdfang(j)Visible = Falsecmdfang(2 * i + 9 - j)Visible = False For k = 1 To 4000DoEventsNextNextlinenum = linenum + 1For j = i - 1 To 0 Step -1If cmdfang(j). Visible 二 True Th

16、encmdfang(j). Visible 二 Falsecmdfang(j + 10). Visible 二 TrueEnd IfNextclearline'為了實(shí)現(xiàn)連消數(shù)行,這里使用遞歸調(diào)用End IfNext2.1.5游戲速度和游戲級別自由選擇游戲速度的自由選擇無非就是改變時(shí)鐘控件的頻率,我們在菜單中添加了選擇速度的功 能,還有添加了考驗(yàn)功能,將欲覽窗中的方塊造型隱藏,給玩家提高了難度,如果你不愿意 接受考驗(yàn)也可以點(diǎn)擊顯示還原成原來狀態(tài)。游戲級別的自由選擇是讓用戶選擇游戲開始時(shí)候,游戲區(qū)底部出現(xiàn)一左行數(shù)的隨機(jī)方 塊,同樣給玩家增加了難度,功能代碼如下:For i = 19 To

17、20 - Vai(txthard. Text) Step -1For j 二 i * 10 To i * 10+9If Rnd >= 0. 5 Then cmdfang(j). Visible = TrueNextNext可以根據(jù)你選擇的難度系數(shù)在底層的每一行隨機(jī)產(chǎn)生超過半數(shù)(即5個以上)以上的小 方塊,這樣適合喜歡高難度的玩家。2.1.6游戲得分的計(jì)算和游戲菜單的編輯游戲得分的計(jì)算主要是根據(jù)消除的行數(shù)來決泄的,當(dāng)然每一次同時(shí)消除的行數(shù)不一樣, 每一行的得分也不一樣,如果你每次消除的行數(shù)為1,則最后得分是100分,如果同時(shí)消除 2行,則最后得分是300分,同時(shí)消除3行,得分為700分,同

18、時(shí)消除4行,得分為1500 分,這由公式:得分二原來分?jǐn)?shù)+ 100 * (2 “同時(shí)消除的行數(shù)-1)。游戲的編輯,讀者可以參照下面的功能介紹。2.2游戲功能的介紹文件£開始F1:開始游戲。繼續(xù)F2:繼續(xù)游戲。暫停F3:暫時(shí)停止游戲,點(diǎn)擊繼續(xù)的時(shí)候可以繼續(xù)游戲。退岀Ctrl+Q:退出游戲。設(shè)置選擇游戲級別。選擇游戲速度??简?yàn)顯示F5:顯示欲覽區(qū)方塊。隱藏F6:隱藏欲覽區(qū)方塊。幫助操作提示以及版本信息和作者資料。用戶界面具體如圖:圖一登陸界而圖一游戲界而圖一菜單編輯界而俄羅斯方塊o 鍵盤控制方法:1.左右光梳鍵控制方塊左右務(wù)動-2上光標(biāo)龍控制方塊順時(shí)針旋轉(zhuǎn)90度。3下光標(biāo)建控制方塊加速向

19、下移動。程序設(shè)計(jì)者:王志偉李虎版權(quán)所有,諸勿盜版E-Mail: 111120080163. com圖一游戲幫助界而有關(guān)說明經(jīng)過兩個多星期的設(shè)計(jì)和開發(fā),俄羅斯方塊游戲已經(jīng)成功。苴功能基本符合用戶需求, 能夠完成游戲的控制,方塊的變換以及消層等功能。并提供游戲設(shè)置,對于一些技術(shù)性比較 過硬的玩家,可以調(diào)游戲級別、以及游戲速度,使得玩家能夠充分的發(fā)揮競技游戲的特色, 可以不斷的挑戰(zhàn)自我,挑戰(zhàn)極限。3.1游戲設(shè)計(jì)中的不足之處但是由于課程設(shè)計(jì)時(shí)間較短,所以該游戲還有許多不盡如人意的地方,比如方塊類型太 少,退出游戲不能存儲進(jìn)度等多方而問題。這些都有待進(jìn)一步改善,我們在游戲中還可以更 換背景音樂,以適合不

20、同的玩家,在每通過一關(guān)可以給玩家播放一段flash,吸引玩家去挑 戰(zhàn)極限,不斷提高玩家的興趣,相信在以后的制作過程中我們將給大家?guī)硪粋€更新功能更 全面的游戲。3.2 VB與C語言之間的不同之處我們這個小游戲也可以用C語言來實(shí)現(xiàn),在程序的編程上沒有VB語言方便實(shí)用,C語 言和VB語言之間存在很多的共同點(diǎn),雖然語法方而有點(diǎn)差異,但是在編程思路上完全一樣, VB能夠?qū)崿F(xiàn)很多C#不能做到的功能,如When語句、Optional參數(shù)、局部Static變量、對 象實(shí)例訪問靜態(tài)方法、Handles綁左事件、On Error處理異常、Object直接后期綁定等等。 VB和C#語言,編譯出來的是同樣的CIL,

21、但為什么VB支持很多有趣的特性呢。我們一起來 探究一下。3. 2.1局部靜態(tài)變呈VB支持用Static關(guān)鍵字聲明局部變量,這樣在過程結(jié)朿的時(shí)候可以保持變量的數(shù)值:Public Sub Testi 0Static i As Integeri += 1 *實(shí)現(xiàn)一個過程調(diào)用計(jì)數(shù)器End Sub我們實(shí)現(xiàn)了一個簡單的過程計(jì)數(shù)器。每調(diào)用一次Test,計(jì)數(shù)器的數(shù)值就增加1。其實(shí)還 有很多情況我們希望保持變量的數(shù)值。而C#的static是不能用在過程內(nèi)部的。因此要實(shí)現(xiàn) 過程計(jì)數(shù)器,我們必須聲明一個類級別的變量。這樣做明顯不如VB好。因?yàn)闊o法防止苴他 過程修改計(jì)數(shù)器變量。這就和對象封裝一個道理,本來應(yīng)該是一個方

22、法的局部變量,現(xiàn)在我 要被迫把它獨(dú)立岀來,顯然是不好的設(shè)計(jì)。那么VB是怎么生成局部靜態(tài)變量的呢?將上述 代碼返匯編,我們可以淸楚地看到在VB生成的CIL中,i不是作為局部變雖:,而是作為類 的 Field 出現(xiàn)的:.field private specialname int32 $STATIC$TestlS2001$i也就是說,i被改名作為一個類的字段,但被冠以specialnameo在代碼中試圖訪問 SSTATIC$Testl$2001$i是不可能的,因?yàn)樗皇且粋€有效的標(biāo)識符。但是在IL中,將這個 變量加一的代碼卻與一般的類字段完全一樣,是通過ldfld加載的。我覺得這個方法十分聰 明,把

23、靜態(tài)變量變成生命周期一樣的類字段,但是又由編譯器來控制訪問的權(quán)限,讓它成為 一個局部變量。同時(shí)也解釋了 VB為什么要用兩個不同的關(guān)鍵字來聲明靜態(tài)變量一一Static 和Shared。由于局部靜態(tài)變量的實(shí)質(zhì)是類的字段,所以它和貞正的局部變量還是有所不同 的。比如在多線程條件下,對局部靜態(tài)變量的訪問就和訪問字段相同。3. 2. 2 Handles 和 WithEventsVB除了可以用C#那樣的方法來處理事件響應(yīng)以外,還有從VB5繼承下來的獨(dú)特的事件 處理方式WithEventSo我喜歡稱這種事件處理方式為靜態(tài)的事件處理,書寫響應(yīng)事件的方法時(shí)就已經(jīng)決龍?jiān)摲?法響應(yīng)的是哪一個事件,而C#則是在代碼中

24、綁左事件的。VB中WithEvents靜態(tài)方法是非常 有用的,它可以顯著增強(qiáng)代碼可讀性,同時(shí)也讓VB. net中的事件處理非常方便,不像C#那 樣離開了窗體設(shè)計(jì)器就必須手工綁定事件。3. 2. 3類型轉(zhuǎn)換運(yùn)算符在Visual Basic 2005中將加入一個新的運(yùn)算符TryCast,相當(dāng)于C#的as運(yùn)算符。 我一直希望VB有這樣一個運(yùn)算符。VB目前的類型轉(zhuǎn)換運(yùn)算符主要有CType和Mr ectCast。 他們的用法幾乎一樣。我詳細(xì)比較了一下這兩個運(yùn)算符,得出以下結(jié)論:1在轉(zhuǎn)換成引用類型時(shí),兩者沒有什么區(qū)別,都是直接調(diào)用castclass指令,除非重載 了類型轉(zhuǎn)換運(yùn)算符CType« D

25、irectCast運(yùn)算符是不能重載的。2. 轉(zhuǎn)換成值類型時(shí),CType會調(diào)用VB指泄的類型轉(zhuǎn)換函數(shù)(如果有的話),比如將String 轉(zhuǎn)換為Int32時(shí),就會自動調(diào)用。3. 2. 4默認(rèn)屬性和屬性參數(shù)在原先的VB6里,有一項(xiàng)奇特的功能一一默認(rèn)屬性。在VB6中,對象的名稱可以直接表 示該對象的默認(rèn)屬性。3. 2. 5可選參數(shù)和按名傳遞VB從4.0開始支持“可選參數(shù)”這一特性。就是說,函數(shù)或子程序的參數(shù)有些是可選 的,調(diào)用的時(shí)候可以不輸入。其實(shí)VB從1.0開始就有一些函數(shù)帶有可選參數(shù),只不過到了 4.0才讓用戶自己開發(fā)這樣的過程。在VB4里,可選參數(shù)可以不帶默認(rèn)值,而在VB里,如 果使用可選參數(shù),

26、則必須帶有默認(rèn)值。在調(diào)用的時(shí)候,VB若發(fā)現(xiàn)參數(shù)被省略,則自動讀 取.param部分的默認(rèn)值,并顯式傳遞給過程。這一部分完全由編譯器處理,而且沒有任何 性能損失,和手工傳遞所有參數(shù)是完全一樣的。至于按塔傳遞,VB會自動調(diào)整參數(shù)的順序, 其結(jié)果與傳統(tǒng)方式的傳遞也沒有任何的不同。這說明我們可以放心地使用這項(xiàng)便利。而且?guī)?有可選參數(shù)的過程拿到C#中,頂多變成不可選參數(shù),也不會造成什么其他的麻煩。PS.很多C0H組件都使用了默認(rèn)參數(shù),而且有些過程的參數(shù)列表非常長,在VB里可以輕 松地處理它們,而在C#中經(jīng)常讓開發(fā)者傳參數(shù)傳到吐血。致謝在本次課程設(shè)計(jì)中,我從指導(dǎo)老師化希耀和張兵身上學(xué)到了很多東四。老師認(rèn)真

27、負(fù)責(zé)的 工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平都使我收益匪淺。他無論在理論上還是在實(shí)踐 中,都給與我很大的幫助,使我得到不少的提髙這對于我以后的工作和學(xué)習(xí)都有一種巨大的 幫助,感謝他耐心的輔導(dǎo)。另外,在游戲開發(fā)過程中許多同學(xué)也給于我們很大的幫助,幫助解決了不少的難點(diǎn),使 得游戲能及時(shí)開發(fā)完成,在此謝謝各位對此次設(shè)計(jì)的幫助。參考文獻(xiàn):龔祁曾.陸慰民楊志強(qiáng)Vsul Basic程序設(shè)計(jì)教程高等教育出版社岀版。劉新民,蔡瓊,白糠生.Vsual Basic 60程序設(shè)計(jì)清華大學(xué)出版社岀版。3唐凱軍,湯恵莉.VB6編程80例上手.山東電子音像出版社。4盧毅.Vsual Basic實(shí)例教程科學(xué)出版社出版。

28、5趙欣勝.亢慧姐.劉晟宏.Vsual Basic經(jīng)典范例50講科學(xué)出版社出版。附件:Private Sub hidefang (a As Integer)Select Case aCase 0cmdfang(n(0)Visible = False cmdfang(n(l)Visible = False cmdfang(n(2)Vis讓le = False cmdfang(n(3)Vis讓le = FalseCase 1cmdfangnext(m(0)Visible = False cmdfangnext(m(1)Visible = False cmdfangnext(m(2)Visible =

29、 False cmdfangnext(m(3)Visible = False End SelectEnd SubPrivate Sub showfang(a As Integer)Select Case aCase 0cmdfang(n(0)Visible = True cmdfang(n(l)Vis讓le = True cmdfang(n(2)Visible = True cmdfang(n(3)Vis讓le = TrueCase 1cmdfangnext(m(0)Visible = True cmdfangnext(m(l)Visible = True cmdfangnext(m(2)Vi

30、sible = True cmdfangnext(m(3)Visible = True End SelectEnd SubPrivate Sub clearline 0For i = 190 To 10 Step TO'左義使方塊不可見的過程'a=0使游戲區(qū)方塊不可見使預(yù)覽區(qū)方塊不可見'立義使方塊可見的過程'a = 0使游戲區(qū)方塊可見、=1使預(yù)覽區(qū)方塊不可見'龍義消除整行的過程If cmdfang(i)Visible = True And _ cmdfang(i + 1)Vis讓le = True And . cmdfang(i + 2). Visibl

31、e = True And cmdfang(i + 3). Visible = True And cmdfang(i + 4)Visible = True And cmdfang(i + 5)Visible = True And cmdfang(i + 6)Visible = True And cmdfang(i + 7)Vis讓le = True And cmdfang(i + 8)Vis讓le = True And cmdfang(i + 9)Visible = True Then For j = i + 4 To i Step -1t = 1cmdfang(j)Visible = Fals

32、ecmdfang(2 * i + 9 - j)Vis讓le = False For k = 1 To 4000DoEventsNextt = 0Next linenum For j =linenum + 1i - 1 To 0 Step -1If cmdfang(j)Vis讓le = True Then cmdfang(j)Vis讓le = False cmdfang(j + 10)VisibleEnd IfNextclearlineIf=True'為了實(shí)現(xiàn)連消數(shù)行,這里使用遞歸調(diào)用EndNextEnd SubPrivate Function downable0 As Boolean

33、If n(0) < 190 And n(l) < 190 And n(2) <If cmdfang(n(0) + 10). Visible = False cmdfang (n(l) + 10)V is 讓 le = False cmdfang(n(2) + 10). Visible = False cmdfang(n(3) + 10). Visible = False downable = TrueElse: downable = False'自立義函數(shù),確宦方塊是否能下降190 And n(3) < 190 ThenAnd _And _And _ThenEn

34、d IfElse: downable 二 FalseEnd IfEnd FunctionPrivate Function leftable 0 As BooleanIf cmdfang(n(0) cmdfang(n(l) cmdfang(n(2) cmdfang(n(3)-1).Visible = False And _-1).Visible = False And _- 1).Visible = False And _- 1). Visible = False Then'自上義函數(shù),確左方塊是否能左移If n(0) Mod 10 <> 0 And n(l) Mod 10

35、<> 0 And n(2) Mod 10 <> 0 And n(3) Mod 10 OOThenleftable = TrueElse: leftable = FalseEnd IfElse: leftable = FalseEnd IfEnd FunctionPrivate Function rightable() As Boolean'自定義函數(shù),確左方塊是否能右移If n(0) Mod 10 <> 9 And n(l) Mod 10 <> 9 And n(2) Mod 10 <> 9 And n(3) Mod 10<

36、;> 9ThenIf cmdfang(n(0) cmdfang(n(l) cmdfang(n (2) cmdfang(n(3) rightable = Else: rightable+ l).Vis ible = + l).Vis ible = + l).Vis讓le 二 + l).Vis讓le 二 True=FalseFalseFalseFalseFalseAnd .And .And . ThenEnd IfElse: rightable = FalseEnd IfEnd Function目錄前言工程概況11項(xiàng)目名稱11.2設(shè)計(jì)平臺11.3程序設(shè)計(jì)思想1L4運(yùn)用的控件和主要對象21.5

37、主要實(shí)現(xiàn)的功能216開發(fā)人員與分工2正文321游戲設(shè)計(jì)的具體實(shí)現(xiàn)2.2.2.2.2.2.©34.5 51. 1游戲界面的設(shè)計(jì)和背景音樂及特效的實(shí)現(xiàn).1. 2俄羅斯方塊的造型1. 3俄羅斯方塊的旋轉(zhuǎn).14如何實(shí)現(xiàn)方塊的運(yùn)動和自動消除滿行的方塊./. 5游戲速度和游戲級別自由選擇.16游戲得分的計(jì)算和游戲菜單的編輯.2.2游戲功能的介紹有關(guān)說明3.1游戲設(shè)計(jì)中的不足之處63.2 VB與C語言之間的不同之處321 態(tài)73. 2.2 Handles 和 Wi thEvents.73. 2.3類型轉(zhuǎn)換運(yùn)算符.73. 2.4默認(rèn)屬性和屬性參數(shù).83. 2.5可選參數(shù)和按名傳遞.8致謝8參考文獻(xiàn):

38、8附件:9VB游戲設(shè)計(jì)制作制作俄羅斯方塊的設(shè)計(jì)與實(shí)現(xiàn)時(shí)間:2010-10-13 23:49來源:未知 作者:admin我要投稿目 錄1.課程大作業(yè)目的 11.1課程大作業(yè)設(shè)計(jì)的目的 11.2 VB在實(shí)際生活的應(yīng)用 1 2.課程大作業(yè)題目描倉QQ番司客服咨詢,三七畢業(yè)設(shè)汁論文網(wǎng)竭誠為您服務(wù),本站永久域務(wù)目 錄1 課程大作業(yè)目的11.1課程大作業(yè)設(shè)計(jì)的目的11.2 VB在實(shí)際生活的應(yīng)用12 課程大作業(yè)題目描述和要求12俄羅斯方塊的題口描述12.2俄羅斯方塊設(shè)計(jì)思想13 課程大作業(yè)報(bào)告內(nèi)容23.1界而設(shè)計(jì)33.2俄羅斯方塊的功能實(shí)現(xiàn)34 總結(jié)1課程大作業(yè)目的1.2 VB課程大作業(yè)設(shè)計(jì)的目的本課程設(shè)汁

39、以程序設(shè)訃簡明教程課程為基礎(chǔ),目的是進(jìn)一步培養(yǎng)學(xué)生綜合應(yīng)用VB的各種編程知識和技巧 進(jìn)行程序設(shè)訃的能力。通過課程設(shè)計(jì),學(xué)生能達(dá)到具備設(shè)汁功能較為復(fù)雜的Windows應(yīng)用程序的能力。同時(shí), 通過課程設(shè)計(jì),培養(yǎng)學(xué)生自主學(xué)習(xí)和獨(dú)立創(chuàng)新的精神,是人才培養(yǎng)體系中極為重要的一環(huán)1.2 VB在實(shí)際生活中的應(yīng)用Visual Basic(簡稱VB)程序設(shè)汁語言的基本概念和語法結(jié)構(gòu)以及常用控件的使用,并通過大量的例子介紹VB程 序設(shè)計(jì)的方法和技巧,內(nèi)容包括:VB程序設(shè)計(jì)基礎(chǔ)、對象及VB應(yīng)用程序的建立、數(shù)據(jù)的輸入與輸岀、基本的控 制結(jié)構(gòu)、數(shù)組和過程的程序設(shè)計(jì)、常用控件的使用、界而設(shè)計(jì)、圖形操作、文件、數(shù)據(jù)庫技術(shù)等.

40、在這些內(nèi)容的 講解中,堅(jiān)持語言為程序設(shè)計(jì)服務(wù)的原則,注重實(shí)用性.在教學(xué)的安排上,采用由淺到深、循序漸進(jìn)的結(jié)構(gòu),做到通俗易懂,既有針對初學(xué)者的基本知識的介紹,也有針對 已經(jīng)掌握VB程序基本設(shè)計(jì)方法的學(xué)生對高層次內(nèi)容的要求,將程序設(shè)計(jì)語言、可視化的面向?qū)ο缶幊碳夹g(shù)、上 機(jī)訓(xùn)練有機(jī)地融為一體突出VB的基本語法、編程方法的訓(xùn)練,讓學(xué)生學(xué)會分析問題并快速掌握而向?qū)ο蟮某?序、界而設(shè)汁、數(shù)據(jù)庫技術(shù)的設(shè)汁技巧,培養(yǎng)學(xué)生的動手能力和開發(fā)應(yīng)用程序的能力2課程大作業(yè)題目描述和要求2.1俄羅斯方塊的題目的描述1.運(yùn)行游戲時(shí)界而隨機(jī)的產(chǎn)生不同形狀的方塊,游戲者通過自己的操作使方塊進(jìn)行介理的堆積如果每層達(dá)到 飽合狀態(tài)的

41、時(shí)候會自動消除然后游戲有規(guī)則的進(jìn)行加分分?jǐn)?shù)達(dá)到一左的階段游戲的級別也會越來越高然后 方塊下降的速度也會隨之慢慢加快.以迎合游戲者的挑戰(zhàn),達(dá)到最加有趣的游戲!2.2俄羅斯方塊的設(shè)計(jì)思想游戲是用來給大家娛樂的,所以要能在使用的過程中給大家?guī)砜鞓罚蠹业钠?,所以我們在游戲中?加了漂亮的場景和動聽的音樂,設(shè)程了過關(guān)升級的功能,激發(fā)大家的娛樂激情。從游戲的基本玩法岀發(fā),主要就是俄羅斯方塊的形狀和旋轉(zhuǎn),我們在設(shè)計(jì)中在一個圖片框中構(gòu)造了一個4*4的 網(wǎng)狀小塊,由這些小塊組合成新的形狀,每四個小塊連接在一起就可以構(gòu)造出一種造型,因此我們總共設(shè)訃了 7中造型,每種造型又可以通過旋轉(zhuǎn)而變化出2到4種形狀

42、,利用隨機(jī)函數(shù)在一個欲覽窗體中提前展示形狀供 用戶參考,然后將展示的形狀復(fù)制到游戲窗體中進(jìn)行擺放,在游戲窗體中用戶就可以使用鍵盤的方向鍵來控制 方塊的運(yùn)動,然后利用遞歸語句對每一行進(jìn)行判斷,如果有某行的方塊是滿的,則消除這行的方塊,并且使上 而的方塊自由下落,其中,方塊向下的速度是有時(shí)鐘控件控制的,在游戲中,用戶也可以使用向下鍵加快下落 速度,左義一個變量,對消除的函數(shù)進(jìn)行記錄,最后就可以得岀用戶的分?jǐn)?shù),用if語句對分?jǐn)?shù)判斷,達(dá)到一 定的積分就可以升級到下一個檔次。俄羅斯方塊游戲設(shè)計(jì)的主要步驟為以下幾個方而:(1)游戲界面的設(shè)計(jì)。(2)俄羅斯方塊的造型。(3)俄羅斯方塊的旋轉(zhuǎn)。(4)俄羅斯方塊

43、的運(yùn)動情況(包括向左,向右和向下)。(5)俄羅斯方塊的自動消行功能。(6)游戲級別的自由選擇。(7)游戲速度的自由選擇。(8)游戲得分的計(jì)算。(9)游戲菜單選項(xiàng)的設(shè)計(jì)及功能實(shí)現(xiàn)。3 課程大作業(yè)報(bào)告內(nèi)容3.1俄羅斯方塊的界面設(shè)計(jì)界面是以自己的照片為背景然后一個游戲方框和一個游戲輔助方框,再加上一些游戲所需的開始、暫停、退岀等 按鈕3.2俄羅斯方塊的功能的實(shí)現(xiàn)1) Enabled= 0 'FalseHeight= 480Left = 4680Mouseicon = ”方塊.frxH:BF74MousePointer = 99 'Custom Picture = ”方塊.frxH:C

44、3B6 ToolTipText = ”續(xù)繼 CTRL+J” Top= 2475Visible= 0 'FalseWidth= 480End以上的代碼來實(shí)現(xiàn)'繼續(xù)”功能2) Begin VB.Image Image9Height = 480Left = 5880Mouseicon MousePointer Picture=ToolTipText Top=Width =”方塊.frxM:B960=99 'Custom“方塊.frx,r:BC6A=”退出 CTRL+X”2475480以上的程序代碼實(shí)現(xiàn)'退出”功能3) Private Sub Image3_Click(

45、)OPE.ClickEnd Sub以上的程序代碼實(shí)現(xiàn)"開始"功能4) Private Sub Image8_Click() Gotog_ClickEnd Sub以上的程序代碼實(shí)現(xiàn)“暫停/繼續(xù)“功能5) Private Sub Image7_Click() ENDG.ClickEnd Sub以上的程序代碼實(shí)現(xiàn)“停止“功能6) Private Sub Image9_Click()Exite_ClickEnd Sub以上的程序代碼實(shí)現(xiàn)“退出"功能7)Private Sub Image5_Click()IfjB<40 ThenjB=jB + lEnd IfIfjB > 1 ThenImage6.EnabIcd = TnieImage6. Visible = Tnie 減.Enabled = True 減.Visible = TrueElseImage6.Enabled = FalseImage6. Visi

溫馨提示

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

最新文檔

評論

0/150

提交評論