為啥第二列的數字無法移動到第一列?
/*判斷是否有障礙物*/
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;
}
2020-10-16
感謝你的分享!我也是和你一樣的問題,愣了我好久?
2020-02-27
好迷……我把noBlockHorizonttal里的returntrue往外拉出一個括號就好了……但是測試的時候根本沒有運行if里面那個return false卻會返回false……