當前位置:編程學習大全網 - 編程語言 - 求俄羅斯方塊制作工具

求俄羅斯方塊制作工具

羅斯方塊的發明者,是當時還被稱為"蘇聯"的聯邦科學員阿萊克斯?帕吉托夫,該遊戲最初是作為自我消遣的電腦遊戲而被制作出來的。

現在制作如下

開始

同時全盤檢測鍵盤

全局判斷

掃描每行格式是否有滿的

有就清除當行顯示

將上面左邊下壹Y>0

加分

判斷分值是否到升級速度階段

到則加速下落

隨機抽取方塊

隨機抽取下落地點

判斷下落速度下落方塊(TIMER控件)

如果按下則加快下落

前 言

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

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

為了懷念經典,也為了能夠給大多的計算機用戶在工作之余找到壹個休閑、娛樂的壹個方式,我們小組開始著手用VB語言開發壹個經典的俄羅斯方塊遊戲。

工程概況

2.1 項目名稱

俄羅斯方塊遊戲

2.2 設計平臺

VB 全稱Visual Basic,它是以Basic語言作為其基本語言的壹種可視化編程工具。

Vb是microsoft公司於1991年退出的windows應用程序開發工具visual意思是“可視化的”。在它剛推出來時,自身還存在壹些缺陷,功能也相對少壹些。但是經過多年的開發研究。最近microsoft公司又推出了VB6.0版本

VB6.0運行環境:硬件,要求486以上的處理器、16MB以上內存,50MB 以上的硬盤,cd-rom驅動器,鼠標。軟件:要求windows 95以上版本。

2.3程序設計思想

遊戲是用來給大家娛樂的,所以要能在使用的過程中給大家帶來快樂,消除大家的疲勞,所以我們在遊戲中添加了漂亮的場景和動聽的音樂,設置了過關升級的功能,激發大家的娛樂激情。

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

俄羅斯方塊遊戲設計的主要步驟為以下10個方面:

(1)遊戲界面的設計。

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

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

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

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

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

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

(8)遊戲得分的計算。

(9)遊戲菜單選項的設計及功能實現。

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

2.4運用的控件和主要對象

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

2.5主要實現的功能

我們開發的俄羅斯方塊遊戲,主要實現了以下幾種功能:

1.可以靈活控制方塊在圖形框中運動。

2.遊戲過程中方塊可以自由旋轉。

3.當某壹行的方塊排列滿時,將自動將這壹行方塊消除,然後將上面所有方塊向下移動,可以支持連續消行。

4.遊戲前可以選擇遊戲的速度和遊戲的等級,遊戲速度既為方塊下落速度,遊戲等級為初始遊戲時在基層隨機生成壹定行數的無規律方塊,生成的行數由妳來選擇,每行至少產生5個以上的無規律方塊,這樣增加了遊戲難度,對於遊戲高手來說,無疑不是壹個新的挑戰。

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

得分 = 原來分數+ 100 * (2 ^ 同時消除的行數-1)

這樣,妳同壹時間消除的行數越多,妳的得分也就越高,當遊戲積分到了壹定時可以自動升級,這個升級指速度升級。

6.遊戲中提供了壹個漂亮的場景和動聽的音樂,給妳帶來無限激情。

2.6開發人員

由於這次課程設計所選的題目太復雜,而時間又比較緊張,指導老師建議和同學分工完成。我們小組成員包括組長孫磊周,副組長鄒海星,此遊戲由我們兩個人***同開發而成。

正文

3.1遊戲設計的具體實現

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

3.1.1遊戲界面的設計和背景音樂及特效的實現

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

背景畫面是用photoshop軟件處理的漂亮圖案,原本畫面中的動畫效果都是由Image控件制作的,還有點擊進入遊戲的按鈕是由Label控件實現的,因為Image控件沒有置前置後功能,不能將下雪的場景體現完整性,所以將這些圖案全部放在背景上,不影響雪花飄落的效果,當點擊畫面的時候壹樣可以進入遊戲界面。

遊戲的背景音樂是由壹段代碼調用系統播放器Windows Player播放背景音樂,由於本次設計主要是針對遊戲如何設計的,所以在這裏就不對播放背景音樂的功能做介紹了。

3.1.2俄羅斯方塊的造型

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

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

遊戲區編號 欲覽區編號

利用Select將方塊的7中造型列出,比如長條型的設計,在欲覽區中分別有3.4.5.6和5.15.25.35四個方塊構成兩中形態,用數組為:

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,在後面方便調用,其他的方塊造型同樣的方法。

3.1.3俄羅斯方塊的旋轉

俄羅斯方塊的旋轉主要將方塊的位置加以變換得到的,例如上述範例,長條型有兩中樣式,根據小方塊的編號變動來實現整個造型的旋轉,比如:

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

方塊的造型在旋轉的時候存在壹個公式,當然首先要判斷是否滿足旋轉的要求,以上是壹個長條型由橫著變成豎立狀態的旋轉,我們以它的造型中的第三個小方塊n(3)為中心旋轉,這樣,在開始運動的時候,長條形要發生旋轉最少要運動到第三行,才能由橫著變成豎立狀態,遊戲區圖形框中第三行的第壹個方塊的編號為20,所以長條造型的第壹個小方塊的編號n(0)必須要大於20。同樣,長條型方塊在下落到底部的時候也有限制。如果長條下落到最後壹行也將無法由橫著變成豎立狀態。

3.1.4如何實現方塊的運動和自動消除滿行的方塊

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

方塊在下落的過程中會自動判斷每壹行方塊的visible屬性,如果全部為true時,就會將這壹行小方塊的visible屬性全部變成false,在將上面的小方塊向下移動,利用for語句進行循環判斷,將所有這樣情況的行改變小方塊visible屬性。當有多行同時出現這樣情況時使用遞歸調用,實現連續消行。具體程序代碼如下:

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 '為了實現連消數行,這裏使用遞歸調用

End If

Next

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

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

遊戲級別的自由選擇是讓用戶選擇遊戲開始時候,遊戲區底部出現壹定行數的隨機方塊,同樣給玩家增加了難度,功能代碼如下:

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

可以根據妳選擇的難度系數在底層的每壹行隨機產生超過半數(即5個以上)以上的小方塊,這樣適合喜歡高難度的玩家。

3.1.6遊戲得分的計算和遊戲菜單的編輯

遊戲得分的計算主要是根據消除的行數來決定的,當然每壹次同時消除的行數不壹樣,每壹行的得分也不壹樣,如果妳每次消除的行數為1,則最後得分是100分,如果同時消除2行,則最後得分是300分,同時消除3行,得分為700分,同時消除4行,得分為1500分,這由公式:得分 = 原來分數+ 100 * (2 ^ 同時消除的行數-1)。

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

3.2 遊戲功能的介紹

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

繼續:繼續遊戲。

暫停:暫時停止遊戲,點擊繼續的時候可以繼續遊戲。

退出:退出遊戲。

設置-------選擇遊戲級別。

選擇遊戲速度。

考驗-------顯示:顯示欲覽去方塊。

隱藏:隱藏欲覽去方塊。

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

用戶界面具體如圖:

圖—登陸界面 圖—遊戲界面

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

有關說明

經過兩個多星期的設計和開發,俄羅斯方塊遊戲已經成功。其功能基本符合用戶需求,能夠完成遊戲的控制,方塊的變換以及消層等功能。並提供遊戲設置,對於壹些技術性比較過硬的玩家,可以調遊戲級別、以及遊戲速度,使得玩家能夠充分的發揮競技遊戲的特色,可以不斷的挑戰自我,挑戰極限。

4.1遊戲設計中的不足之處

但是由於課程設計時間較短,所以該遊戲還有許多不盡如人意的地方,比如方塊類型太少,退出遊戲不能存儲進度等多方面問題。這些都有待進壹步改善,我們在遊戲中還可以更換背景音樂,以適合不同的玩家,在每通過壹關可以給玩家播放壹段flash,吸引玩家去挑戰極限,不斷提高玩家的興趣,相信在以後的制作過程中我們將給大家帶來壹個更新功能更全面的遊戲。

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

我們這個小遊戲也可以用C語言來實現,在程序的編程上沒有VB語言方便實用,C語言和VB語言之間存在很多的***同點,雖然語法方面有點差異,但是在編程思路上完全壹樣,VB能夠實現很多C#不能做到的功能,如When語句、Optional參數、局部Static變量、對象實例訪問靜態方法、Handles綁定事件、On Error處理異常、Object直接後期綁定等等。VB和C#語言,編譯出來的是同樣的CIL,但為什麽VB支持很多有趣的特性呢。我們壹起來探究壹下。

4.21局部靜態變量

VB支持用Static關鍵字聲明局部變量,這樣在過程結束的時候可以保持變量的數值:

Public Sub Test1()

Static i As Integer

i += 1 '實現壹個過程調用計數器

End Sub

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

也就是說,i被改名作為壹個類的字段,但被冠以specialname。在代碼中試圖訪問$STATIC$Test1$2001$i是不可能的,因為它不是壹個有效的標識符。但是在IL中,將這個變量加壹的代碼卻與壹般的類字段完全壹樣,是通過ldfld加載的。我覺得這個方法十分聰明,把靜態變量變成生命周期壹樣的類字段,但是又由編譯器來控制訪問的權限,讓它成為壹個局部變量。同時也解釋了VB為什麽要用兩個不同的關鍵字來聲明靜態變量——Static和Shared。由於局部靜態變量的實質是類的字段,所以它和真正的局部變量還是有所不同的。比如在多線程條件下,對局部靜態變量的訪問就和訪問字段相同。

4.2.2Handles和WithEvents

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

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

4.2.3類型轉換運算符

在Visual Basic 2005中將加入壹個新的運算符——TryCast,相當於C#的as運算符。我壹直希望VB有這樣壹個運算符。VB目前的類型轉換運算符主要有CType和DirectCast。他們的用法幾乎壹樣。我詳細比較了壹下這兩個運算符,得出以下結論:

1.在轉換成引用類型時,兩者沒有什麽區別,都是直接調用castclass指令,除非重載了類型轉換運算符CType。DirectCast運算符是不能重載的。

2.轉換成值類型時,CType會調用VB指定的類型轉換函數(如果有的話),比如將String轉換為Int32時,就會自動調用。

4.2.4默認屬性和屬性參數

在原先的VB6裏,有壹項奇特的功能——默認屬性。在VB6中,對象的名稱可以直接表示該對象的默認屬性。

4.2.5可選參數和按名傳遞

VB從4.0開始支持“可選參數”這壹特性。就是說,函數或子程序的參數有些是可選的,調用的時候可以不輸入。其實VB從1.0開始就有壹些函數帶有可選參數,只不過到了4.0才讓用戶自己開發這樣的過程。在VB4裏,可選參數可以不帶默認值,而在VB裏,如果使用可選參數,則必須帶有默認值。在調用的時候,VB若發現參數被省略,則自動讀取.param部分的默認值,並顯式傳遞給過程。這壹部分完全由編譯器處理,而且沒有任何性能損失,和手工傳遞所有參數是完全壹樣的。至於按名傳遞,VB會自動調整參數的順序,其結果與傳統方式的傳遞也沒有任何的不同。這說明我們可以放心地使用這項便利。而且帶有可選參數的過程拿到C#中,頂多變成不可選參數,也不會造成什麽其他的麻煩。

PS.很多COM組件都使用了默認參數,而且有些過程的參數列表非常長,在VB裏可以輕松地處理它們,而在C#中經常讓開發者傳參數傳到吐血。

4.2.6在經過對比之後可得以下壹個結論:

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

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

3.學習C不能短期內見到成效。

4.據用戶調查69%的考生覺得VB更容易接受

致謝

在本次課程設計中,我從指導老師牛榮和李鵬身上學到了很多東西。老師認真負責的工作態度,嚴謹的治學精神和深厚的理論水平都使我收益匪淺。他無論在理論上還是在實踐中,都給與我很大的幫助,使我得到不少的提高這對於我以後的工作和學習都有壹種巨大的幫助,感謝他耐心的輔導。

另外,在遊戲開發過程中化希耀老師和杜義君老師也給於我們很大的幫助,幫助解決了不少的難點,使得遊戲能及時開發完成,還有所有的同學同樣給與我不少幫助,這裏壹並表示感。

能找到的就這些了,希望能給妳幫助.

  • 上一篇:交流伺服電機與直流伺服電機怎麽區別他們的功能和特點?
  • 下一篇:如何理解flash中的變量
  • copyright 2024編程學習大全網