60行js代码实现俄罗斯方块


Posted in Javascript onMarch 31, 2015

这是我之前网上看到的,很牛逼的一位大神写的,一直膜拜中

<!doctype html><html><head></head><body>
<div id="box" style="width:252px;font:25px/25px 宋体;background:#000;color:#9f9;border:#999 20px ridge;text-shadow:2px 3px 1px #0f0;"></div>
<script>
var map=eval("["+Array(23).join("0x801,")+"0xfff]");
var tatris=[[0x6600],[0x2222,0xf00],[0xc600,0x2640],[0x6c00,0x4620],[0x4460,0x2e0,0x6220,0x740],[0x2260,0xe20,0x6440,0x4700],[0x2620,0x720,0x2320,0x2700]];
var keycom={"38":"rotate(1)","40":"down()","37":"move(2,1)","39":"move(0.5,-1)"};
var dia, pos, bak, run;
function start(){
  dia=tatris[~~(Math.random()*7)];
  bak=pos={fk:[],y:0,x:4,s:~~(Math.random()*4)};
  rotate(0);
}
function over(){
  document.onkeydown=null;
  clearInterval(run);
  alert("GAME OVER");
}
function update(t){
  bak={fk:pos.fk.slice(0),y:pos.y,x:pos.x,s:pos.s};
  if(t) return;
  for(var i=0,a2=""; i<22; i++)
    a2+=map[i].toString(2).slice(1,-1)+"<br/>";
  for(var i=0,n; i<4; i++)
    if(/([^0]+)/.test(bak.fk[i].toString(2).replace(/1/g,"\u25a1")))
      a2=a2.substr(0,n=(bak.y+i+1)*15-RegExp.$_.length-4)+RegExp.$1+a2.slice(n+RegExp.$1.length);
  document.getElementById("box").innerHTML=a2.replace(/1/g,"\u25a0").replace(/0/g,"\u3000");
}
function is(){
  for(var i=0; i<4; i++)
    if((pos.fk[i]&map[pos.y+i])!=0) return pos=bak;
}
function rotate(r){
  var f=dia[pos.s=(pos.s+r)%dia.length];
  for(var i=0; i<4; i++)
    pos.fk[i]=(f>>(12-i*4)&15)<<pos.x;
  update(is());
}
function down(){
  ++pos.y;
  if(is()){
    for(var i=0; i<4 && pos.y+i<22; i++)
      if((map[pos.y+i]|=pos.fk[i])==0xfff)
        map.splice(pos.y+i,1), map.unshift(0x801);
    if(map[1]!=0x801) return over();
    start();
  }
  update();
}
function move(t,k){
  pos.x+=k;
  for(var i=0; i<4; i++)
    pos.fk[i]*=t;
  update(is());
}
document.onkeydown=function(e){
  eval(keycom[(e?e:event).keyCode]);
};
start();
run=setInterval("down()",400);
</script></body></html>

以上所述就是本文的全部内容,希望大家能够喜欢。

Javascript 相关文章推荐
轻轻松松学JS调试(不下载任何工具)
Apr 14 Javascript
JS 控制小数位数的实现代码
Aug 02 Javascript
解析js原生方法创建表格效率测试
Jul 08 Javascript
jQuery中filter()和find()的区别深入了解
Sep 25 Javascript
setTimeout()与setInterval()方法区别介绍
Dec 24 Javascript
百度地图api如何使用
Aug 03 Javascript
AngularJS基础 ng-if 指令用法
Aug 01 Javascript
Javascript农历与公历相互转换的简单实例
Oct 09 Javascript
vscode下的vue文件格式化问题
Nov 28 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
Oct 30 Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
Nov 10 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
Mar 31 #Javascript
js实现的牛顿摆效果
Mar 31 #Javascript
JS动态显示表格上下frame的方法
Mar 31 #Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
Mar 31 #Javascript
jQuery选择器源码解读(八):addCombinator函数
Mar 31 #Javascript
JS显示表格内指定行html代码的方法
Mar 31 #Javascript
jQuery选择器源码解读(七):elementMatcher函数
Mar 31 #Javascript
You might like
PHP中改变图片的尺寸大小的代码
2011/07/17 PHP
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
js闭包实例汇总
2014/11/09 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
JS将时间秒转换成天小时分钟秒的字符串
2019/07/10 Javascript
layui树形菜单动态遍历的例子
2019/09/23 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
python从入门到精通(DAY 3)
2015/12/20 Python
python urllib爬取百度云连接的实例代码
2017/06/19 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
打架检讨书100字
2014/01/19 职场文书
小学生暑假感言
2014/02/06 职场文书
工作决心书范文
2014/03/11 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
毕业证丢失证明范本
2014/09/20 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
python基础之类属性和实例属性
2021/10/24 Python