前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >280行代码:Javascript 写的2048游戏

280行代码:Javascript 写的2048游戏

作者头像
阳光岛主
发布2019-02-18 15:40:57
1.5K0
发布2019-02-18 15:40:57
举报
文章被收录于专栏:米扑专栏米扑专栏

2048 原作者就是用Js写的,一直想尝试,但久久未动手。

昨天教学生学习JS代码。不妨就做个有趣的游戏好了。2048这么火,是一个不错的选择。

思路:

1. 数组 ,2维数组4x4

2. 移动算法,移动后有数字的对齐,无数字(我用的0,但不显示)补齐。

移动前

移动后(注意程序合并了第一行2个2,并产生了新的2)

移动算法分2步:

第一步骤:移动

第二步骤:合并

移动代码参考:

[html] view plaincopy

  1. function left(t,i)  
  2. {  
  3.   var j;  
  4.   var len = t[i].length;  
  5.   for (j=0;j<len-1;j++)  
  6.     {  
  7.       if (t[i][j] == 0 && t[i][j+1] != 0)  
  8.       {  
  9. temp = t[i][j];  
  10.         t[i][j] = t[i][j+1];  
  11.         t[i][j+1] = temp;  
  12.         left(t,i);  
  13.       }  
  14.     }  
  15. }  

合并代码参考:

[html] view plaincopy

  1. function lcombine(a,i)  
  2. {  
  3.   var len = a[i].length;  
  4.   for(var j=0;j<len-2;j++)  
  5.   {  
  6.     if (a[i][j] == a[i][j+1])  
  7.     {  
  8.       a[i][j] *=2;  
  9.       a[i][j+1] = 0;  
  10.       left(a,i);  
  11.       break;  
  12.     }  
  13.   }  
  14. }  

3.显示

显示部分CSS来源 2048源作者程序。

显示代码:

[html] view plaincopy

  1. function display_div ()  
  2. {  
  3.   var i,j;  
  4.   var n = "#d";  
  5.   for (i = 0 ;i < 4 ;i++)  
  6.   {  
  7.     for(j=0;j<4;j++)  
  8.     {  
  9.       if (a[i][j] !=0)  
  10.         $(n+(i*4+j)).html("<div class='tile tile-"+a[i][j]+"'><div class='tile-inner'>"+a[i][j]+"</div></div>");  
  11.       else  
  12.         $(n+(i*4+j)).html("");  
  13.     }  
  14.   }  
  15. }  

这段代码是把数组内容显示到  4x4表格内。

源代码及在线演示:http://jsbin.com/biximuho/6/edit

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年05月31日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档