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

2048游戏为什么无法实现左移动 求解

2048游戏为什么无法实现左移动 求解

慕粉4240002 2017-11-15 21:57:07
<!DOCTYPE html><html><head><meta charset='GBK'><title></title><script>window.onload=newGame;var board=new Array();function newGame(){  init();  generateNumber();  generateNumber();}function init(){ for(var i=0;i<4;i++){  for(var j=0;j<4;j++){     var grid=document.getElementById('grid-'+i+'-'+j);     console.log(grid);     grid.style.position='absolute';     grid.style.cssText='left:'+(20+120*j)+'px;'+'top:'+(20+120*i)+'px';     console.log(grid.style.left);   }}for(var i=0;i<4;i++){    board[i]=new Array();    for(var j=0;j<4;j++){    board[i][j]=0;    console.log('2');}}  numberCell();}function numberCell(){    var gridContent=document.getElementById('gridContent');      for(var i=0;i<4;i++){      for(var j=0;j<4;j++){     var content=document.createElement('div');    content.id='gridcontent-'+i+'-'+j;    content.className='contentClassName';    gridContent.appendChild(content);    console.log(content.id);   var numbercell=document.getElementById('gridcontent-'+i+'-'+j);    console.log(numbercell);     if(board[i][j]==0){  numbercell.style.width='0px';    numbercell.style.height='0px';    numbercell.style.top=(20+120*i)+'px';    numbercell.style.left=(65+120*j)+'px';}else{    numbercell.style.width='100px';    numbercell.style.height='100px';    numbercell.style.top=(20+120*i)+'px';    numbercell.style.left=(20+120*j)+'px';        numbercell.style.backgroundColor=getBackground(board[i][j]);    numbercell.style.color=getColor(board[i][j]);    numbercell.innerText=board[i][j];}}}}function getColor(number){    if(number<=4){       return 'black'; return 'white';}}function getBackground(number){    switch(number){    case 2:return 'blue';break;    case 4:return 'green';break;    case 8:return 'pink';break;    case 16:return 'red';break;    }    return black;}function generateNumber(){     if(nospace(board))     return false;     ranX=parseInt(Math.floor(Math.random()*4));     ranY=parseInt(Math.floor(Math.random()*4));     while(true){     if(board[ranX][ranY]==0)     break;     ranX=parseInt(Math.floor(Math.random()*4));     ranY=parseInt(Math.floor(Math.random()*4));}    var ranNum=Math.random()<0.5?2:4;        board[ranX][ranY]=ranNum;    showAnimate(ranX,ranY,ranNum);   return true;     }function showAnimate(x,y,num){        var numberCell=document.getElementById('gridcontent-'+x+'-'+y);       numberCell.style.backgroundColor=getBackground(num);    numberCell.style.color=getColor(num);    numberCell.innerText=num;   numberCell.style.width='100px';    numberCell.style.height='100px';    numberCell.style.top=(20+120*x)+'px';    numberCell.style.left=(20+120*y)+'px';}function nospace(board){     for(var i=0;i<4;i++){     for(var j=0;j<4;j++){     if(board[i][j]==0)     return false;     return true;}}}document.onkeydown=function(e){    e=e||window.event;    console.log(e);    switch(e.keyCode){    case 37:         if(moveLeft()){         console.log(e.keyCode);         generateNumber();       }        break;    case 38:         if(moveUp()){         generateNumber();         isgameover();}          break;    case 39:         if(moveRight){         generateNumber();         isgameover();}         break;    case 40:          if(moveDown){          generateNumber();          isgameover();}          break;}}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++){         console.log(board[i][k]);         if(board[i][k]==0&&noBlock(i,k,j,board)){                  showNumberWithAnimate(i,j,i,k);         board[i][k]=board[i][j];                  board[i][j]=0;                 continue;}else if(board[i][k]==board[i][j]&&noBlock(i,k,j,board)){                  /*showNumberWithAnimate(i,j,i,k);*/         board[i][k]+=board[i][j];         board[i][j]=0;                 continue;}}}}}         numberCell();         return true;         console.log(board);}function moveRight(board){ if(!canMoveright){ return false; } 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=0;j<3;j++){ if(board[i][j]!=0){ if(board[i][j+1]==0||board[i][j]==board[i][j+1]){ return true; } return false; } } } }function noBlock(row,col1,col2,board){      for(var i=col1;i<col2;i++){      if(board[row][i]!=0){      return false;}      return true;}}function showNumberWithAnimate(fromx,fromy,toyx,toyy){    var cell=document.getElementById('gridcontent-'+fromx+'-'+fromy);        cell.style.top=(20+120*toyx)+'px';    cell.style.left=(20+120*toyy)+'px';    }</script></head>
查看完整描述

1 回答

?
Stardust1001

TA贡献261条经验 获得超78个赞

为什么case37里没有isgameover

查看完整回答
反对 回复 2017-11-23
  • 1 回答
  • 0 关注
  • 1085 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信