为了账号安全,请及时绑定邮箱和手机立即绑定

为啥第二列的数字无法移动到第一列?

/*判断是否有障碍物*/
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;
}


正在回答

2 回答

感谢你的分享!我也是和你一样的问题,愣了我好久?

0 回复 有任何疑惑可以回复我~

好迷……我把noBlockHorizonttal里的returntrue往外拉出一个括号就好了……但是测试的时候根本没有运行if里面那个return false却会返回false……

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为啥第二列的数字无法移动到第一列?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信