按left后,数字不能移动到第一列,数字不能相加

来源:3-4 交互逻辑调试

xuxianxiu

2016-10-21 00:44


$(document).keydown(function(event){

switch(event.keyCode){

case 37:

if(moveLeft()){

generationOneNumber();

}

   break;

case 38:

if(moveUp()){

generationOneNumber();

}   

   break;

case 39:

if(moveRight()){

generationOneNumber();

}

   break;

case 40:

if(moveDown()){

generationOneNumber();

}

   break;

default:

   break;

}

})



function moveLeft(){

if(!canMoveLeft(board)){

return false;

}

else{

//move left

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 && noBlockHorizen(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] && noBlockHorizen(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 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;

}

else {

return false;

}

}

}

}

}


function noBlockHorizen(row,rol1,rol2,board){

for(var l=rol1+1;l<rol2;l++){

if(board[row][l]!=0){

return false;

}

else{

return true;

}

}

}


写回答 关注

2回答

  • qq_涸泽之鱼相濡以沫_0
    2016-12-20 16:44:37

    我也遇到这种问题,一直left后数字会斜着2,3,4行不会到最左边,请问你解决了么?


  • 柠檬萌不萌
    2016-10-22 20:02:50

    建议您去下载源码,对照一下

    共 2 条回复 >

慕课网2048私人订制

慕课网这款“2048私人订制”通过大神老的讲解学习到游戏结构的开发

70013 学习 · 588 问题

查看课程

相似问题