如何做一个俄罗斯方块7:下落处理

简介: 下落处理”也是俄罗斯方块游戏循环中的最后一个环节,因为“下落处理”结束后,就又进入到了下一个新的循环中。与之前一样,我们先来看一下什么时候需要进行“下落处理”“下落处理”是在消除完成之后进行的,消除完成之后,上方的未被消除的方块会下落,直到碰到下方的其它方块或者是第一行为止。

嗨!大家好,我是小蚂蚁。今天我们继续来学习俄罗斯方块中的下一个环节:下落处理。

“下落处理”也是俄罗斯方块游戏循环中的最后一个环节,因为“下落处理”结束后,就又进入到了下一个新的循环中。


与之前一样,我们先来看一下什么时候需要进行“下落处理”。

如图,“下落处理”是在消除完成之后进行的,消除完成之后,上方的未被消除的方块会下落,直到碰到下方的其它方块或者是第一行为止。


将当前的游戏抽象成数据表格再来看一下。

我们试着根据数据表格重新描述一下下落的过程:从表格最下方的第一行开始,逐行向上遍历检查,如果当前行是消除行,就直接跳过这一行。如果当前行不是消除行,就将当前行插入到新的表格中,直到检查到最上方的一行为止。


可能不太容易理解,我们用图片来演示一下整个下落的处理过程。

如图,形状停靠后第 1,3 行将会被消除,我们就以当前的这种情况来演示一下下落处理的过程。

最终,右侧的这个新的表格,就是下落处理之后的数据表格。以上就是整个下落处理的过程了,你可以对照着这个流程图再次理解一下整个下落过程。


在获得了新的表格之后,剩下的就只需要重新的调整一下方块的位置即可。


接下来,看一下整个下落处理的积木逻辑。



这里你可能发现了,我并没有创建一个“新的表格”,上方图片中的“新的表格”只是方便我们理解整个下落处理过程,实际的逻辑中只需要知道当前的行需要插入到新表格中的哪一行(下落行号)即可,我们使用了两个列表来记录了需要进行移动处理的方块的索引,以及它对应的需要移动到的新位置的索引。


接着,来看一下填充方块上的“下落处理”逻辑。



逻辑很简单,看一下自己需不需要移动,需要的话就找到移动的目的地,然后将自己移动过去。另外,在移动前将自己数据表格中相应位置的数据设置为 0 ,移动后再将数据表格中相应位置的数据设置为 1。


最后,预览一下场景,看一下下落的处理。



消除完成后,剩余的方块会进行下落处理,然后移动到自己的新位置上。


至此,整个俄罗斯方块游戏的整个流程我们就都讲完了,俄罗斯方块作为消除游戏的鼻祖,其中的很多原理和机制都被应用在了后续的各种消除类型的游戏中。如果你对做一个消除游戏感兴趣的话,那么俄罗斯方块作为上手研究的开始绝对是一个不错的选择。


Jesse Schell在《游戏设计艺术》的前言中说过这样的一句话:令经典游戏好玩的原理,与令现代游戏好玩的原理一模一样。研究透这个经典的俄罗斯方块游戏,不论是在游戏开发上还是游戏设计上,对于游戏开发者来讲,或许都会有一定的帮助吧!


俄罗斯方块游戏模版已上架小蚂蚁的小商店,项目工程搭配着系列教程一起学习,定能事半功倍,有需要的朋友可以点击下方链接,前往小商店购买。

另外,我的俄罗斯方块小游戏已上架微信小游戏平台,欢迎点击下方的小程序卡片体验,无需下载安装,即点即玩。

经典掌机罗斯方块

经典俄罗斯方块。

小程序




我是会做游戏也会教你做游戏的小蚂蚁,想学习做游戏的话,关注我的公众号就对啦!

相关文章
|
4月前
|
算法 JavaScript Java
html+css+js实现打砖块小游戏
html+css+js实现打砖块小游戏
73 0
|
12月前
|
小程序 搜索推荐 开发者
谈谈宝石方块游戏中的设计
宝石方块是在上一个俄罗斯方块工程的基础上改编的,所以制作起来很快,我只用了不到两天的时间就完成了游戏的功能,后续又花了几天的时间制作游戏的界面,优化游戏的体验。
108 0
|
12月前
|
数据挖掘 开发者
关于泡泡龙游戏的一点儿总结,以及分享一个好方法
游戏是一种虚拟的产品,它很难被量化,也很难像工厂流水线生产实体产品一样的去生产。因为其中涉及到的情况太多太杂,如何衡量一个游戏的体量?怎样的游戏算是大游戏,怎样的游戏算是小游戏呢?如何判断一个游戏是做完了还是没有做完呢?如何衡量一个游戏开发者的水平呢?……等等等等。这里面的每一个因素都是一个变量,这么多的无法确定的变量合在一起,想要得到一个确定的结果,很显然是不太可能的。
106 0
|
12月前
|
定位技术 开发者
如何做一个俄罗斯方块游戏(一)
从今天开始,我将开启一个新的游戏,并且顺带着会写一个新的系列教程,这个游戏就是人人都知道的——俄罗斯方块。 我一直都在做消除类型的游戏,在所有消除类型的游戏里,俄罗斯方块可以称得上是“鼻祖”了,所以,不论怎样这个系列里都不能少的了它。
103 0
|
12月前
|
算法 索引 容器
如何做一个俄罗斯方块游戏(二)
嗨!大家好,我是小蚂蚁。今天我们继续学习如何做一个俄罗斯方块游戏。整个系列教程计划按照这个流程图开展,这也是我制作整个游戏的过程,今天我们就来看一下“随机生成形状”这个模块。想要实现随机的生成形状,首先必须要知道在俄罗斯方块中一共有多少种形状(也就是我们上一节中留下的第二个问题)。
126 0
|
12月前
|
小程序
如何做一个俄罗斯方块6:形状停靠
在处理形状停靠之前,有一点儿东西需要了解,就是已经停靠的方块和正在下落的方块不是一种方块,如图,红色的表示的是已经停靠的方块,绿色的表示下落的绿色方块的作用是展示当前下落的形状,红色方块的作用是标识出哪些位置已经摆放了方块。
86 0
|
12月前
|
开发工具
如何做一个俄罗斯方块4:形状碰撞检测(上)
在游戏开发中,我们所说的“碰撞”经常指的是物理碰撞,什么是物理碰撞呢?一般的在游戏开发工具中都会包含一个叫做“物理引擎”的东西,它的作用就是在游戏中模拟出现实中的物理效果。例如,我们扔一个东西,这个东西会因为重力而下落,最终落到地上,与地面发生碰撞。在游戏中,我们可以借助物理引擎,来模拟出东西下落掉到地面上的效果。当东西掉到地面上时,我们就说这个东西与地面发生了碰撞。
274 0
|
12月前
如何做一个俄罗斯方块5:形状碰撞检测(下)
其实,两侧的碰撞判断跟我们上一节讲过的向下移动的碰撞判断原理是一样的,向下碰撞检测的是每一个方块下方的位置是否有其它方块,那么向左/右碰撞检测的就是每个方块左/右侧的位置是否有其他的方块。
278 0
|
12月前
|
索引
消除游戏中宝石下落的原理和实现
在消除游戏中,发生消除之后,会留下空白位置。此时,如果上方有其它的宝石,那这些宝石就会下落填充空白位置。今天我们就来了解一下宝石下落的方法以及实现。
130 0
|
12月前
|
图形学
如何做出好看的粒子效果
嗨!大家好,我是小蚂蚁。 微信小游戏制作工具提供了简单的粒子插件,使用起来简单明了(如果你用过Unity的粒子组件就知道这个有多简单明了了),虽然功能相对简单,可设置的属性也有限,但是我们仍然能够用它在游戏中做出漂亮的效果。 比如说在彩虹星球大冒险中,所有的爆炸都是使用的粒子效果来实现的。
97 0

相关实验场景

更多