




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)第 1 頁(yè)前前 言言visual basic 繼承了 basic 語(yǔ)言易學(xué)易用的特點(diǎn),特別適合于初學(xué)者學(xué)習(xí) windows 系統(tǒng)編程。隨著 21 世紀(jì)信息社會(huì)的到來(lái),計(jì)算機(jī)在人們的工作和生活中的深入,要求我們?cè)絹?lái)越多地與計(jì)算機(jī)打交道,為了使用戶(hù)在繁忙的日程工作中得到放松,于是出現(xiàn)了各種各樣的休閑軟件,如聊天工具,游戲等等。于是我們小組著手設(shè)計(jì)開(kāi)始一個(gè)這樣的游戲軟件。通過(guò)這學(xué)期來(lái) Visual Basic 的學(xué)習(xí),我初步掌握了 Visual Basic 語(yǔ)言的最基本的知識(shí),于是在化希耀張兵等老師的指導(dǎo)下動(dòng)手用 Visual Basic 編寫(xiě)俄羅斯方塊游戲。無(wú)可爭(zhēng)議,
2、 俄羅斯方塊是有史以來(lái)最偉大的游戲之一。它是永恒的娛樂(lè)經(jīng)典,但它實(shí)際上又和那些傳統(tǒng)的經(jīng)典娛樂(lè)方式不同,因?yàn)樗谋举|(zhì)是電子化的,所以它的確屬于現(xiàn)代產(chǎn)物。 俄羅斯方塊舉世聞名的游戲性,在該游戲新鮮出爐時(shí)就顯得非常直觀。某些與墜落的玩具碎片和它們的形狀有關(guān)的東西,使得哪怕新手也會(huì)很自然地企圖把它們排列起來(lái),并加以適當(dāng)組合,就好似俄羅斯方塊觸動(dòng)了我們某些內(nèi)在的感官,使得哪怕是我們當(dāng)中最雜亂無(wú)章的人也要把事情整理妥當(dāng)。 在曾經(jīng)發(fā)布過(guò)的所有游戲中, 俄羅斯方塊還被認(rèn)為是僅有的一個(gè)能夠真正吸引廣泛人群的作品。某些批評(píng)家也許會(huì)聲稱(chēng), 俄羅斯方塊要比過(guò)去二十年間出現(xiàn)的任何東西都要浪費(fèi)人們的時(shí)間。至于我們,則要欣
3、然提名它為 GameSpot 評(píng)選出的歷史上最偉大游戲之一。為了懷念經(jīng)典,也為了能夠給大多的計(jì)算機(jī)用戶(hù)在工作之余找到一個(gè)休閑、娛樂(lè)的一個(gè)方式,我們小組開(kāi)始著手用 VB 語(yǔ)言開(kāi)發(fā)一個(gè)經(jīng)典的俄羅斯方塊游戲。工程概況工程概況1.1 項(xiàng)目名稱(chēng)俄羅斯方塊游戲1.2 設(shè)計(jì)平臺(tái)VB 全稱(chēng) Visual Basic,它是以 Basic 語(yǔ)言作為其基本語(yǔ)言的一種可視化編程工具。Vb 是 microsoft 公司于 1991 年退出的 windows 應(yīng)用程序開(kāi)發(fā)工具 visual 意思是“可視化的” 。在它剛推出來(lái)時(shí),自身還存在一些缺陷,功能也相對(duì)少一些。但是經(jīng)過(guò)多年的開(kāi)發(fā)研究。最近 microsoft 公司又
4、推出了 VB6.0 版本VB6.0 運(yùn)行環(huán)境:硬件,要求 486 以上的處理器、16MB 以上內(nèi)存,50MB 以上的硬盤(pán),cd-rom 驅(qū)動(dòng)器,鼠標(biāo)。軟件:要求 windows 95 以上版本。1.3 程序設(shè)計(jì)思想游戲是用來(lái)給大家?jiàn)蕵?lè)的,所以要能在使用的過(guò)程中給大家?guī)?lái)快樂(lè),消除大家的疲勞,所以我們?cè)谟螒蛑刑砑恿似恋膱?chǎng)景和動(dòng)聽(tīng)的音樂(lè),設(shè)置了過(guò)關(guān)升級(jí)的功能,激發(fā)大家的娛樂(lè)激情。從游戲的基本玩法出發(fā),主要就是俄羅斯方塊的形狀和旋轉(zhuǎn),我們?cè)谠O(shè)計(jì)中在一個(gè)圖片框中構(gòu)造了一個(gè) 4*4 的網(wǎng)狀小塊,由這些小塊組合成新的形狀,每四個(gè)小塊連接在一起就可以構(gòu)造出一種造型,因此我們總共設(shè)計(jì)了 7 中造型,每種造型
5、又可以通過(guò)旋轉(zhuǎn)而變化出 2 到 4 種形狀,利用隨機(jī)函數(shù)在一個(gè)預(yù)覽窗體中提前展示形狀供用戶(hù)參考,然后將展示塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)第 2 頁(yè)的形狀復(fù)制到游戲窗體中進(jìn)行擺放,在游戲窗體中用戶(hù)就可以使用鍵盤(pán)的方向鍵來(lái)控制方塊的運(yùn)動(dòng),然后利用遞歸語(yǔ)句對(duì)每一行進(jìn)行判斷,如果有某行的方塊是滿(mǎn)的,則消除這行的方塊,并且使上面的方塊自由下落,其中,方塊向下的速度是有時(shí)鐘控件控制的,在游戲中,用戶(hù)也可以使用向下鍵加快下落速度,定義一個(gè)變量,對(duì)消除的函數(shù)進(jìn)行記錄,最后就可以得出用戶(hù)的分?jǐn)?shù),用 if 語(yǔ)句對(duì)分?jǐn)?shù)判斷,達(dá)到一定的積分就可以升級(jí)到下一個(gè)檔次。俄羅斯方塊游戲設(shè)計(jì)的主要步驟為以下 10 個(gè)方面:(1
6、)游戲界面的設(shè)計(jì)。(2)俄羅斯方塊的造型。(3)俄羅斯方塊的旋轉(zhuǎn)。(4)俄羅斯方塊的運(yùn)動(dòng)情況(包括向左,向右和向下) 。(5)俄羅斯方塊的自動(dòng)消行功能。(6)游戲級(jí)別的自由選擇。(7)游戲速度的自由選擇。(8)游戲得分的計(jì)算。(9)游戲菜單選項(xiàng)的設(shè)計(jì)及功能實(shí)現(xiàn)。(10)游戲的背景音樂(lè)。1.4 運(yùn)用的控件和主要對(duì)象我們?cè)谠O(shè)計(jì)過(guò)程中主要用到的控件有:command 控件,image 控件,picture 控件,label 控件,timer 控件,text 控件,windows media player 控件等等。1.5 主要實(shí)現(xiàn)的功能我們開(kāi)發(fā)的俄羅斯方塊游戲,主要實(shí)現(xiàn)了以下幾種功能:1.可以靈活控
7、制方塊在圖形框中運(yùn)動(dòng)。2.游戲過(guò)程中方塊可以自由旋轉(zhuǎn)。3.當(dāng)某一行的方塊排列滿(mǎn)時(shí),將自動(dòng)將這一行方塊消除,然后將上面所有方塊向下移動(dòng),可以支持連續(xù)消行。4.游戲前可以選擇游戲的速度和游戲的等級(jí),游戲速度既為方塊下落速度,游戲等級(jí)為初始游戲時(shí)在基層隨機(jī)生成一定行數(shù)的無(wú)規(guī)律方塊,生成的行數(shù)由你來(lái)選擇,每行至少產(chǎn)生 5 個(gè)以上的無(wú)規(guī)律方塊,這樣增加了游戲難度,對(duì)于游戲高手來(lái)說(shuō),無(wú)疑不是一個(gè)新的挑戰(zhàn)。5.游戲的得分支持積分,并且按照公式:得分 = 原來(lái)分?jǐn)?shù)+ 100 * (2 同時(shí)消除的行數(shù)-1) 這樣,你同一時(shí)間消除的行數(shù)越多,你的得分也就越高,當(dāng)游戲積分到了一定時(shí)可以自動(dòng)升級(jí),這個(gè)升級(jí)指速度升級(jí)。
8、 6.游戲中提供了一個(gè)漂亮的場(chǎng)景和動(dòng)聽(tīng)的音樂(lè),給你帶來(lái)無(wú)限激情。1.6 開(kāi)發(fā)人員與分工組長(zhǎng)李虎同學(xué)所做工作如下: (1)俄羅斯方塊的旋轉(zhuǎn)。 (2)俄羅斯方塊的運(yùn)動(dòng)情況。 (3)俄羅斯方塊的自動(dòng)消行功能。 (4)游戲得分的計(jì)算。塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)第 3 頁(yè) (5)游戲菜單選項(xiàng)的設(shè)計(jì)及功能實(shí)現(xiàn)。副組長(zhǎng)王志偉同學(xué)所做工作如下: (1)游戲界面的設(shè)計(jì)。 (2)俄羅斯方塊的造型。 (3)游戲級(jí)別的自由選擇。 (4)游戲速度的自由選擇。 (5)游戲的背景音樂(lè)。 正文正文2.1 游戲設(shè)計(jì)的具體實(shí)現(xiàn)在我們兩個(gè)人共同努力下,此次設(shè)計(jì),終于能夠圓滿(mǎn)完成。由于時(shí)間的緊促,在設(shè)計(jì)中,也許會(huì)有一些考慮不周之
9、處,但其功能已經(jīng)能夠滿(mǎn)足大多用戶(hù)的需求,相信假以時(shí)日,一定能做出一個(gè)更經(jīng)典,更完美的俄羅斯方塊游戲,下面我們將對(duì)每一步的具體如何實(shí)現(xiàn)展示給大家。2.1.1 游戲界面的設(shè)計(jì)和背景音樂(lè)及特效的實(shí)現(xiàn)俄羅斯方塊游戲主要由兩個(gè)界面構(gòu)成,登陸界面和開(kāi)始游戲界面。游戲的背景音樂(lè)是由一段代碼調(diào)用系統(tǒng)播放器 Windows Player 播放背景音樂(lè),由于本次設(shè)計(jì)主要是針對(duì)游戲如何設(shè)計(jì)的,所以在這里就不對(duì)播放背景音樂(lè)的功能做介紹了。2.1.2 俄羅斯方塊的造型相信朋友們都玩過(guò)俄羅斯方塊,對(duì)這個(gè)游戲的玩法和方塊形狀都比較熟悉。我們這個(gè)游戲只選擇了最基本的 7 中造型,包括長(zhǎng)條型,正方型,正 S 型,反 S 型,正
10、 7 型,反 7型,T 型。如果需要我們可以添加更多的造型。將游戲界面的游戲區(qū)圖片框分割成 10*20的小塊,每個(gè)小塊放置一個(gè) command 控件,預(yù)覽區(qū)圖片框按同樣比例分割成 4*4 的小塊,同樣有 command 控件構(gòu)成,我們可以把預(yù)覽區(qū)圖片框看作是從游戲區(qū)圖片框中選取的一個(gè)部分,游戲區(qū)的小方塊編號(hào)和預(yù)覽區(qū)編號(hào)如下圖: 012345678990919293949596979899 游戲區(qū)編號(hào) 預(yù)覽區(qū)編號(hào) 利用 Select 將方塊的 7 中造型列出,比如長(zhǎng)條型的設(shè)計(jì),在欲覽區(qū)中分別有 和 5 四個(gè)方塊構(gòu)成兩中形態(tài),用數(shù)組為: m(0) = 3: m(1)
11、 = 4: m(2) = 5: m(3) = 6: situation2 = 0m(0) = 5: m(1) = 15: m(2) = 25: m(3) = 35: situation2 = 1將它的形狀編號(hào)為 0 和 1,在后面方便調(diào)用,其他的方塊造型同樣的方法。2.1.3 俄羅斯方塊的旋轉(zhuǎn)俄羅斯方塊的旋轉(zhuǎn)主要將方塊的位置加以變換得到的,例如上述范例,長(zhǎng)條型有兩中樣式,根據(jù)小方塊的編號(hào)變動(dòng)來(lái)實(shí)現(xiàn)整個(gè)造型的旋轉(zhuǎn),比如:If n(0) - 18 = 2 And n(3) + 9 = 0.5 Then cmdfang(j).Visible = True Next Next可以根據(jù)你選擇的難度系數(shù)在
12、底層的每一行隨機(jī)產(chǎn)生超過(guò)半數(shù)(即 5 個(gè)以上)以上的小方塊,這樣適合喜歡高難度的玩家。2.1.6 游戲得分的計(jì)算和游戲菜單的編輯游戲得分的計(jì)算主要是根據(jù)消除的行數(shù)來(lái)決定的,當(dāng)然每一次同時(shí)消除的行數(shù)不一樣,每一行的得分也不一樣,如果你每次消除的行數(shù)為 1,則最后得分是 100 分,如果同時(shí)消除 2 行,則最后得分是 300 分,同時(shí)消除 3 行,得分為 700 分,同時(shí)消除 4 行,得分為1500 分,這由公式:得分 = 原來(lái)分?jǐn)?shù)+ 100 * (2 同時(shí)消除的行數(shù)-1)。游戲的編輯,讀者可以參照下面的功能介紹。2.2 游戲功能的介紹文件 F-開(kāi)始 F1:開(kāi)始游戲。 繼續(xù) F2:繼續(xù)游戲。 暫停
13、 F3:暫時(shí)停止游戲,點(diǎn)擊繼續(xù)的時(shí)候可以繼續(xù)游戲。 退出 Ctrl+Q:退出游戲。設(shè)置-選擇游戲級(jí)別。 選擇游戲速度??简?yàn)-顯示 F5:顯示欲覽區(qū)方塊。 隱藏 F6:隱藏欲覽區(qū)方塊。幫助-操作提示以及版本信息和作者資料。塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)第 6 頁(yè)用戶(hù)界面具體如圖: 圖登陸界面 圖游戲界面 圖菜單編輯界面 圖游戲幫助界面 有關(guān)說(shuō)明有關(guān)說(shuō)明經(jīng)過(guò)兩個(gè)多星期的設(shè)計(jì)和開(kāi)發(fā),俄羅斯方塊游戲已經(jīng)成功。其功能基本符合用戶(hù)需求,能夠完成游戲的控制,方塊的變換以及消層等功能。并提供游戲設(shè)置,對(duì)于一些技術(shù)性比較過(guò)硬的玩家,可以調(diào)游戲級(jí)別、以及游戲速度,使得玩家能夠充分的發(fā)揮競(jìng)技游戲的特色,可以不斷的挑
14、戰(zhàn)自我,挑戰(zhàn)極限。3.1 游戲設(shè)計(jì)中的不足之處但是由于課程設(shè)計(jì)時(shí)間較短,所以該游戲還有許多不盡如人意的地方,比如方塊類(lèi)型太少,退出游戲不能存儲(chǔ)進(jìn)度等多方面問(wèn)題。這些都有待進(jìn)一步改善,我們?cè)谟螒蛑羞€可塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)第 7 頁(yè)以更換背景音樂(lè),以適合不同的玩家,在每通過(guò)一關(guān)可以給玩家播放一段 flash,吸引玩家去挑戰(zhàn)極限,不斷提高玩家的興趣,相信在以后的制作過(guò)程中我們將給大家?guī)?lái)一個(gè)更新功能更全面的游戲。3.2 VB 與 C 語(yǔ)言之間的不同之處我們這個(gè)小游戲也可以用 C 語(yǔ)言來(lái)實(shí)現(xiàn),在程序的編程上沒(méi)有 VB 語(yǔ)言方便實(shí)用,C 語(yǔ)言和 VB 語(yǔ)言之間存在很多的共同點(diǎn),雖然語(yǔ)法方面有點(diǎn)
15、差異,但是在編程思路上完全一樣,VB 能夠?qū)崿F(xiàn)很多 C#不能做到的功能,如 When 語(yǔ)句、Optional 參數(shù)、局部 Static 變量、對(duì)象實(shí)例訪問(wèn)靜態(tài)方法、Handles 綁定事件、On Error 處理異常、Object 直接后期綁定等等。VB 和 C#語(yǔ)言,編譯出來(lái)的是同樣的 CIL,但為什么 VB 支持很多有趣的特性呢。我們一起來(lái)探究一下。3.2.1 局部靜態(tài)變量VB 支持用 Static 關(guān)鍵字聲明局部變量,這樣在過(guò)程結(jié)束的時(shí)候可以保持變量的數(shù)值:Public Sub Test1() StaticStatic i i AsAs IntegerInteger i += 1 實(shí)現(xiàn)一
16、個(gè)過(guò)程調(diào)用計(jì)數(shù)器End Sub我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的過(guò)程計(jì)數(shù)器。每調(diào)用一次 Test,計(jì)數(shù)器的數(shù)值就增加 1。其實(shí)還有很多情況我們希望保持變量的數(shù)值。而 C#的 static 是不能用在過(guò)程內(nèi)部的。因此要實(shí)現(xiàn)過(guò)程計(jì)數(shù)器,我們必須聲明一個(gè)類(lèi)級(jí)別的變量。這樣做明顯不如 VB 好。因?yàn)闊o(wú)法防止其他過(guò)程修改計(jì)數(shù)器變量。這就和對(duì)象封裝一個(gè)道理,本來(lái)應(yīng)該是一個(gè)方法的局部變量,現(xiàn)在我要被迫把它獨(dú)立出來(lái),顯然是不好的設(shè)計(jì)。那么 VB 是怎么生成局部靜態(tài)變量的呢?將上述代碼返匯編,我們可以清楚地看到在 VB 生成的 CIL 中,i 不是作為局部變量,而是作為類(lèi)的 Field 出現(xiàn)的: .field private
17、 specialname int32 $STATIC$Test1$2001$i也就是說(shuō),i 被改名作為一個(gè)類(lèi)的字段,但被冠以 specialname。在代碼中試圖訪問(wèn)$STATIC$Test1$2001$i 是不可能的,因?yàn)樗皇且粋€(gè)有效的標(biāo)識(shí)符。但是在 IL 中,將這個(gè)變量加一的代碼卻與一般的類(lèi)字段完全一樣,是通過(guò) ldfld 加載的。我覺(jué)得這個(gè)方法十分聰明,把靜態(tài)變量變成生命周期一樣的類(lèi)字段,但是又由編譯器來(lái)控制訪問(wèn)的權(quán)限,讓它成為一個(gè)局部變量。同時(shí)也解釋了 VB 為什么要用兩個(gè)不同的關(guān)鍵字來(lái)聲明靜態(tài)變量Static 和 Shared。由于局部靜態(tài)變量的實(shí)質(zhì)是類(lèi)的字段,所以它和真正的局部變
18、量還是有所不同的。比如在多線程條件下,對(duì)局部靜態(tài)變量的訪問(wèn)就和訪問(wèn)字段相同。3.2.2 Handles 和 WithEventsVB 除了可以用 C#那樣的方法來(lái)處理事件響應(yīng)以外,還有從 VB5 繼承下來(lái)的獨(dú)特的事件處理方式WithEvents。我喜歡稱(chēng)這種事件處理方式為靜態(tài)的事件處理,書(shū)寫(xiě)響應(yīng)事件的方法時(shí)就已經(jīng)決定該方法響應(yīng)的是哪一個(gè)事件,而 C#則是在代碼中綁定事件的。VB 中 WithEvents 靜態(tài)方法是非常有用的,它可以顯著增強(qiáng)代碼可讀性,同時(shí)也讓 VB.net 中的事件處理非常方便,不像C#那樣離開(kāi)了窗體設(shè)計(jì)器就必須手工綁定事件。3.2.3 類(lèi)型轉(zhuǎn)換運(yùn)算符在 Visual Bas
19、ic 2005 中將加入一個(gè)新的運(yùn)算符TryCast,相當(dāng)于 C#的 as 運(yùn)算符。我一直希望 VB 有這樣一個(gè)運(yùn)算符。VB 目前的類(lèi)型轉(zhuǎn)換運(yùn)算符主要有 CType 和DirectCast。他們的用法幾乎一樣。我詳細(xì)比較了一下這兩個(gè)運(yùn)算符,得出以下結(jié)論:塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)第 8 頁(yè)1.在轉(zhuǎn)換成引用類(lèi)型時(shí),兩者沒(méi)有什么區(qū)別,都是直接調(diào)用 castclass 指令,除非重載了類(lèi)型轉(zhuǎn)換運(yùn)算符 CType。DirectCast 運(yùn)算符是不能重載的。2.轉(zhuǎn)換成值類(lèi)型時(shí),CType 會(huì)調(diào)用 VB 指定的類(lèi)型轉(zhuǎn)換函數(shù)(如果有的話) ,比如將String 轉(zhuǎn)換為 Int32 時(shí),就會(huì)自動(dòng)調(diào)用。3.
20、2.4 默認(rèn)屬性和屬性參數(shù)在原先的 VB6 里,有一項(xiàng)奇特的功能默認(rèn)屬性。在 VB6 中,對(duì)象的名稱(chēng)可以直接表示該對(duì)象的默認(rèn)屬性。3.2.5 可選參數(shù)和按名傳遞VB 從 4.0 開(kāi)始支持“可選參數(shù)”這一特性。就是說(shuō),函數(shù)或子程序的參數(shù)有些是可選的,調(diào)用的時(shí)候可以不輸入。其實(shí) VB 從 1.0 開(kāi)始就有一些函數(shù)帶有可選參數(shù),只不過(guò)到了4.0 才讓用戶(hù)自己開(kāi)發(fā)這樣的過(guò)程。在 VB4 里,可選參數(shù)可以不帶默認(rèn)值,而在 VB 里,如果使用可選參數(shù),則必須帶有默認(rèn)值。在調(diào)用的時(shí)候,VB 若發(fā)現(xiàn)參數(shù)被省略,則自動(dòng)讀取.param 部分的默認(rèn)值,并顯式傳遞給過(guò)程。這一部分完全由編譯器處理,而且沒(méi)有任何性能損
21、失,和手工傳遞所有參數(shù)是完全一樣的。至于按名傳遞,VB 會(huì)自動(dòng)調(diào)整參數(shù)的順序,其結(jié)果與傳統(tǒng)方式的傳遞也沒(méi)有任何的不同。這說(shuō)明我們可以放心地使用這項(xiàng)便利。而且?guī)в锌蛇x參數(shù)的過(guò)程拿到 C#中,頂多變成不可選參數(shù),也不會(huì)造成什么其他的麻煩。 PS.很多 COM 組件都使用了默認(rèn)參數(shù),而且有些過(guò)程的參數(shù)列表非常長(zhǎng),在 VB 里可以輕松地處理它們,而在 C#中經(jīng)常讓開(kāi)發(fā)者傳參數(shù)傳到吐血。致謝致謝在本次課程設(shè)計(jì)中,我從指導(dǎo)老師化希耀和張兵身上學(xué)到了很多東西。老師認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平都使我收益匪淺。他無(wú)論在理論上還是在實(shí)踐中,都給與我很大的幫助,使我得到不少的提高這對(duì)于我以后的
22、工作和學(xué)習(xí)都有一種巨大的幫助,感謝他耐心的輔導(dǎo)。另外,在游戲開(kāi)發(fā)過(guò)程中許多同學(xué)也給于我們很大的幫助,幫助解決了不少的難點(diǎn),使得游戲能及時(shí)開(kāi)發(fā)完成,在此謝謝各位對(duì)此次設(shè)計(jì)的幫助。參考文獻(xiàn)參考文獻(xiàn):1龔沛曾,陸慰民,楊志強(qiáng).Vsual Basic 程序設(shè)計(jì)教程.高等教育出版社出版。2劉新民,蔡瓊,白糠生.Vsual Basic 6.0 程序設(shè)計(jì).清華大學(xué)出版社出版。3唐凱軍,湯惠莉.VB6 編程 80 例上手.山東電子音像出版社。4盧毅.Vsual Basic 實(shí)例教程.科學(xué)出版社出版。5趙欣勝,亢慧娟,劉晟宏.Vsual Basic 經(jīng)典范例 50 講.科學(xué)出版社出版。塔里木大學(xué)信息工程學(xué)院課程
23、設(shè)計(jì)第 9 頁(yè)附件:附件:Private Sub hidefang(a As Integer) 定義使方塊不可見(jiàn)的過(guò)程 Select Case a Case 0 a0 使游戲區(qū)方塊不可見(jiàn) cmdfang(n(0).Visible = False cmdfang(n(1).Visible = False cmdfang(n(2).Visible = False cmdfang(n(3).Visible = False Case 1 a1 使預(yù)覽區(qū)方塊不可見(jiàn) cmdfangnext(m(0).Visible = False cmdfangnext(m(1).Visible = False cmdf
24、angnext(m(2).Visible = False cmdfangnext(m(3).Visible = False End SelectEnd SubPrivate Sub showfang(a As Integer) 定義使方塊可見(jiàn)的過(guò)程 Select Case a Case 0 a0 使游戲區(qū)方塊可見(jiàn) cmdfang(n(0).Visible = True cmdfang(n(1).Visible = True cmdfang(n(2).Visible = True cmdfang(n(3).Visible = True Case 1 a1 使預(yù)覽區(qū)方塊不可見(jiàn) cmdfangnex
25、t(m(0).Visible = True cmdfangnext(m(1).Visible = True cmdfangnext(m(2).Visible = True cmdfangnext(m(3).Visible = True End SelectEnd SubPrivate Sub clearline() 定義消除整行的過(guò)程 For i = 190 To 10 Step -10 If cmdfang(i).Visible = True And _ cmdfang(i + 1).Visible = True And _ cmdfang(i + 2).Visible = True And
26、 _ 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).Visible = True And _ cmdfang(i + 8).Visible = True And _塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)第 10 頁(yè) cmdfang(i + 9).Visible = True Then For j = i + 4 To i Step -
27、1 t = 1 cmdfang(j).Visible = False cmdfang(2 * i + 9 - j).Visible = False For k = 1 To 4000 DoEvents Next t = 0 Next linenum = linenum + 1 For j = i - 1 To 0 Step -1 If cmdfang(j).Visible = True Then cmdfang(j).Visible = False cmdfang(j + 10).Visible = True End If Next clearline 為了實(shí)現(xiàn)連消數(shù)行,這里使用遞歸調(diào)用 En
28、d If NextEnd SubPrivate Function downable() As Boolean 自定義函數(shù),確定方塊是否能下降 If n(0) 190 And n(1) 190 And n(2) 190 And n(3) 190 Then If cmdfang(n(0) + 10).Visible = False And _ cmdfang(n(1) + 10).Visible = False And _ cmdfang(n(2) + 10).Visible = False And _ cmdfang(n(3) + 10).Visible = False Then downabl
29、e = True Else: downable = False End If Else: downable = False End IfEnd FunctionPrivate Function leftable() As Boolean 自定義函數(shù),確定方塊是否能左移If n(0) Mod 10 0 And n(1) Mod 10 0 And n(2) Mod 10 0 And n(3) Mod 10 0Then If cmdfang(n(0) - 1).Visible = False And _ cmdfang(n(1) - 1).Visible = False And _ cmdfang(
30、n(2) - 1).Visible = False And _ cmdfang(n(3) - 1).Visible = False Then leftable = True Else: leftable = False End If塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)第 11 頁(yè) Else: leftable = False End IfEnd FunctionPrivate Function rightable() As Boolean 自定義函數(shù),確定方塊是否能右移 If n(0) Mod 10 9 And n(1) Mod 10 9 And n(2) Mod 10 9 And n(3) Mod
31、 10 9Then If cmdfang(n(0) + 1).Visible = False And _ cmdfang(n(1) + 1).Visible = False And _ cmdfang(n(2) + 1).Visible = False And _ cmdfang(n(3) + 1).Visible = False Then rightable = True Else: rightable = False End If Else: rightable = False End IfEnd Function 塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)第 12 頁(yè)目錄目錄前前 言言.1工程概況工
32、程概況.11.1 項(xiàng)目名稱(chēng).11.2 設(shè)計(jì)平臺(tái).11.3 程序設(shè)計(jì)思想.11.4 運(yùn)用的控件和主要對(duì)象.21.5 主要實(shí)現(xiàn)的功能.21.6 開(kāi)發(fā)人員與分工.2正文正文.32.1 游戲設(shè)計(jì)的具體實(shí)現(xiàn).32.1.1 游戲界面的設(shè)計(jì)和背景音樂(lè)及特效的實(shí)現(xiàn).32.1.2 俄羅斯方塊的造型.32.1.3 俄羅斯方塊的旋轉(zhuǎn).32.1.4 如何實(shí)現(xiàn)方塊的運(yùn)動(dòng)和自動(dòng)消除滿(mǎn)行的方塊.42.1.5 游戲速度和游戲級(jí)別自由選擇.52.1.6 游戲得分的計(jì)算和游戲菜單的編輯.52.2 游戲功能的介紹.5有關(guān)說(shuō)明有關(guān)說(shuō)明.63.1 游戲設(shè)計(jì)中的不足之處.63.2 VB 與 C 語(yǔ)言之間的不同之處.73.2.1 局部靜態(tài)
33、變量.73.2.2 Handles 和 WithEvents.73.2.3 類(lèi)型轉(zhuǎn)換運(yùn)算符.73.2.4 默認(rèn)屬性和屬性參數(shù).83.2.5 可選參數(shù)和按名傳遞.8致謝致謝.8參考文獻(xiàn):參考文獻(xiàn):.8附件:附件:.9塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)第 13 頁(yè)VB 游戲設(shè)計(jì)制作游戲設(shè)計(jì)制作-制作俄羅斯方塊的設(shè)計(jì)與實(shí)現(xiàn)制作俄羅斯方塊的設(shè)計(jì)與實(shí)現(xiàn)時(shí)間:2010-10-13 23:49來(lái)源:未知 作者:admin 我要投稿 目 錄 1.課程大作業(yè)目的 . 1 1.1 課程大作業(yè)設(shè)計(jì)的目的 . 1 1.2 VB 在實(shí)際生活的應(yīng)用 . 1 2.課程大作業(yè)題目描客服咨詢(xún),三七畢業(yè)設(shè)計(jì)論文網(wǎng)竭誠(chéng)為您服務(wù),本站永
34、久域名: 目目 錄錄 1.課程大作業(yè)目的課程大作業(yè)目的. 11.1 課程大作業(yè)設(shè)計(jì)的目的. 11.2 VB 在實(shí)際生活的應(yīng)用. 1 2.課程大作業(yè)題目描述和要求課程大作業(yè)題目描述和要求. 12.1 俄羅斯方塊的題目描述. 12.2 俄羅斯方塊設(shè)計(jì)思想. 1 3.課程大作業(yè)報(bào)告內(nèi)容課程大作業(yè)報(bào)告內(nèi)容. 23.1 界面設(shè)計(jì). 33.2 俄羅斯方塊的功能實(shí)現(xiàn). 3 4.總結(jié)總結(jié). 6 1.課程大作業(yè)目的課程大作業(yè)目的1.2 VB 課程大作業(yè)設(shè)計(jì)的目的本課程設(shè)計(jì)以程序設(shè)計(jì)簡(jiǎn)明教程課程為基礎(chǔ),目的是進(jìn)一步培養(yǎng)學(xué)生綜合應(yīng)用 VB 的各種編程知識(shí)和技塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)第 14 頁(yè)巧進(jìn)行程序設(shè)計(jì)的
35、能力。通過(guò)課程設(shè)計(jì),學(xué)生能達(dá)到具備設(shè)計(jì)功能較為復(fù)雜的 Windows 應(yīng)用程序的能力。同時(shí),通過(guò)課程設(shè)計(jì),培養(yǎng)學(xué)生自主學(xué)習(xí)和獨(dú)立創(chuàng)新的精神,是人才培養(yǎng)體系中極為重要的一環(huán)1.2 VB 在實(shí)際生活中的應(yīng)用Visual Basic(簡(jiǎn)稱(chēng) VB)程序設(shè)計(jì)語(yǔ)言的基本概念和語(yǔ)法結(jié)構(gòu)以及常用控件的使用,并通過(guò)大量的例子介紹 VB 程序設(shè)計(jì)的方法和技巧,內(nèi)容包括:VB 程序設(shè)計(jì)基礎(chǔ)、對(duì)象及 VB 應(yīng)用程序的建立、數(shù)據(jù)的輸入與輸出、基本的控制結(jié)構(gòu)、數(shù)組和過(guò)程的程序設(shè)計(jì)、常用控件的使用、界面設(shè)計(jì)、圖形操作、文件、數(shù)據(jù)庫(kù)技術(shù)等.在這些內(nèi)容的講解中,堅(jiān)持語(yǔ)言為程序設(shè)計(jì)服務(wù)的原則,注重實(shí)用性. 在教學(xué)的安排上,采用由
36、淺到深、循序漸進(jìn)的結(jié)構(gòu),做到通俗易懂,既有針對(duì)初學(xué)者的基本知識(shí)的介紹,也有針對(duì)已經(jīng)掌握 VB 程序基本設(shè)計(jì)方法的學(xué)生對(duì)高層次內(nèi)容的要求,將程序設(shè)計(jì)語(yǔ)言、可視化的面向?qū)ο缶幊碳夹g(shù)、上機(jī)訓(xùn)練有機(jī)地融為一體.突出 VB 的基本語(yǔ)法、編程方法的訓(xùn)練,讓學(xué)生學(xué)會(huì)分析問(wèn)題并快速掌握面向?qū)ο蟮某绦颉⒔缑嬖O(shè)計(jì)、數(shù)據(jù)庫(kù)技術(shù)的設(shè)計(jì)技巧,培養(yǎng)學(xué)生的動(dòng)手能力和開(kāi)發(fā)應(yīng)用程序的能力 2.課程大作業(yè)題目描述和要求課程大作業(yè)題目描述和要求2.1 俄羅斯方塊的題目的描述俄羅斯方塊的題目的描述 1. 運(yùn)行游戲時(shí).界面隨機(jī)的產(chǎn)生不同形狀的方塊,游戲者通過(guò)自己的操作使方塊進(jìn)行合理的堆積.如果每層達(dá)到飽合狀態(tài)的時(shí)候會(huì)自動(dòng)消除.然后游戲
37、有規(guī)則的進(jìn)行加分.分?jǐn)?shù)達(dá)到一定的階段.游戲的級(jí)別也會(huì)越來(lái)越高.然后方塊下降的速度也會(huì)隨之慢慢加快.以迎合游戲者的挑戰(zhàn),達(dá)到最加有趣的游戲! 2.2 俄羅斯方塊的設(shè)計(jì)思想俄羅斯方塊的設(shè)計(jì)思想 游戲是用來(lái)給大家?jiàn)蕵?lè)的,所以要能在使用的過(guò)程中給大家?guī)?lái)快樂(lè),消除大家的疲勞,所以我們?cè)谟螒蛑刑砑恿似恋膱?chǎng)景和動(dòng)聽(tīng)的音樂(lè),設(shè)置了過(guò)關(guān)升級(jí)的功能,激發(fā)大家的娛樂(lè)激情。從游戲的基本玩法出發(fā),主要就是俄羅斯方塊的形狀和旋轉(zhuǎn),我們?cè)谠O(shè)計(jì)中在一個(gè)圖片框中構(gòu)造了一個(gè) 4*4的網(wǎng)狀小塊,由這些小塊組合成新的形狀,每四個(gè)小塊連接在一起就可以構(gòu)造出一種造型,因此我們總共設(shè)計(jì)了 7 中造型,每種造型又可以通過(guò)旋轉(zhuǎn)而變化出 2
38、 到 4 種形狀,利用隨機(jī)函數(shù)在一個(gè)欲覽窗體中提前展示形狀供用戶(hù)參考,然后將展示的形狀復(fù)制到游戲窗體中進(jìn)行擺放,在游戲窗體中用戶(hù)就可以使用鍵盤(pán)的方向鍵來(lái)控制方塊的運(yùn)動(dòng),然后利用遞歸語(yǔ)句對(duì)每一行進(jìn)行判斷,如果有某行的方塊是滿(mǎn)的,則消除這行的方塊,并且使上面的方塊自由下落,其中,方塊向下的速度是有時(shí)鐘控件控制的,在游戲中,用戶(hù)也可以使用向下鍵加快下落速度,定義一個(gè)變量,對(duì)消除的函數(shù)進(jìn)行記錄,最后就可以得出用戶(hù)的分?jǐn)?shù),用 if 語(yǔ)句對(duì)分?jǐn)?shù)判斷,達(dá)到一定的積分就可以升級(jí)到下一個(gè)檔次。俄羅斯方塊游戲設(shè)計(jì)的主要步驟為以下幾個(gè)方面:(1)游戲界面的設(shè)計(jì)。(2)俄羅斯方塊的造型。(3)俄羅斯方塊的旋轉(zhuǎn)。(4)
39、俄羅斯方塊的運(yùn)動(dòng)情況(包括向左,向右和向下) 。(5)俄羅斯方塊的自動(dòng)消行功能。(6)游戲級(jí)別的自由選擇。(7)游戲速度的自由選擇。(8)游戲得分的計(jì)算。塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)第 15 頁(yè)(9)游戲菜單選項(xiàng)的設(shè)計(jì)及功能實(shí)現(xiàn)。 3.課程大作業(yè)報(bào)告內(nèi)容課程大作業(yè)報(bào)告內(nèi)容 3.1 俄羅斯方塊的界面設(shè)計(jì)俄羅斯方塊的界面設(shè)計(jì)界面是以自己的照片為背景然后一個(gè)游戲方框和一個(gè)游戲輔助方框,再加上一些游戲所需的開(kāi)始、暫停、退出等按鈕 3.2 俄羅斯方塊的功能的實(shí)現(xiàn)俄羅斯方塊的功能的實(shí)現(xiàn)1)Enabled = 0 False Height = 480 Left = 4680 MouseIcon = 方塊.
40、frx:BF74 MousePointer = 99 Custom Picture = 方塊.frx:C3B6 ToolTipText = 續(xù)繼 CTRL+J Top = 2475 Visible = 0 False Width = 480 End以上的代碼來(lái)實(shí)現(xiàn)繼續(xù)功能2)Begin VB.Image Image9 Height = 480 Left = 5880 MouseIcon = 方塊.frx:B960 MousePointer = 99 Custom Picture = 方塊.frx:BC6A ToolTipText = 退出 CTRL+X Top = 2475 Width = 4
41、80以上的程序代碼實(shí)現(xiàn)退出功能3)Private Sub Image3_Click()OPE_Click End Sub以上的程序代碼實(shí)現(xiàn)“開(kāi)始”功能4)Private Sub Image8_Click()Gotog_ClickEnd Sub以上的程序代碼實(shí)現(xiàn)“暫停/繼續(xù)”功能5)Private Sub Image7_Click()ENDG_Click塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)第 16 頁(yè)End Sub以上的程序代碼實(shí)現(xiàn)“停止”功能6)Private Sub Image9_Click()Exite_ClickEnd Sub以上的程序代碼實(shí)現(xiàn)“退出”功能7)Private Sub Image5_Click()If jB 1 ThenImage6.Enabled = TrueImage6.Visible = True減.Enabled = True減.Visible = TrueElse
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商品房購(gòu)買(mǎi)露臺(tái)合同協(xié)議
- 員工利潤(rùn)分成合同協(xié)議
- 商場(chǎng)電費(fèi)合同協(xié)議
- 歌城股份轉(zhuǎn)讓協(xié)議合同
- 商標(biāo)變更代理合同協(xié)議
- 員工疾病免責(zé)合同協(xié)議
- 快艇維修協(xié)議合同協(xié)議
- 咖啡店露天轉(zhuǎn)讓合同協(xié)議
- 周末教學(xué)活動(dòng)協(xié)議書(shū)模板
- 商服轉(zhuǎn)讓合同協(xié)議
- (二模)濟(jì)寧市2025年4月高考模擬考試地理試卷
- 首都醫(yī)科大學(xué)附屬北京安貞醫(yī)院招聘考試真題2024
- 抽化糞池合同協(xié)議
- 中醫(yī)養(yǎng)生館運(yùn)營(yíng)方案中醫(yī)養(yǎng)生館策劃書(shū)
- (二模)寧波市2024-2025學(xué)年第二學(xué)期高考模擬考試 英語(yǔ)試卷(含答案)+聽(tīng)力音頻+聽(tīng)力原文
- 高考備考:100個(gè)高考??家族e(cuò)的文言實(shí)詞(翻譯+正誤辨析)
- 軟件項(xiàng)目交付管理制度
- 知識(shí)產(chǎn)權(quán)現(xiàn)場(chǎng)審核記錄表模板
- 食品安全自查、從業(yè)人員健康管理、進(jìn)貨查驗(yàn)記錄、食品安全事故處置等保證食品安全的規(guī)章制度
- 物理實(shí)驗(yàn)通知單記錄單初二上
- 防止電力生產(chǎn)重大事故地二十五項(xiàng)反措
評(píng)論
0/150
提交評(píng)論