2048左移JAVA代码实现,2048游戏为什么无法实现左移动 求解

window.οnlοad=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.οnkeydοwn=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

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

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';

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值