我们在alpha版本中基本完成了鼠标操作,并且把游戏进程推到了进程2,接下来尝试完成游戏的消除统计部分,对于消除的逻辑,博主一开始是使用了一个计数器,用于统计相同方块的数量,先把方块推入列表,下一块方块或下二块方块出现不同方块时,重置计数器,把之前推入的列表项删除。如果此时计数器已经大于等于3,那就把刚添加的项保留在列表中。
听起来很繁琐,恩恩,实践起来也非常麻烦,所以改成了上图这样,横向检测的情况下,仅检测第2排至倒数第2排的方格,如果其前后方格都等于自身,就加入删除列表。连续4个相同的时候添加项会有重复,不过反正被删除一次或是删除两次,其结果是相同的。
重新梳理一下游戏的进程,当前我们完成了鼠标动作,当鼠标移动方块时流程进入流程2,有消除的情况,我们修改流程为0,进入检验消除检验消除的循环,一直到掉落的方块不产生新的消除项,把流程设置为1,把控制权交还用户。
横向检测是否有消除项的积木块;
纵向检测是否有消除项的积木块;
最后根据删除列表的项目数,我们来引导游戏的流程。
这一节我们又增加了几个变量,一个删除列表,2个计数器,一个命名为得分记录的变量。请注意验证消除前的一块等待0秒
的积木,因为我们通过生成克隆体,由克隆体来填充数据列表,所以在列表没有填充完整前,程序能获取到的可能都是一连串的0,这会导致消除统计这个流程获取到错误的数据,所以我们需要阻塞一下这个流程,等待数据填充完毕,再行统计。