為啥第二列的數(shù)字無法移動到第一列?
/*判斷是否有障礙物*/ function?noBlockHorizonttal(row,col1,col2,board)?{ ????for?(var?i=col1+1;i<col2;i++){ ????????if?(board[row][i]??!=0){ ????????????/*有障礙*/ ????????????return?false; ????????} ????????return?true; ????} }
第三第四列都能正常移動到第一列,但是第二列的數(shù)字在第一列為空的情況下也無法向左移動,檢查到第二列的數(shù)字移動時會判斷左邊有障礙物,即
noBlockHorizontal
函數(shù)返回了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; }
2020-10-16
感謝你的分享!我也是和你一樣的問題,愣了我好久?
2020-02-27
好迷……我把noBlockHorizonttal里的returntrue往外拉出一個括號就好了……但是測試的時候根本沒有運行if里面那個return false卻會返回false……