如何做一个俄罗斯方块6:形状停靠

简介: 在处理形状停靠之前,有一点儿东西需要了解,就是已经停靠的方块和正在下落的方块不是一种方块,如图,红色的表示的是已经停靠的方块,绿色的表示下落的绿色方块的作用是展示当前下落的形状,红色方块的作用是标识出哪些位置已经摆放了方块。

嗨!大家好,我是小蚂蚁。今天我们继续来看下一个流程:形状停靠。

什么是形状停靠呢?就是当一个形状碰撞到任何一个已有的方块或者碰撞到下边界时,它就应该被停放在那里。

在处理形状停靠之前,有一点儿东西需要了解,就是已经停靠的方块和正在下落的方块不是一种方块,如图,红色的表示的是已经停靠的方块,绿色的表示下落的方块。


绿色方块的作用是展示当前下落的形状,红色方块的作用是标识出哪些位置已经摆放了方块。


整个停靠的过程是这样的:当形状发生碰撞后,我们在当前形状对应的方块位置上创建一个新的方块,创建完新的方块之后,再将当前的这个形状移除。

如果你看了之前的教程,对于数据抽象和表格的遍历有了一定的了解,那么这里就很容易了。

当形状发生碰撞后,首先计算出当前形状的的“计算点”在整个数据表格中的行号列号,然后从“计算点”所在的行列号开始,依次遍历当前状态数据表格中的每一项,如果当前数据为 1 ,就在这个位置处创建一个新的方块,直到当前状态的数据表格遍历完成为止。最后,再将这个形状删除。

其中还涉及到行列号和位置的换算,公式在上面,就不再解释了。这个换算将表面上的游戏世界和背后的看不见数据表格连接起来,其实真正的计算和逻辑处理都是以背后的数据表格为基础的,背后的工作完成之后,再将得到的结果展现到游戏的界面上。


接下来,我们就来看一下形状停靠的逻辑实现。由于形状只在下方发生碰撞时才进行停靠,所以,我们只需要处理向下移动的逻辑即可。



方块填充的函数。



创建一个新的“填充方块”用于填充,为了区分两种方块,这里我将填充方块设置为绿色。



再来看一下“填充方块”的积木逻辑。



逻辑很简单,根据行号和列号设置自己在游戏世界中的位置,然后再在整个数据表格中自己对应的位置处设置为 1,表示当前的这个位置已经有方块填充了。


最后,我们来预览一下。



一个形状停靠之后,在它的各个方块的位置上创建了新的绿色填充方块,填充完成后,原有的白色形状被删除了,这个就是“形状停靠”的过程了。


你是否疑惑为什么这里要用两种方块呢?在形状的停靠过程中使用同一个方块不行吗?为什么要把原来的删除掉,再去创建新的方块呢?


之所以这么做是要把不同方块的职责划分清楚。构成形状的方块不需要任何的逻辑,它只是用于拼凑出当前的形状。而填充的方块需要处理后续的很多事情,例如消除处理,下落处理等。所以,我们使用两种方块,一种方块没有逻辑,只用于表现,一种方块包含逻辑,用于后续的各种处理。这样每种方块只需要专心的处理自己的职责即可,无需了解其它的事情。


小蚂蚁的俄罗斯方块小游戏已经上线,致敬经典,欢迎体验。

经典掌机罗斯方块

致敬经典

小程序




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

相关文章
|
4月前
俄罗斯方块游戏开发实战教程(6):形状停靠
俄罗斯方块游戏开发实战教程(6):形状停靠
21 0
|
4月前
|
索引
消除游戏中图标下落的原理和实现
消除游戏中图标下落的原理和实现
17 1
|
4月前
俄罗斯方块游戏开发实战教程(5):形状碰撞检测(下)
俄罗斯方块游戏开发实战教程(5):形状碰撞检测(下)
30 1
|
4月前
|
开发工具
俄罗斯方块游戏开发实战教程(4):形状碰撞检测(上)
俄罗斯方块游戏开发实战教程(4):形状碰撞检测(上)
40 1
编程中保护眼睛的颜色
编程中保护眼睛的颜色
|
11月前
如何做一个俄罗斯方块5:形状碰撞检测(下)
其实,两侧的碰撞判断跟我们上一节讲过的向下移动的碰撞判断原理是一样的,向下碰撞检测的是每一个方块下方的位置是否有其它方块,那么向左/右碰撞检测的就是每个方块左/右侧的位置是否有其他的方块。
278 0
|
11月前
|
开发工具
如何做一个俄罗斯方块4:形状碰撞检测(上)
在游戏开发中,我们所说的“碰撞”经常指的是物理碰撞,什么是物理碰撞呢?一般的在游戏开发工具中都会包含一个叫做“物理引擎”的东西,它的作用就是在游戏中模拟出现实中的物理效果。例如,我们扔一个东西,这个东西会因为重力而下落,最终落到地上,与地面发生碰撞。在游戏中,我们可以借助物理引擎,来模拟出东西下落掉到地面上的效果。当东西掉到地面上时,我们就说这个东西与地面发生了碰撞。
274 0
|
11月前
如何做一个俄罗斯方块3:形状控制
今天,我们来继续学习和实现下一个模块:玩家控制形状。在俄罗斯方块游戏中,玩家可以对下落的形状进行控制,控制分为两种,一种是控制形状的移动(左,右,下),一种是控制形状的旋转(顺时针旋转 90 度)。
102 0
|
11月前
|
小程序 开发者 索引
如何做一个俄罗斯方块7:下落处理
下落处理”也是俄罗斯方块游戏循环中的最后一个环节,因为“下落处理”结束后,就又进入到了下一个新的循环中。 与之前一样,我们先来看一下什么时候需要进行“下落处理”“下落处理”是在消除完成之后进行的,消除完成之后,上方的未被消除的方块会下落,直到碰到下方的其它方块或者是第一行为止。
146 0
|
11月前
|
小程序 搜索推荐 开发者
谈谈宝石方块游戏中的设计
宝石方块是在上一个俄罗斯方块工程的基础上改编的,所以制作起来很快,我只用了不到两天的时间就完成了游戏的功能,后续又花了几天的时间制作游戏的界面,优化游戏的体验。
108 0