首页
/
每日頭條
/
遊戲
/
俄羅斯方塊遊戲擺造型
俄羅斯方塊遊戲擺造型
更新时间:2024-12-28 03:36:51

我是會做遊戲也會教你做遊戲的小螞蟻,歡迎關注我,每天學點兒做遊戲的知識。

嗨!大家好,我是小螞蟻。今天我們繼續學習如何做一個俄羅斯方塊遊戲。

俄羅斯方塊遊戲擺造型(從零開始做一個俄羅斯方塊遊戲2:随機生成形狀)1

整個系列教程計劃按照這個流程圖開展,這也是我制作整個遊戲的過程,今天我們就來看一下“随機生成形狀”這個模塊。

創建形狀

想要實現随機的生成形狀,首先必須要知道在俄羅斯方塊中一共有多少種形狀(也就是我們上一節中留下的第二個問題)。

俄羅斯方塊遊戲擺造型(從零開始做一個俄羅斯方塊遊戲2:随機生成形狀)2

如圖,就是俄羅斯方塊中所有的 7 個形狀了,試着觀察一下這七個形狀有一個共同點。那就是每個形狀都是由 4 個小方塊組成,這是一個很重要的特征,這就意味着你隻需要 4 個小方塊,就可以通過調整擺放位置,構建出遊戲中的所有形狀了。

對于遊戲中的形狀來說,除了需要知道都有哪些之外,我們還需要另外一些信息,就是每一個形狀有多少“狀态”可以變換。

俄羅斯方塊遊戲擺造型(從零開始做一個俄羅斯方塊遊戲2:随機生成形狀)3

如圖,是 7 種形狀的變換,形狀 1~3 分别有 4 個狀态,形狀 4~6 分别有 2 個狀态,形狀 7 隻有 1 個狀态。

這裡我們把形狀的每一個不同的旋轉位置叫做一個“狀态”,以第 1 個形狀為例,它一共有 4 個狀态,第 1 個狀态是“T”型,第 2 個狀态就是第 1 個狀态以順時針旋轉 90 度,第 3 個狀态是第 2 個狀态以順時針旋轉 90 度,第 4 個狀态是第 3 個狀态以順時針旋轉 90 度。第 4 個狀态再以順時針旋轉 90 度,就回到了第 1 個狀态。整個狀态切換是一個首尾相接的循環過程,每一個狀态都是以上一個狀态為基礎,順時針旋轉 90 度。

你可以繼續觀察一下剩餘的其他形狀,看看每一個形狀的狀态是否都滿足上述的條件。

在确定了形狀之後,我們如何在遊戲中把它們構建出來呢?答案其實很簡單,直接拼出來就好了。

以第 1 個形狀為例,假設每一個小方塊的大小都是 50x50,以形狀的中心為坐标軸的中心,那麼很容易就可以計算出 4 塊小方塊的具體位置。

俄羅斯方塊遊戲擺造型(從零開始做一個俄羅斯方塊遊戲2:随機生成形狀)4

在得到了 4 個小方塊的位置之後,我們可以在微信小遊戲制作工具中将 4 個小正方形(50x50)打包到一個容器中,然後分别為它們設置到對應的位置上,這樣一個形狀就創建好了。

俄羅斯方塊遊戲擺造型(從零開始做一個俄羅斯方塊遊戲2:随機生成形狀)5

俄羅斯方塊遊戲擺造型(從零開始做一個俄羅斯方塊遊戲2:随機生成形狀)6

這裡注意一下,當我們将 4 個小方塊打包成容器“形狀1”之後,這個容器整體是一個矩形,中點位于矩形的中心,這個中心也表示容器“形狀1”的位置。例如,将“形狀1”容器設置到(0,0)的位置,實際上是容器的中心點位于 (0,0) 的位置(這個在後續計算中需要用到,這裡先了解一下)。

剩餘其它的幾個形狀也如此,可以先在紙上畫一下,計算出每個小方塊的位置,然後再在制作工具中創建出對應的形狀。

随機

形狀創建好了,接着我們來看一下如何進行随機。目前對于俄羅斯方塊的随機有很多種方式,這裡我們隻說一下其中的兩種,一種是最古老的随機,另一種是用的比較多的叫做“Bag7”的随機。

最古老的随機其實就是每次生成的方塊都是從 1~7 個形狀中随機的生成一個。由于每次生成都是随機的,所以有可能出現連續多次生成同一種形狀,或者連續很多次都不生成某一種形狀的情況,這些情況會導緻遊戲難度的增加。

這種随機很簡單,我們隻需要從 1~7 中,生成一個随機數,然後根據這個随機數生成指定的形狀即可。

俄羅斯方塊遊戲擺造型(從零開始做一個俄羅斯方塊遊戲2:随機生成形狀)7

後來,為了降低遊戲的難度,普遍采用了叫做“Bag7”的随機方法。就是生成一個由 1~7 的 7 個數字随機排序組成的包(列表或者數組),然後按照這個包中的排序生成形狀,生成 7 個形狀後,就再創建一個這樣的包,然後再繼續。

這種算法保證了同一個形狀最多隻能連續出現 2 次(前一個包的最後一個數,跟後一個包的第一個數相同)。同一個形狀最多隻能間隔 12 次不出現(前一個包的第一個數,跟後一個包的最後一個數相同)。

俄羅斯方塊遊戲擺造型(從零開始做一個俄羅斯方塊遊戲2:随機生成形狀)8

接着,我們來看一下“Bag7”随機算法的實現。首先,我們創建一個叫做“Bag7”的列表,這個列表中包含了 1~7 的 7 個數字。

俄羅斯方塊遊戲擺造型(從零開始做一個俄羅斯方塊遊戲2:随機生成形狀)9

接着來看一下積木邏輯。

俄羅斯方塊遊戲擺造型(從零開始做一個俄羅斯方塊遊戲2:随機生成形狀)10

微信小遊戲制作工具為我們提供了一個“将列表随機打亂”的積木塊,我們可以直接利用它來得到打亂了順序的列表(Bag7)。每當生成一個形狀後,就将變量“Bag7索引”增加 1,直到這個列表中的所有項遍曆完畢,然後再繼續生成下一個新的“Bag7"。

好了,今天的内容就到這裡了,稍微總結一下:我們了解了俄羅斯方塊中的 7 個形狀,以及每個形狀所包含的不同狀态,最後了解了兩種不同的随機算法

是不是有種“哇哦~”的感覺?這麼簡單的一個俄羅斯方塊遊戲竟然能夠包含這麼多的東西。所以說即使是一個小遊戲,隻要你用心研究,裡面也包含着很多可以學到的東西。更何況,我們的這個小遊戲才剛剛開始而已。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
Copyright 2023-2024 - www.tftnews.com All Rights Reserved