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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

<!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>

时间: 2024-09-09 12:36:08

60行js代码实现俄罗斯方块的相关文章

统计有多少行JS代码和ASP代码

js|统计 计算当前文件夹中,有多少行JS代码和ASP代码,并且还可统计代码有多少字节有示例代码 [复制此代码]CODE:<% '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ '\\ '\\    来自 codeproject.com '\\    计算js和asp代码 '\\    修改 bluedestiny '\\    mail:bluedestiny at 126.com '\\ '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

小工具:计算当前文件夹中,有多少行JS代码和ASP代码,并且还可统计代码有多少字节

js|统计 计算当前文件夹中,有多少行JS代码和ASP代码,并且还可统计代码有多少字节 有示例代码 <%'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\\'\\    from codeproject.com'\\    calculate code'\\    bluedestiny'\\    mail:bluedestiny at 126.com'\\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ opt

统计有多少行JS代码和ASP代码,并有多少字节

js|统计    计算当前文件夹中,有多少行JS代码和ASP代码,并且还可统计代码有多少字节      有示例代码      <%   '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\   '\\   '\\ 来自 codeproject.com   '\\ 计算js和asp代码   '\\ 修改 bluedestiny   '\\ mail:bluedestiny at 126.com   '\\   '\\\\\\\\\\\\\\\\\\\\\\\\\

统计有多少行JS代码和ASP代码_ASP CLASS类

计算当前文件夹中,有多少行JS代码和ASP代码,并且还可统计代码有多少字节有示例代码 复制代码 代码如下: <% '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ '\\ '\\    来自 codeproject.com '\\    计算js和asp代码 '\\    修改 bluedestiny '\\    mail:bluedestiny at 126.com '\\ '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

不到30行JS代码实现Excel表格的方法_javascript技巧

本文实例讲述了不到30行JS代码实现Excel表格的方法,可见jQuery并非不可替代.分享给大家供大家参考.具体分析如下: 某国外程序员展示了一个由原生JS写成不依赖第三方库的,Excel表格应用,有以下特性: ① 由不足30行的原生JavaScript代码实现 ② 不依赖第三方库 ③ Excel风格的语义分析 (公式以 "=" 开头) ④ 支持任意表达式 (=A1+B2*C3) ⑤ 防止循环引用 ⑥ 基于localStorage的自动本地持久化存储 效果展示如下图所示: 代码分析:

18 行 JS 代码编一个倒时器

有时候在生活中,你需要一个JavaScript倒计时时钟,而不是一个末日装置设备.不管你是否有一次约会,销售.促销.或者游戏,你可以受益于使用原生JavaScript构建一个时钟,而不是拿到一个现成的插件.虽然有许多很棒的时钟插件,但如果使用原生 JavaScript 实现,那你将得到以下好处: 代码将是轻量级的,因为它没有依赖关系. 你的网站会表现得更好,因为你不需要加载外部脚本和样式表. 你将会有更高的可控性,因为你将按照想要的时钟行为的方式来创建它(而不是找一个趋向你想法的插件). 所以事

让浏览器崩溃的12行JS代码(DoS攻击分析及防御)_javascript技巧

Ajax与pjax AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新-无刷新操作. 但是,ajax应用也会造成另外的问题,容易导致浏览器无法前进与后退,这是个很头疼的问题,开发人员必须增加工作量(比如通过一个隐藏的iframe,或者改变location.ha

让Visual Studio 也支持JS代码折叠

有两种方法,第一种是设置宏,第二种是软件. 1:宏   - - - 前言       Visual Studio的代码折叠功能非常好用,#region #endregion 这个词连搜狗的词库里面都出现了(不含'#'号),可见使用频率很高,但是他不支持js的代码折叠 : ( 最近Ext用得比较多,一写就是上百行JS代码,非常不方便,想着自己写个扩展或插件什么的,意外搜到了下面的文章,已经用宏来实现了,本文可以理解为该文的简单译本,注意宏代码部分我有所改动 : ) 文章       1.     

让Visual Studio 也支持JS代码折叠 [ Visual Studio | #region | #endregion ]

前言       Visual Studio的代码折叠功能非常好用,#region #endregion 这个词连搜狗的词库里面都出现了(不含'#'号),可见使用频率很高,但是他不支持js的代码折叠 : ( 最近Ext用得比较多,一写就是上百行JS代码,非常不方便,想着自己写个扩展或插件什么的,意外搜到了下面的文章,已经用宏来实现了,本文可以理解为该文的简单译本,注意宏代码部分我有所改动 : )   文章       1.      Using #region Directive With Ja