//函数定义键盘移动
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 ;
}
相关分类