在面试的时候被面试官问道2048的实现思路,以下是总结。
2048小游戏思路
1、初始化,在空格子中产生两个2,4的随机数。
(1)封装生成随机数方法,将min + Math.round((max-min) * Math.random())封装为getRandom(min,max)方法,该方法接受两个值,最大值max和最小值min,getRandom方法是获取[min,max]之间的一个随机数;
(2)封装生成随机数,放入空格子中的方法createFunc(),首先生成两个随机的[0,3]之间的随机数,锁定一个格子的横纵坐i,j,即i=getRandom(0,3),j=getRandom(0,3),然后判断arr[i][j]中的值是否为空,为空则随机生成一个2或4,放入该空格子中即arr[i][j]=getRandom(1,2)2;若判断arr[i][j]中有数值,则遍历arr数组值判断棋盘是否满了,如果没有满则再次执行createFunc()方法;
(3)封装初始化方法initFunc(),将44的table中的每个cell赋予固定的id,id=‘i’+‘j’,arr数组值赋为空,调用两次createFunc()方法,在table中随机的cell中生成两个2或4;
2、监听键盘向上/下/左/右,封装监听方法monitorFunc(),监听输入的上下左右按键的keyCode,以上按键为例子(keyCode=38),首先至上到下遍历数组(如果是下按键,则至下到上遍历),然后需要一个指针q(在n*n中,指针的范围0~n-1),指针指向格子的上方,用i