思路
先想一下,什么时候会发生碰撞?与什么东西发生碰撞?
移动方块值为1,围墙值3,固定方块值为2,
那么我们需要判定方块所在的16个格子是否会发生碰撞
16个格子只检测移动方块(值为1)的下方是否为固定方块(值为2),如果是就固定,如果不为2就继续移动。
检测算法有点类似于数据结构中的串的BF匹配算法,双重循环简单粗暴
(一)检测碰撞
新建一个IsCanMove函数,3个布尔类型返回值默认值为1,最后返回是否会发生碰撞
遍历地图矩阵,条件IsLoc缩小范围到16个元素,x去掉一头一尾,Y去掉末尾,目的去掉围墙部分
在三个移动操作中使用分支语句
在设置向下移动之前需要对前面的FixBlocks函数进行一下拆分
将条件放入新的函数Tobottom中执行
同时替换Move函数中的FixBlocks函数为Tobottom
最后我们在向下移动函数中,分支为假执行固定方块并重置方块
不出意外的话,现在的方块已经能够在地图中下落,自由移动和堆叠了,马上就要竣工了