为啥第二列的数字无法移动到第一列?
/*判断是否有障碍物*/ function noBlockHorizonttal(row,col1,col2,board) { for (var i=col1+1;i<col2;i++){ if (board[row][i] !=0){ /*有障碍*/ return false; } return true; } }
第三第四列都能正常移动到第一列,但是第二列的数字在第一列为空的情况下也无法向左移动,检查到第二列的数字移动时会判断左边有障碍物,即
noBlockHorizontal
函数返回了false。
其他代码:
function moveLeft() { if (!canMoveLeft(board)){ return false; } for( var i = 0 ; i < 4 ; i ++ ) { for (var j = 1; j < 4; j++) { if (board[i][j] != 0) { for (var k=0;k<j;k++){ if (board[i][k] == 0 && noBlockHorizonttal(i,k,j,board)) { /*如果可以移到左边*/ //move showMove(i,j,i,k); board[i][k] = board[i][j]; board[i][j]=0; continue; } else if (board[i][k] ==board[i][j] &&noBlockHorizonttal(i,k,j,board)) { /*如果可以合并到左边*/ //move showMove(i,j,i,k); //add board[i][k] += board[i][j]; board[i][j]=0; continue; }else{ alert("i="+i+",j="+j+",k="+k+",board1="+board[i][j]+"board2="+board[i][k]); if(noBlockHorizonttal(i,k,j,board)){ alert("yes"); }else{ alert("no"); } } } } } } updateBoardView(); return true; }