我是一只会玩游戏的小蚂蚁,会教你怎么玩游戏。欢迎关注我,每天学习一些打游戏的知识。
嗨!大家好,我是一只小蚂蚁。今天我们继续学习如何玩俄罗斯方块游戏。
整个系列教程都计划按照这个流程图进行,这也是整个游戏的制作过程。今天我们就来看看“随机生成形状”这个模块。
创建形状要随机生成形状,首先要知道俄罗斯方块里有多少个形状(也就是我们上一节留下的第二个问题)。
如图,俄罗斯方块里七种形状都有。试着观察这七种形状有一个共同点。就是每个形状都是由四个小方块组成的,这是一个很重要的特性,也就是说你只需要四个小方块,就可以调整放置位置。
游戏中的所有形状都已经构建好了。对于游戏中的形状,除了知道它们是什么以外,我们还需要一些其他的信息,即每个形状可以变化多少个“状态”。
如图,是七个形状的变换。形状1到3分别有四种状态,形状4到6分别有两种状态,形状7只有一种状态。这里我们称一个形状的每个不同的旋转位置为一个“状态”。以第一个形状为例。
它有四种状态,第一种状态是T型,第二种状态是第一种状态顺时针旋转90度,第三种状态是第二种状态顺时针旋转90度。
第四状态是顺时针旋转90度的第三状态。第四状态顺时针旋转90度,然后返回第一状态。整个状态切换从头到尾都是一个循环的过程,每个状态都是建立在前一个状态的基础上的。
顺时针旋转90度。可以继续观察其余的形状,看看每个形状的状态是否满足上述条件。在确定了形状之后,如何在游戏中进行构建呢?答案其实很简单,直接拼出来就行了。
以第一个形状为例,假设每个小方块的大小为50x50,形状的中心为坐标轴的中心,就可以很容易地计算出四个小方块的具体位置。
在得到四个小方块的位置后,我们可以在微信游戏制作工具中将四个小方块(50x50)打包成一个容器,然后分别设置到相应的位置,这样就创建了一个形状。
这里注意,当我们将四个小方块封装到容器“Shape 1”中时,整个容器是一个长方形,中点位于长方形的中心,这也表示了容器“Shape 1”的位置。例如,将“形状1”容器设置为(0,0)的位置,
其实容器的中心点在(0,0)的位置(后续计算需要用到这个,先了解一下)。其他形状也是如此。可以先在纸上画出来,计算出每个小方块的位置,然后在制作工具中创建相应的形状。
随机形状被创建,然后我们来看看如何随机化。目前,俄罗斯方块随机化的方法有很多种。这里只说其中的两个,一个是最古老的随机性,一个是叫做“Bag7”的。
最古老的随机性是每生成一个正方形,就从1 ~ 7个形状中随机生成。因为每次生成都是随机的,所以可能会出现同一形状连续多次生成,或者某个形状连续多次不生成的情况。
这些情况都会增加游戏的难度。这种随机性很简单。我们只需要生成一个从1到7的随机数,然后根据这个随机数生成指定的形状。
后来为了降低游戏难度,一般采用一种叫“Bag7”的随机方式。就是随机生成一个由1到7的7个数字组成的包(列表或数组),然后根据这个包里的排序生成形状。在生成7个形状后,
就再创建一个这样的包,然后再继续。这种算法保证了同一个形状最多只能连续出现2 次(前一个包的最后一个数,跟后一个包的第一个数相同)。同一个形状最多只能间隔12 次不出现(前一个包的第一个数,
跟后一个包的最后一个数相同)。
接着,我们来看一下“Bag7”随机算法的实现。首先,我们创建一个叫做“Bag7”的列表,这个列表中包含了17 的7 个数字。
接着来看一下积木逻辑。
微信小游戏制作工具为我们提供了一个“将列表随机打乱”的积木块,我们可以直接利用它来得到打乱了顺序的列表(Bag7)。每当生成一个形状后,就将变量“Bag7索引”增加1,
直到这个列表中的所有项遍历完毕,然后再继续生成下一个新的“Bag7'。好了,今天的内容就到这里了,稍微总结一下:我们了解了俄罗斯方块中的7 个形状,以及每个形状所包含的不同状态,
最后了解了两种不同的随机算法。是不是有种“哇哦”的感觉?这么简单的一个俄罗斯方块游戏竟然能够包含这么多的东西。所以说即使是一个小游戏,只要你用心研究,里面也包含着很多可以学到的东西。更何况,
我们的这个小游戏才刚刚开始而已。
标题:从零开始做一个俄罗斯方块游戏2:随机生成形状
链接:https://www.52hkw.com/news/rj/59278.html
版权:文章转载自网络,如有侵权,请联系删除!