从零开始做一个俄罗斯方块游戏2:随机生成形状

从零开始做一个俄罗斯方块游戏2:随机生成形状

我是会做游戏也会教你做游戏的小蚂蚁,欢迎关注我,每天学点儿做游戏的知识。

嗨!大家好,我是小蚂蚁。今天我们继续学习如何做一个俄罗斯方块游戏。

整个系列教程计划按照这个流程图开展,这也是我制作整个游戏的过程,今天我们就来看一下“随机生成形状”这个模块。

创建形状

想要实现随机的生成形状,首先必须要知道在俄罗斯方块中一共有多少种形状(也就是我们上一节中留下的第二个问题)。

如图,就是俄罗斯方块中所有的 7 个形状了,试着观察一下这七个形状有一个共同点。那就是每个形状都是由 4 个小方块组成,这是一个很重要的特征,这就意味着你只需要 4 个小方块,就可以通过调整摆放位置,构建出游戏中的所有形状了。

对于游戏中的形状来说,除了需要知道都有哪些之外,我们还需要另外一些信息,就是每一个形状有多少“状态”可以变换。

如图,是 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 个形状为例,假设每一个小方块的大小都是 50×50,以形状的中心为坐标轴的中心,那么很容易就可以计算出 4 块小方块的具体位置。

在得到了 4 个小方块的位置之后,我们可以在微信小游戏制作工具中将 4 个小正方形(50×50)打包到一个容器中,然后分别为它们设置到对应的位置上,这样一个形状就创建好了。

这里注意一下,当我们将 4 个小方块打包成容器“形状1”之后,这个容器整体是一个矩形,中点位于矩形的中心,这个中心也表示容器“形状1”的位置。例如,将“形状1”容器设置到(0,0)的位置,实际上是容器的中心点位于 (0,0) 的位置(这个在后续计算中需要用到,这里先了解一下)。

剩余其它的几个形状也如此,可以先在纸上画一下,计算出每个小方块的位置,然后再在制作工具中创建出对应的形状。

随机

形状创建好了,接着我们来看一下如何进行随机。目前对于俄罗斯方块的随机有很多种方式,这里我们只说一下其中的两种,一种是最古老的随机,另一种是用的比较多的叫做“Bag7”的随机。

最古老的随机其实就是每次生成的方块都是从 1 7 个形状中随机的生成一个。由于每次生成都是随机的,所以有可能出现连续多次生成同一种形状,或者连续很多次都不生成某一种形状的情况,这些情况会导致游戏难度的增加。

这种随机很简单,我们只需要从 1 7 中,生成一个随机数,然后根据这个随机数生成指定的形状即可。

后来,为了降低游戏的难度,普遍采用了叫做“Bag7”的随机方法。就是生成一个由 1 7 的 7 个数字随机排序组成的包(列表或者数组),然后按照这个包中的排序生成形状,生成 7 个形状后,就再创建一个这样的包,然后再继续。

这种算法保证了同一个形状最多只能连续出现 2 次(前一个包的最后一个数,跟后一个包的第一个数相同)。同一个形状最多只能间隔 12 次不出现(前一个包的第一个数,跟后一个包的最后一个数相同)。

接着,我们来看一下“Bag7”随机算法的实现。首先,我们创建一个叫做“Bag7”的列表,这个列表中包含了 1 7 的 7 个数字。

接着来看一下积木逻辑。

微信小游戏制作工具为我们提供了一个“将列表随机打乱”的积木块,我们可以直接利用它来得到打乱了顺序的列表(Bag7)。每当生成一个形状后,就将变量“Bag7索引”增加 1,直到这个列表中的所有项遍历完毕,然后再继续生成下一个新的“Bag7″。

好了,今天的内容就到这里了,稍微总结一下:我们了解了俄罗斯方块中的 7 个形状,以及每个形状所包含的不同状态,最后了解了两种不同的随机算法。

是不是有种“哇哦 ”的感觉?这么简单的一个俄罗斯方块游戏竟然能够包含这么多的东西。所以说即使是一个小游戏,只要你用心研究,里面也包含着很多可以学到的东西。更何况,我们的这个小游戏才刚刚开始而已。

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年8月6日 06:09
下一篇 2022年8月6日 06:09

相关推荐

  • 请问秀儿是你吗什么梗

    简要回答 秀儿是你吗这句话其实没有贬义的含义,这句话的意思是形容内容有趣,优秀的意思。 现在很多人喜欢刷视频,所以很多人会拍一些视频供大家观看,有些观看者会在下面评论,有些人会评论…

    2022年11月27日
  • dnf一键拾取(dnf一键拾取是全图的吗)

    今天小编给各位分享dnf一键拾取的知识,其中也会对dnf一键拾取是全图的吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! dnf如何一键拾取物品 dnf一键…

    2022年11月27日
  • 《宝可梦朱紫》3天销量破千万(宝可梦朱紫3天销量破千万了)

    开局只能选一种御三家,不能同时拥有全部这是游戏设计的剧情不能更改的。 已经偷跑了宝可梦朱紫将于11月18日正式发售,而目前已有实体卡带偷跑御三家进化型终于在泄露了,新叶喵站了起来,…

    2022年11月27日
  • 【周末玩什么】3天销量破千万的《宝可梦 朱/紫》,为何被评价为“又烂又好”

    本周推荐《宝可梦 朱/紫》和《第七境》。 本月18号《宝可梦 朱/紫》全球发售。截至发稿日,本作的MC媒体均分从79分跌至75分,玩家评分更是只有可怜的2.9分。发售之初,国内关于…

    2022年11月27日
  • 微软表示:《GTA6》预计将于2024年发售

    微软表示:《GTA6》预计将于2024年发售 近日,微软在回应英国竞争与市场管理局(CMA)调查其收购动视暴雪时提到,《GTA6》预计将在2024年发售。 “备受期待的《GTA6》…

    2022年11月26日
  • 英雄联盟手游好玩吗(英雄联盟手游好玩还是端游好玩)

    简要回答 非常好玩,英雄联盟手游这款游戏已经正式的进行公测,这款游戏是以5v5为模式进行对战的,它是以英雄联盟端游为原型进行开发,里面的每一种玩法基本都沿袭了端游的特点。 01 这…

    2022年11月25日
  • 游戏平台有哪些(游戏平台有哪些)

    简要回答 游戏平台指的是多人通过互联网在线游戏的平台,例如qq游戏,联众世界,浩方电竞平台,VS竞技游戏平台等,只要你下载平台,下载相关游戏,就能实现对战,摆脱了局域网的限制。 详…

    2022年11月25日
  • 好玩的塔防游戏(好玩的单机塔防手机游戏)

    简要回答 对于游戏爱好者来说塔防游戏并不陌生,毕竟很多人一开始玩的就是塔防游戏,比如大家都知道的植物大战僵尸,而且如今植物大战僵尸还在大家的视野里面,很多博主也会用植物大战僵尸玩很…

    2022年11月25日
  • 2022金摇杆奖公布:《艾尔登法环》独中四元,成为最大赢家

    2022金摇杆奖全部奖项已经公布,现象级热门大作《艾尔登法环》拿下最佳多人游戏,评论家玩家选择奖,最佳多人游戏,年度终极游戏等四项大奖,成为本次2022金摇杆奖的最大赢家。完整的获…

    2022年11月25日
  • 《光遇》11月25日红石在哪里 11.25红石位置

    光遇11月25日的红石出现在霞谷圆梦村,许多小伙伴都还不知道它具体在哪,下面就让小编来给大家介绍一下光遇11.25红石的位置,感兴趣的小伙伴快来看看吧。 光遇11.25红石位置 1…

    2022年11月25日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息