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

感觉moveLeft()的最内层循环应该用break来终止

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 && noBlockHorizontal(i, k, j, board)){

                        //为0并且从j列到k列过程中都没有障碍物

                        //move

                        showMoveAnimation(i, j, i, k);     //移动动画

                        board[i][k] = board[i][j];

                        board[i][j] = 0;

                        break;          //这里!

                    }

                    else if(board[i][k] == board[i][j] && noBlockHorizontal(i, k, j, board)){

                        //move

                        showMoveAnimation(i, j, i, k);

                        //add

                        board[i][k] += board[i][j];

                        board[i][j] = 0;

                        break;

                    }

                }

            }

        }

    }


--

这里老师用了continue,但其实不加continue也会继续向下循环。而这里在i,j这个位置的元素要向左移动,如果我可以移动到最左端,我就不需要再判定中间能否移动到了,也就是说可以终止循环变量为k的这个小循环。

正在回答

举报

0/150
提交
取消

感觉moveLeft()的最内层循环应该用break来终止

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