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 相关文章推荐
跟着JQuery API学Jquery 之二 属性
Apr 09 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
Apr 15 Javascript
让html页面不缓存js的实现方法
Oct 31 Javascript
AngularJS初始化过程分析(引导程序)
Dec 06 Javascript
实例详解AngularJS实现无限级联动菜单
Jan 15 Javascript
去除字符串左右两边的空格(实现代码)
May 12 Javascript
jQuery点击导航栏选中更换样式的实现代码
Jan 23 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
Jun 11 Javascript
js实现鼠标拖拽多选功能示例
Aug 01 Javascript
JavaScript实现修改伪类样式
Nov 27 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
Jul 19 Javascript
React更新渲染原理深入分析
Dec 24 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
getimagesize获取图片尺寸实例
2014/11/15 PHP
PHP解析RSS的方法
2015/03/05 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
js计算页面刷新的次数
2009/07/20 Javascript
javascript hasFocus使用实例
2010/06/29 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
python实现360的字符显示界面
2014/02/21 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
python selenium firefox使用详解
2019/02/26 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
python3 自动打印出最新版本执行的mysql2redis实例
2020/04/09 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
html Table 表头固定的实现
2019/01/22 HTML / CSS
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
幼师专业求职推荐信
2013/11/08 职场文书
环境建设实施方案
2014/03/14 职场文书
节约用水的口号
2014/06/20 职场文书
2015年重阳节主持词
2015/07/04 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python