| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 俄罗斯方块游戏开发教程2:随机生成形状 -> 正文阅读 |
|
[Python知识库]俄罗斯方块游戏开发教程2:随机生成形状 |
嗨!大家好,我是小蚂蚁。今天我们继续学习如何做一个俄罗斯方块游戏。 整个系列教程计划按照这个流程图开展,这也是我制作整个游戏的过程,今天我们就来看一下“随机生成形状”这个模块。 创建形状想要实现随机的生成形状,首先必须要知道在俄罗斯方块中一共有多少种形状(也就是我们上一节中留下的第二个问题)。 如图,就是俄罗斯方块中所有的 7 个形状了,试着观察一下这七个形状有一个共同点。那就是每个形状都是由 4 个小方块组成,这是一个很重要的特征,这就意味着你只需要 4 个小方块,就可以通过调整摆放位置,构建出游戏中的所有形状了。 对于游戏中的形状来说,除了需要知道都有哪些之外,我们还需要另外一些信息,就是每一个形状有多少“状态”可以变换。 如图,是 7 种形状的变换,形状 1~3 分别有 4 个状态,形状 4~6 分别有 2 个状态,形状 7 只有 1 个状态。
你可以继续观察一下剩余的其他形状,看看每一个形状的状态是否都满足上述的条件。 在确定了形状之后,我们如何在游戏中把它们构建出来呢?答案其实很简单,直接拼出来就好了。 以第 1 个形状为例,假设每一个小方块的大小都是 50x50,以形状的中心为坐标轴的中心,那么很容易就可以计算出 4 块小方块的具体位置。 在得到了 4 个小方块的位置之后,我们可以在微信小游戏制作工具中将 4 个小正方形(50x50)打包到一个容器中,然后分别为它们设置到对应的位置上,这样一个形状就创建好了。 这里注意一下,当我们将 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 个形状,以及每个形状所包含的不同状态,最后了解了两种不同的随机算法。 是不是有种“哇哦~”的感觉?这么简单的一个俄罗斯方块游戏竟然能够包含这么多的东西。所以说即使是一个小游戏,只要你用心研究,里面也包含着很多可以学到的东西。更何况,我们的这个小游戏才刚刚开始而已。? 我是会做游戏也会教你做游戏的小蚂蚁,欢迎关注微信公众号【小蚂蚁教你做游戏】,领取更多学习做游戏的原创教程资料,每天学点儿游戏开发知识。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 11:49:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |