监听左右上下移动代码
这个版本的暂时没有做手机端的,只做了pc端,后续会优化
主要解释向左移动:
首先就遇到一个能否左移动的问题,向左移动,就从第一行开始循环,循环到最后一行,在这个循环内部,因为是向左移动,所以最左边的那一列是不参与判断的,所以列数从1开始循环,截止第3列。如果当前这个格的数值如果是0就进行下一步循环,如果不是0,就进行判断,看这格的数值与他左边的那个数字是否相等 或者 他左边的数字是否为0(因为在程序中如果为0就代表这一格为空)满足条件就跳出循环直接返回true. 如果循环完全结束没有符合条件的就返回 false
向左移动正式函数:
再看moveLeft函数,这一点有点绕,我想了很久明白了,根绝这个左移动自然就不难写出其他的移动函数,
左移动:
从第一行开始循环,循环内部从
第二列开始循环,判断这一格数字是否为0,如果为空则进入下一列循环,否则就从第一列到目前这列之间开始循环,由于行数是确定的是i行,这个循环里面我用k表示循环里的当前列,如果当前循环列这个格数字不为0,(这里外层有一个判断条件即board[i][j] !== 0,这里一定要搞清楚不要混淆),同时还有一个条件就是i 行的 k 列和i列之间没有障碍,这里通过一个函数来判断,(k<j),只需循环这两列之间的格格,只要这个循环的当前值不登录0说明这两列之间有障碍,返回false,否则返回 true,返回true时候就把board[i][k]=board[i][j]; 同时把board[i][j] =0;
如果当前循环列这个数字与外层循环的那个格格相同的时候,并且这两列之间没有障碍物,数值就相加,即加倍
这里有一个函数用来判断某行的某一列到另一列之间是否有空间(左移动自然是水平方向)
从某一个位置到另一个位置做一个动画
其余的上,下,右移动效果自然出现了