//函数定义键盘移动function moveLeft(){ //判断移动条件 if(!canMoveLeft(board)) return false; //moveLeft 有空间可以移动 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)){ //move showMoveAnimation(i,j,i,k); board[i][k]=board[i][j]; board[i][j]=0; continue; } 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; continue; } } } } //设置移动视图时间 setTimeout("updateBoardView()",200); return true;}//函数定义键盘移动function moveRight(){ //判断移动条件 if(!canMoveRight(board)) return false; //moveRight 有空间可以移动 for(var i=0;i<4;i++) for(var j=2;j>=0;j--){ if(board[i][j]!=0){ //与移动方向的数字相同 for(var k=3;k>j;k--){ if(board[i][k]==0 && noBlockHorizontal(i,j,k,board)){ //move showMoveAnimation(i,j,i,k); board[i][k]=board[i][j]; board[i][j]=0; continue; } else if(board[i][k]==board[i][j]&& noBlockHorizontal(i,j,k,board)){ //move显示动画 showMoveAnimation(i,j,i,k); //add一个数字 board[i][k]*=2; board[i][j]=0; continue; } } } } //设置移动视图时间 setTimeout("updateBoardView()",200); return true;}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这下面的实现不了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*///函数定义键盘移动function moveUp(){ //判断移动条件 if(!canMoveUp(board)) return false; //moveUp有空间可以移动 for(var j=0;j<4;j++) for(var i=1;i<4;i++){ if(board[i][j]!=0){ //与移动方向的数字相同 for(var k=0;k<i;k++){ if(board[k][j]==0 && noBlockHorizontal(j,k,i,board)){ //move showMoveAnimation(i,j,k,j); board[k][j]=board[i][j]; board[i][j]=0; continue; } else if(board[k][j]==board[i][j]&& noBlockHorizontal(j,k,i,board)){ //move显示动画 showMoveAnimation(i,j,k,j); //add一个数字 board[k][j]+=board[i][j]; board[i][j]=0; continue; } } } } //设置移动视图时间 setTimeout("updateBoardView()",200); return true;}//函数定义键盘移动function moveDown(){ //判断移动条件 if(!canMoveDown(board)) return false; //moveDown有空间可以移动 for(var j=0;j<4;j++) for(var i=2;i>=0;i--){ if(board[i][j]!=0){ //与移动方向的数字相同 for(var k=3;k>i;k--){ if(board[k][j]==0 && noBlockHorizontal(j,k,i,board)){ //move showMoveAnimation(i,j,k,j); board[k][j]=board[i][j]; board[i][j]=0; continue; } else if(board[k][j]==board[i][j]&& noBlockHorizontal(j,k,i,board)){ //move显示动画 showMoveAnimation(i,j,k,j); //add一个数字 board[k][j]+=board[i][j]; board[i][j]=0; continue; } } } } //设置移动视图时间 setTimeout("updateBoardView()",200); return true;}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这里面是否有错~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*///函数定义键盘可以移动时矩形function canMoveLeft(board){ for(var i=0;i<4;i++) for(var j=1;j<4;j++) if(board[i][j]!=0) if(board[i][j-1]==0 || board[i][j-1]==board[i][j]) return true; return false; }//函数定义键盘可以移动时矩形function canMoveRight(board){ for(var i=0;i<4;i++) for(var j=2;j>=0;j--) if(board[i][j]!=0) if(board[i][j+1]==0 || board[i][j+1]==board[i][j]) return true; return false; }//函数定义键盘可以移动时矩形function canMoveUp(board){ for(var j=0;j<4;j++) for(var i=1;i<4;i++) if(board[i][j]!=0) if(borad[i-1][j]==0 || board[i-1][j]==board[i][j]) return true; return false; }//函数定义键盘可以移动时矩形function canMoveDown(board){ for(var j=0;j<4;j++) for(var i=2;i>=0;i--) if(board[i][j]!=0) if(borad[i+1][j]==0 || board[i+1][j]==board[i][j]) return true; return false; }//函数定义左右阻挡物动画效果function noBlockHorizontal(row,col1,col2,board){ for(var i=col1+1 ; i<col2;i++) if(board[row][i]!=0) return false; return true ;}//函数定义上下阻挡物动画效果function noBlockVertical(col,row1,row2,board){ for(var i=row1+1 ; i<row2;i++) if(board[i][col]!=0) return false; return true ;}
添加回答
举报
0/150
提交
取消