为啥第二列的数字无法移动到第一列?
/*判断是否有障碍物*/
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;
}