MARSGGBO
2016-03-09 16:21
function moveLeft(){ if( canMoveLeft(board) ) //canMoveLeft()用于判断是否可以执行左移操作 //canMoveLeft()返回true,下面开始执行左移操作 //虽然已经确定可以移动了,但是我们还需进一步确定该移动到哪个位置 { for( var i = 0;i < 4;i++) for( var j = 1;j < 4;j++) } return false; } function canMoveLeft(board){ //元素是否可以左移需要满足如下情况的一种 //1.左右元素大小相等 //2.左边的格子为空,不含元素 for ( var i = 0 ; i < 4 ; i++ ) for ( var j = 1 ; j < 4 ; j++) if (board[i][j] != 0) if (board[i][j-1] == 0 || board[i][j-1] == board[i][j]) return true; return false; }
代码如上。moveLeft里的if( canMoveLeft(board) )语句调用canMoveLeft(board)函数后,假如canMoveLeft(board)中的for循环第一次就返回了true,那之后的循环还会继续吗?还有moveLeft和canMoveLeft中为什么都要for循环?一直没想明白。。这不是重复了吗?
第二个for循环是为了判断有一个数字可以向做移动的话,那么要遍历一下它所在行的所有元素是否和前一个数字相等或者前一个格子是否为空,所以这里要遍历要用for,判断数字位子,这个函数主要作用就是判断是否能向左移动;第一个for循环意思也一样也是遍历但是牵扯到算法,相同那么就相加,空格那么就前进;
不用判断了撒,可以左移就对了撒,左移的操作是其他函数函数操作
返回true后就跳出循环了,要判断每个元素是否可以左移就要循环撒
慕课网2048私人订制
70013 学习 · 588 问题
相似问题