真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vbnet俄羅斯方塊的簡單介紹

怎么用vb制作俄羅斯方塊游戲啊,簡單點(diǎn)的。

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

創(chuàng)新互聯(lián)建站長期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為蘆溪企業(yè)提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì),蘆溪網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

我們之所以選擇開發(fā)俄羅斯方塊游戲,無可爭議,《俄羅斯方塊》是有史以來最偉大的游戲之一。 在曾經(jīng)發(fā)布過的所有游戲中,《俄羅斯方塊》還被認(rèn)為是僅有的一個(gè)能夠真正吸引廣泛人群的作品。誰能說清楚,迄今為止人們究竟花了多少萬個(gè)小時(shí)在這個(gè)游戲上?也許這些時(shí)間本來可以被花在更具生產(chǎn)力的活動上。某些批評家也許會聲稱,《俄羅斯方塊》要比過去二十年間出現(xiàn)的任何東西都要浪費(fèi)人們的時(shí)間。至于我們,則要欣然提名它為GameSpot評選出的歷史上最偉大游戲之一。

為了懷念經(jīng)典,也為了能夠給大多的計(jì)算機(jī)用戶在工作之余找到一個(gè)休閑、娛樂的一個(gè)方式,我們小組開始著手用VB語言開發(fā)一個(gè)經(jīng)典的俄羅斯方塊游戲。

工程概況

2.1 項(xiàng)目名稱

俄羅斯方塊游戲

2.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)存,50MB 以上的硬盤,cd-rom驅(qū)動器,鼠標(biāo)。軟件:要求windows 95以上版本。

2.3程序設(shè)計(jì)思想

游戲是用來給大家娛樂的,所以要能在使用的過程中給大家?guī)砜鞓罚蠹业钠?,所以我們在游戲中添加了漂亮的場景和動聽的音樂,設(shè)置了過關(guān)升級的功能,激發(fā)大家的娛樂激情。

從游戲的基本玩法出發(fā),主要就是俄羅斯方塊的形狀和旋轉(zhuǎn),我們在設(shè)計(jì)中在一個(gè)圖片框中構(gòu)造了一個(gè)4*4的網(wǎng)狀小塊,由這些小塊組合成新的形狀,每四個(gè)小塊連接在一起就可以構(gòu)造出一種造型,因此我們總共設(shè)計(jì)了7中造型,每種造型又可以通過旋轉(zhuǎn)而變化出2到4種形狀,利用隨機(jī)函數(shù)在一個(gè)欲覽窗體中提前展示形狀供用戶參考,然后將展示的形狀復(fù)制到游戲窗體中進(jìn)行擺放,在游戲窗體中用戶就可以使用鍵盤的方向鍵來控制方塊的運(yùn)動,然后利用遞歸語句對每一行進(jìn)行判斷,如果有某行的方塊是滿的,則消除這行的方塊,并且使上面的方塊自由下落,其中,方塊向下的速度是有時(shí)鐘控件控制的,在游戲中,用戶也可以使用向下鍵加快下落速度,定義一個(gè)變量,對消除的函數(shù)進(jìn)行記錄,最后就可以得出用戶的分?jǐn)?shù),用if 語句對分?jǐn)?shù)判斷,達(dá)到一定的積分就可以升級到下一個(gè)檔次。

俄羅斯方塊游戲設(shè)計(jì)的主要步驟為以下10個(gè)方面:

(1)游戲界面的設(shè)計(jì)。

(2)俄羅斯方塊的造型。

(3)俄羅斯方塊的旋轉(zhuǎn)。

(4)俄羅斯方塊的運(yùn)動情況(包括向左,向右和向下)。

(5)俄羅斯方塊的自動消行功能。

(6)游戲級別的自由選擇。

(7)游戲速度的自由選擇。

(8)游戲得分的計(jì)算。

(9)游戲菜單選項(xiàng)的設(shè)計(jì)及功能實(shí)現(xiàn)。

(10)游戲的背景音樂及特效。

2.4運(yùn)用的控件和主要對象

我們在設(shè)計(jì)過程中主要用到的控件有:command控件,image控件,picture控件,label控件,timer控件,text控件,windows media player控件等等。

2.5主要實(shí)現(xiàn)的功能

我們開發(fā)的俄羅斯方塊游戲,主要實(shí)現(xiàn)了以下幾種功能:

1.可以靈活控制方塊在圖形框中運(yùn)動。

2.游戲過程中方塊可以自由旋轉(zhuǎn)。

3.當(dāng)某一行的方塊排列滿時(shí),將自動將這一行方塊消除,然后將上面所有方塊向下移動,可以支持連續(xù)消行。

4.游戲前可以選擇游戲的速度和游戲的等級,游戲速度既為方塊下落速度,游戲等級為初始游戲時(shí)在基層隨機(jī)生成一定行數(shù)的無規(guī)律方塊,生成的行數(shù)由你來選擇,每行至少產(chǎn)生5個(gè)以上的無規(guī)律方塊,這樣增加了游戲難度,對于游戲高手來說,無疑不是一個(gè)新的挑戰(zhàn)。

5.游戲的得分支持積分,并且按照公式:

得分 = 原來分?jǐn)?shù)+ 100 * (2 ^ 同時(shí)消除的行數(shù)-1)

這樣,你同一時(shí)間消除的行數(shù)越多,你的得分也就越高,當(dāng)游戲積分到了一定時(shí)可以自動升級,這個(gè)升級指速度升級。

6.游戲中提供了一個(gè)漂亮的場景和動聽的音樂,給你帶來無限激情。

2.6開發(fā)人員

由于這次課程設(shè)計(jì)所選的題目太復(fù)雜,而時(shí)間又比較緊張,指導(dǎo)老師建議和同學(xué)分工完成。我們小組成員包括組長孫磊周,副組長鄒海星,此游戲由我們兩個(gè)人共同開發(fā)而成。

正文

3.1游戲設(shè)計(jì)的具體實(shí)現(xiàn)

在我們兩個(gè)人共同努力下,此次設(shè)計(jì),終于能夠圓滿完成。由于時(shí)間的緊促,在設(shè)計(jì)中,也許會有一些考慮不周之處,但其功能已經(jīng)能夠滿足大多用戶的需求,相信假以時(shí)日,一定能做出一個(gè)更經(jīng)典,更完美的俄羅斯方塊游戲,下面我們將對每一步的具體如何實(shí)現(xiàn)展示給大家。

3.1.1游戲界面的設(shè)計(jì)和背景音樂及特效的實(shí)現(xiàn)

俄羅斯方塊游戲主要由兩個(gè)界面構(gòu)成,登陸界面和開始游戲界面,在登陸界面中我們可以首先看到圣誕節(jié)的晚上飄梅花的場景,梅花從窗體頂部做函數(shù)曲線的下落運(yùn)動,在窗體中定義一個(gè)Image控件組,在通用中定義梅花X坐標(biāo)變量動態(tài)數(shù)組,Y坐標(biāo)變量動態(tài)數(shù)組,步距X的變量動態(tài)數(shù)組,步距Y的變量動態(tài)數(shù)組,以及振幅變量動態(tài)數(shù)組。然后在窗體form_load中可以定義梅花的數(shù)量,利用隨機(jī)函數(shù)產(chǎn)生隨機(jī)的梅花坐標(biāo),步距和振幅,Image控件在運(yùn)行時(shí)候就調(diào)用梅花圖片,Image控件就可以由時(shí)鐘控件控制下落速度,可以自由調(diào)節(jié),梅花按snow(i).Left = xp(i) + am(i) * Sin(dx(i))函數(shù)在做縱向的正玄函數(shù)軌跡運(yùn)動,豎直方向上為自由下落運(yùn)動,,有am(i)來控制梅花的左右移動振幅。因此,我們就可以看到一個(gè)梅花在空中自由飄舞的畫面了。

背景畫面是用photoshop軟件處理的漂亮圖案,原本畫面中的動畫效果都是由Image控件制作的,還有點(diǎn)擊進(jìn)入游戲的按鈕是由Label控件實(shí)現(xiàn)的,因?yàn)镮mage控件沒有置前置后功能,不能將下雪的場景體現(xiàn)完整性,所以將這些圖案全部放在背景上,不影響雪花飄落的效果,當(dāng)點(diǎn)擊畫面的時(shí)候一樣可以進(jìn)入游戲界面。

游戲的背景音樂是由一段代碼調(diào)用系統(tǒng)播放器Windows Player播放背景音樂,由于本次設(shè)計(jì)主要是針對游戲如何設(shè)計(jì)的,所以在這里就不對播放背景音樂的功能做介紹了。

3.1.2俄羅斯方塊的造型

相信朋友們都玩過俄羅斯方塊,對這個(gè)游戲的玩法和方塊形狀都比較熟悉。我們這個(gè)游戲只選擇了最基本的7中造型,包括長條型,正方型,正S型,反S型,正7型,反7型,T型。如果需要我們可以添加更多的造型。將游戲界面的游戲區(qū)圖片框分割成10*20的小塊,每個(gè)小塊放置一個(gè)command控件,預(yù)覽區(qū)圖片框按同樣比例分割成4*4的小塊,同樣有command控件構(gòu)成,我們可以把預(yù)覽區(qū)圖片框看作是從游戲區(qū)圖片框中選取的一個(gè)部分,游戲區(qū)的小方塊編號和欲覽區(qū)編號如下圖:

0 1 2 3 4 5 6 7 8 9

… … … … … … … … … …

… … … … … … … … … …

90 91 92 93 94 95 96 97 98 99

3 4 5 6

13 14 15 16

23 24 25 26

33 34 35 36

游戲區(qū)編號 欲覽區(qū)編號

利用Select將方塊的7中造型列出,比如長條型的設(shè)計(jì),在欲覽區(qū)中分別有3.4.5.6和5.15.25.35四個(gè)方塊構(gòu)成兩中形態(tài),用數(shù)組為:

m(0) = 3: m(1) = 4: m(2) = 5: m(3) = 6: situation2 = 0

m(0) = 5: m(1) = 15: m(2) = 25: m(3) = 35: situation2 = 1

將它的形狀編號為0和1,在后面方便調(diào)用,其他的方塊造型同樣的方法。

3.1.3俄羅斯方塊的旋轉(zhuǎn)

俄羅斯方塊的旋轉(zhuǎn)主要將方塊的位置加以變換得到的,例如上述范例,長條型有兩中樣式,根據(jù)小方塊的編號變動來實(shí)現(xiàn)整個(gè)造型的旋轉(zhuǎn),比如:

If n(0) - 18 = 2 And n(3) + 9 = 198 Then

If cmdfang(n(0) - 18).Visible = False And _

cmdfang(n(1) - 9).Visible = False And _

cmdfang(n(3) + 9).Visible = False Then

hidefang 0

n(0) = n(0) - 18

n(1) = n(1) - 9

n(3) = n(3) + 9

showfang 0

situation = 1

End If

End If

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

3.1.4如何實(shí)現(xiàn)方塊的運(yùn)動和自動消除滿行的方塊

我們的這個(gè)俄羅斯方塊游戲主要是利用command控件的visible屬性完成效果的,其實(shí)在游戲區(qū)圖形框可以看成是由許多的command小方塊組成,方塊運(yùn)動的過程就是造型里方塊顯示或者隱藏,就像現(xiàn)在的霓虹燈效果一樣,由時(shí)鐘控件控制visible屬性改變的速度,上一層的消失,下一層的顯示,這樣,從視覺效果可以看到方塊的下落運(yùn)動效果。

方塊在下落的過程中會自動判斷每一行方塊的visible屬性,如果全部為true時(shí),就會將這一行小方塊的visible屬性全部變成false,在將上面的小方塊向下移動,利用for語句進(jìn)行循環(huán)判斷,將所有這樣情況的行改變小方塊visible屬性。當(dāng)有多行同時(shí)出現(xiàn)這樣情況時(shí)使用遞歸調(diào)用,實(shí)現(xiàn)連續(xù)消行。具體程序代碼如下:

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 _

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 _

cmdfang(i + 9).Visible = True Then

For j = i + 4 To i Step -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)用

End If

Next

3.1.5游戲速度和游戲級別自由選擇

游戲速度的自由選擇無非就是改變時(shí)鐘控件的頻率,我們在菜單中添加了選擇速度的功能,還有添加了考驗(yàn)功能,將欲覽窗中的方塊造型隱藏,給玩家提高了難度,如果你不愿意接受考驗(yàn)也可以點(diǎn)擊顯示還原成原來狀態(tài)。

游戲級別的自由選擇是讓用戶選擇游戲開始時(shí)候,游戲區(qū)底部出現(xiàn)一定行數(shù)的隨機(jī)方塊,同樣給玩家增加了難度,功能代碼如下:

For i = 19 To 20 - Val(txthard.Text) Step -1

For j = i * 10 To i * 10 + 9

If Rnd = 0.5 Then cmdfang(j).Visible = True

Next

Next

可以根據(jù)你選擇的難度系數(shù)在底層的每一行隨機(jī)產(chǎn)生超過半數(shù)(即5個(gè)以上)以上的小方塊,這樣適合喜歡高難度的玩家。

3.1.6游戲得分的計(jì)算和游戲菜單的編輯

游戲得分的計(jì)算主要是根據(jù)消除的行數(shù)來決定的,當(dāng)然每一次同時(shí)消除的行數(shù)不一樣,每一行的得分也不一樣,如果你每次消除的行數(shù)為1,則最后得分是100分,如果同時(shí)消除2行,則最后得分是300分,同時(shí)消除3行,得分為700分,同時(shí)消除4行,得分為1500分,這由公式:得分 = 原來分?jǐn)?shù)+ 100 * (2 ^ 同時(shí)消除的行數(shù)-1)。

游戲的編輯,讀者可以參照下面的功能介紹。

3.2 游戲功能的介紹

文件-------開始:開始游戲。

繼續(xù):繼續(xù)游戲。

暫停:暫時(shí)停止游戲,點(diǎn)擊繼續(xù)的時(shí)候可以繼續(xù)游戲。

退出:退出游戲。

設(shè)置-------選擇游戲級別。

選擇游戲速度。

考驗(yàn)-------顯示:顯示欲覽去方塊。

隱藏:隱藏欲覽去方塊。

幫助-------操作提示以及版本信息和作者資料。

用戶界面具體如圖:

圖—登陸界面 圖—游戲界面

圖—菜單編輯界面 圖—游戲幫助界面

有關(guān)說明

經(jīng)過兩個(gè)多星期的設(shè)計(jì)和開發(fā),俄羅斯方塊游戲已經(jīng)成功。其功能基本符合用戶需求,能夠完成游戲的控制,方塊的變換以及消層等功能。并提供游戲設(shè)置,對于一些技術(shù)性比較過硬的玩家,可以調(diào)游戲級別、以及游戲速度,使得玩家能夠充分的發(fā)揮競技游戲的特色,可以不斷的挑戰(zhàn)自我,挑戰(zhàn)極限。

4.1游戲設(shè)計(jì)中的不足之處

但是由于課程設(shè)計(jì)時(shí)間較短,所以該游戲還有許多不盡如人意的地方,比如方塊類型太少,退出游戲不能存儲進(jìn)度等多方面問題。這些都有待進(jìn)一步改善,我們在游戲中還可以更換背景音樂,以適合不同的玩家,在每通過一關(guān)可以給玩家播放一段flash,吸引玩家去挑戰(zhàn)極限,不斷提高玩家的興趣,相信在以后的制作過程中我們將給大家?guī)硪粋€(gè)更新功能更全面的游戲。

4.2VB與C語言之間的不同之處

我們這個(gè)小游戲也可以用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,但為什么VB支持很多有趣的特性呢。我們一起來探究一下。

4.21局部靜態(tài)變量

VB支持用Static關(guān)鍵字聲明局部變量,這樣在過程結(jié)束的時(shí)候可以保持變量的數(shù)值:

Public Sub Test1()

Static i As Integer

i += 1 '實(shí)現(xiàn)一個(gè)過程調(diào)用計(jì)數(shù)器

End Sub

我們實(shí)現(xiàn)了一個(gè)簡單的過程計(jì)數(shù)器。每調(diào)用一次Test,計(jì)數(shù)器的數(shù)值就增加1。其實(shí)還有很多情況我們希望保持變量的數(shù)值。而C#的static是不能用在過程內(nèi)部的。因此要實(shí)現(xiàn)過程計(jì)數(shù)器,我們必須聲明一個(gè)類級別的變量。這樣做明顯不如VB好。因?yàn)闊o法防止其他過程修改計(jì)數(shù)器變量。這就和對象封裝一個(gè)道理,本來應(yīng)該是一個(gè)方法的局部變量,現(xiàn)在我要被迫把它獨(dú)立出來,顯然是不好的設(shè)計(jì)。那么VB是怎么生成局部靜態(tài)變量的呢?將上述代碼返匯編,我們可以清楚地看到在VB生成的CIL中,i不是作為局部變量,而是作為類的Field出現(xiàn)的: .field private specialname int32 $STATIC$Test1$2001$i

也就是說,i被改名作為一個(gè)類的字段,但被冠以specialname。在代碼中試圖訪問$STATIC$Test1$2001$i是不可能的,因?yàn)樗皇且粋€(gè)有效的標(biāo)識符。但是在IL中,將這個(gè)變量加一的代碼卻與一般的類字段完全一樣,是通過ldfld加載的。我覺得這個(gè)方法十分聰明,把靜態(tài)變量變成生命周期一樣的類字段,但是又由編譯器來控制訪問的權(quán)限,讓它成為一個(gè)局部變量。同時(shí)也解釋了VB為什么要用兩個(gè)不同的關(guān)鍵字來聲明靜態(tài)變量——Static和Shared。由于局部靜態(tài)變量的實(shí)質(zhì)是類的字段,所以它和真正的局部變量還是有所不同的。比如在多線程條件下,對局部靜態(tài)變量的訪問就和訪問字段相同。

4.2.2Handles和WithEvents

VB除了可以用C#那樣的方法來處理事件響應(yīng)以外,還有從VB5繼承下來的獨(dú)特的事件處理方式——WithEvents。

我喜歡稱這種事件處理方式為靜態(tài)的事件處理,書寫響應(yīng)事件的方法時(shí)就已經(jīng)決定該方法響應(yīng)的是哪一個(gè)事件,而C#則是在代碼中綁定事件的。VB中WithEvents靜態(tài)方法是非常有用的,它可以顯著增強(qiáng)代碼可讀性,同時(shí)也讓VB.net中的事件處理非常方便,不像C#那樣離開了窗體設(shè)計(jì)器就必須手工綁定事件。

4.2.3類型轉(zhuǎn)換運(yùn)算符

在Visual Basic 2005中將加入一個(gè)新的運(yùn)算符——TryCast,相當(dāng)于C#的as運(yùn)算符。我一直希望VB有這樣一個(gè)運(yùn)算符。VB目前的類型轉(zhuǎn)換運(yùn)算符主要有CType和DirectCast。他們的用法幾乎一樣。我詳細(xì)比較了一下這兩個(gè)運(yùn)算符,得出以下結(jié)論:

1.在轉(zhuǎn)換成引用類型時(shí),兩者沒有什么區(qū)別,都是直接調(diào)用castclass指令,除非重載了類型轉(zhuǎn)換運(yùn)算符CType。DirectCast運(yùn)算符是不能重載的。

2.轉(zhuǎn)換成值類型時(shí),CType會調(diào)用VB指定的類型轉(zhuǎn)換函數(shù)(如果有的話),比如將String轉(zhuǎn)換為Int32時(shí),就會自動調(diào)用。

4.2.4默認(rèn)屬性和屬性參數(shù)

在原先的VB6里,有一項(xiàng)奇特的功能——默認(rèn)屬性。在VB6中,對象的名稱可以直接表示該對象的默認(rèn)屬性。

4.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ù),則必須帶有默認(rèn)值。在調(diào)用的時(shí)候,VB若發(fā)現(xiàn)參數(shù)被省略,則自動讀取.param部分的默認(rèn)值,并顯式傳遞給過程。這一部分完全由編譯器處理,而且沒有任何性能損失,和手工傳遞所有參數(shù)是完全一樣的。至于按名傳遞,VB會自動調(diào)整參數(shù)的順序,其結(jié)果與傳統(tǒng)方式的傳遞也沒有任何的不同。這說明我們可以放心地使用這項(xiàng)便利。而且?guī)в锌蛇x參數(shù)的過程拿到C#中,頂多變成不可選參數(shù),也不會造成什么其他的麻煩。

PS.很多COM組件都使用了默認(rèn)參數(shù),而且有些過程的參數(shù)列表非常長,在VB里可以輕松地處理它們,而在C#中經(jīng)常讓開發(fā)者傳參數(shù)傳到吐血。

4.2.6在經(jīng)過對比之后可得以下一個(gè)結(jié)論:

1.目前的主流編程語言沒有簡單的,如果你想學(xué)精通的話。

2.VB的門檻比較低,編程思想較容易接受。

3.學(xué)習(xí)C不能短期內(nèi)見到成效。

4.據(jù)用戶調(diào)查69%的考生覺得VB更容易接受

致謝

在本次課程設(shè)計(jì)中,我從指導(dǎo)老師牛榮和李鵬身上學(xué)到了很多東西。老師認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平都使我收益匪淺。他無論在理論上還是在實(shí)踐中,都給與我很大的幫助,使我得到不少的提高這對于我以后的工作和學(xué)習(xí)都有一種巨大的幫助,感謝他耐心的輔導(dǎo)。

另外,在游戲開發(fā)過程中化希耀老師和杜義君老師也給于我們很大的幫助,幫助解決了不少的難點(diǎn),使得游戲能及時(shí)開發(fā)完成,還有所有的同學(xué)同樣給與我不少幫助,這里一并表示感。

參考文獻(xiàn):

[1]Vsual Basic 程序設(shè)計(jì)教程 作者:龔沛曾,陸慰民,楊志強(qiáng) 高等教育出版社出版

[2]Vsual Basic 6.0程序設(shè)計(jì) 作者:劉新民,蔡瓊,白糠生 清華大學(xué)出版社出版

[3]80例上手 VB6 編程 作者:唐凱軍,湯惠莉 山東電子音像出版社

[4]Vsual Basic 實(shí)例教程 作者:盧毅 科學(xué)出版社出版

[5]Vsual Basic 經(jīng)典范例50講 作者:趙欣勝,亢慧娟,劉晟宏 科學(xué)出版社出版

請問有哪本書很詳細(xì)得講解了怎么用VB制作俄羅斯方塊?

《visual

basic程序設(shè)計(jì)》

忘了哪個(gè)出版社的了,書上有從入門開始到基本的編程

俄羅斯方塊是書中一個(gè)實(shí)例,你可以找找

VB寫俄羅斯方塊!VB 高手進(jìn)。

Public Class Form1

Dim new_p, old_p As ToolStripMenuItem '設(shè)置級別

Public interval As Integer

Public check(7, 15) As Boolean

Dim panel2(4) As Point

Dim intSquareStyle As Integer

Dim oldSquareStyle As IntegerPrivate Sub mypanel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles mypanel1.Paint

Dim i As Integer

Dim j As Integer

For i = 0 To 7

For j = 0 To 15

If check(i, j) Then

DrawSquare(i, j, mypanel1)

End If

Next

Next

End SubPrivate Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

Dim intResponse As Integer

Timer1.Enabled = False

intResponse = MessageBox.Show("是否要保存應(yīng)用程序?", "俄羅斯方塊", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)

If intResponse = vbYes Then

Dim i, j As Integer

WritePrivateProfileString("俄羅斯方塊", "Score", Label2.Text, Application.StartupPath "\app.ini")

For i = 0 To 7

For j = 0 To 15

WritePrivateProfileString("俄羅斯方塊", "check" CStr(i) CStr(j), IIf(check(i, j), "1", "0").ToString, Application.StartupPath "\app.ini")

Next

Next

WritePrivateProfileString("俄羅斯方塊", "jibie", old_p.Tag.ToString, Application.StartupPath "\app.ini")

For i = 0 To 3

WritePrivateProfileString("俄羅斯方塊", "NewSquares" CStr(i) "X", SquresBase.Squares(i).X.ToString, Application.StartupPath "\app.ini")

WritePrivateProfileString("俄羅斯方塊", "NewSquares" CStr(i) "Y", SquresBase.Squares(i).Y.ToString, Application.StartupPath "\app.ini")

Next i

WritePrivateProfileString("俄羅斯方塊", "symmetryX", SquresBase.symmetry.X.ToString, Application.StartupPath "\App.ini")

WritePrivateProfileString("俄羅斯方塊", "symmetryY", SquresBase.symmetry.Y.ToString, Application.StartupPath "\App.ini")

WritePrivateProfileString("俄羅斯方塊", "SquareStyle", oldSquareStyle.ToString, Application.StartupPath "\App.ini")

End If

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

frmStart.ShowDialog()

If frmStart.newGame Then

interval = 400

Timer1.Interval = interval

old_p = 低級ToolStripMenuItem

old_p.Checked = True

Label2.Text = "0"

Else

' the score is 0

Dim i, j As Integer

Dim s As String = "10"

' GetPrivateProfileString("abc", "Score", "0", Label2.Text, 256, Application.StartupPath "\App.ini")

GetPrivateProfileString("俄羅斯方塊", "Score", "10", s, 256, Application.StartupPath "\App.ini")Label2.Text = s

For i = 0 To 7

For j = 0 To 15

GetPrivateProfileString("俄羅斯方塊", "check" CStr(i) CStr(j), "0", s, 256, Application.StartupPath "\app.ini")

check(i, j) = CBool(IIf(CInt(s) = 1, True, False))

Next

Next

buttom = mypanel1.Height()

Dim jibie As String = " "

GetPrivateProfileString("俄羅斯方塊", "jibie", "3", jibie, 256, Application.StartupPath "\App.ini")

Dim TSM As ToolStripMenuItem

For Each TSM In GameToolStripMenuItem.DropDownItems

If TSM.Tag.ToString = CInt(Trim(jibie)).ToString Then

old_p = TSM

Exit For

Else

old_p = 低級ToolStripMenuItem

End If

Next

Dim Strinterval As String = " "

GetPrivateProfileString("俄羅斯方塊", "inteval", "400", Strinterval, 256, Application.StartupPath "\App.ini")

interval = CInt(Trim(Strinterval))

Timer1.Interval = interval

If Not old_p Is 低級ToolStripMenuItem Then

低級ToolStripMenuItem.Checked = False

End If

old_p.Checked = True

'構(gòu)造方塊

newSquares = New SquresBase

Dim str As String

For i = 0 To 3

str = " "

GetPrivateProfileString("俄羅斯方塊", "NewSquares" CStr(i) "X", "2", str, 256, Application.StartupPath "\App.ini")

SquresBase.Squares(i).X = CInt(Trim(str))

str = " "

GetPrivateProfileString("俄羅斯方塊", "NewSquares" CStr(i) "Y", "0", str, 256, Application.StartupPath "\App.ini")

SquresBase.Squares(i).Y = CInt(Trim(str))

Next

str = " "

GetPrivateProfileString("俄羅斯方塊", "symmetryX", "0", str, 256, Application.StartupPath "\App.ini")

SquresBase.symmetry.X = CInt(Trim(str))

str = " "

GetPrivateProfileString("俄羅斯方塊", "symmetryY", "0", str, 256, Application.StartupPath "\App.ini")

SquresBase.symmetry.Y = CInt(Trim(str))

str = " "

GetPrivateProfileString("俄羅斯方塊", "SquareStyle", "0", str, 256, Application.StartupPath "\App.ini")

oldSquareStyle = CInt(Trim(str))

End IfEnd SubPrivate Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Timer1.Stop()

mypanel1.Focus()

newSquares.MoveDown()

Timer1.Start()

End Sub

Private Sub ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 開始ToolStripMenuItem.Click, 低級ToolStripMenuItem.Click, 高級ToolStripMenuItem.Click, ToolStripMenuItem2.Click, 中級ToolStripMenuItem1.Click

Dim tempMenuItem As ToolStripMenuItem

tempMenuItem = CType(sender, ToolStripMenuItem)

Dim temp As Int32

temp = CInt(tempMenuItem.Tag)

Select Case temp

Case 0

'advance

new_p = tempMenuItem

Timer1.Interval = 100

Case 1

'normal

new_p = tempMenuItem

Timer1.Interval = 300

Case 2

'easy

new_p = tempMenuItem

Timer1.Interval = 400

Case 3

'start

Dim i, j As Integer

For j = 0 To 15

For i = 0 To 7

If check(i, j) Then

Timer1.Start()

createpanel2()

Exit Sub

End If

Next

Next

Start()

Exit Sub

Case 4

'restarted

restarted()

Exit Sub

End Select

inteval = Timer1.Interval

old_p.Checked = False

new_p.Checked = True

old_p = new_p

End SubPrivate Sub DrawSquare(ByVal x As Integer, ByVal y As Integer, ByVal panel As Panel)

Randomize()

Dim myBrush As New System.Drawing.SolidBrush(Color.AliceBlue)

Dim panelGraphics As System.Drawing.Graphics

panelGraphics = panel.CreateGraphics

panelGraphics.FillRectangle(myBrush, New Rectangle(x * IntSize, y * IntSize, IntSize, IntSize))

panelGraphics.DrawRectangle(Pens.LightBlue, New Rectangle(x * IntSize, y * IntSize, 16, 16))

panelGraphics.DrawRectangle(Pens.Blue, New Rectangle(x * IntSize + 2, y * IntSize + 2, 12, 12))

panelGraphics.DrawRectangle(Pens.DarkBlue, New Rectangle(x * IntSize + 4, y * IntSize + 4, 8, 8))

panelGraphics.FillRectangle(New System.Drawing.SolidBrush(Color.SkyBlue), New Rectangle(x * IntSize + 4, y * IntSize + 4, 8, 8))

myBrush.Dispose()

panelGraphics.Dispose()

If panel Is mypanel1 Then

check(x, y) = True

End If

End Sub

Private Sub DrawSquares(ByVal panel As Panel)

Dim i As Integer

For i = 0 To 3

DrawSquare(Squares(i).X, Squares(i).Y, panel)

Next

End Sub


本文名稱:vbnet俄羅斯方塊的簡單介紹
文章路徑:http://weahome.cn/article/ddoigpi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部