60行代码俄罗斯方块
<!doctype html><html><head><style type="text/css">
body { background:#000; font:25px/25px 宋体;}
#box { float:left;width:252px;border:#999 20px ridge;color:#9f9;text-shadow:2px 3px 1px #0f0; }
#info { float:left;color:#cfc;padding:24px; }
#next { padding:8px;width:105px;color:#9f9;text-shadow:2px 3px 1px #0f0; }
</style></head><body>
<div id="box"></div><div id="info">NEXT:<div id="next"></div><div id="text"></div></div>
<script type="text/javascript">
var map=eval_r("["+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 char={x:"\u3000",s:"\u25a0",t:"\u25a1"};
var keycom={"38":"rotate(1)","40":"down()","37":"move(2,1)","39":"move(0.5,-1)","32":"0;pause=!pause"};
var dia, pos, bak, run, next, pause=false, info={speed:1,lines:0,score:0};
function start(){
dia=next.d;
bak=pos={fk:[],y:0,x:4,s:next.s};
nextdia();
document.getElementByIdx_x("next").innerHTML=(next.d[next.s%next.d.length]|0x10000).toString(2).slice(-16).replace(/..../g,"$&<br/>").replace(/1/g,char.t).replace(/0/g,char.x);
document.getElementByIdx_x("text").innerHTML="SCORE:"+info.score+"<br/><br/>LINES:"+info.lines+"<br/><br/>SPEED:"+info.speed;
rotate(0);
run=setInterval("pause||down()",~~(Math.pow(1.3,12-info.speed)*30+20));
}
function over(){
document.οnkeydοwn=null;
alert("GAME OVER");
}
function nextdia(){
next={d:tatris[~~(Math.random()*7)],s:~~(Math.random()*4)};
}
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,char.t)))
a2=a2.substr(0,n=(bak.y+i+1)*15-RegExp.$_.length-4)+RegExp.$1+a2.slice(n+RegExp.$1.length);
document.getElementByIdx_x("box").innerHTML=a2.replace(/1/g,char.s).replace(/0/g,char.x);
}
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, r=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);
++info.lines ==0 && info.speed++, r++;
}
clearInterval(run);
if(map[1]!=0x801) return over();
info.score+=~~(Math.pow(r,1.5)*10)+2;
start();
}
update();
}
function move(t,k){
pos.x+=k;
for(var i=0; i<4; i++)
pos.fk[i]*=t;
update(is());
}
document.οnkeydοwn=function(e){
eval_r("pause||"+keycom[(e?e:event).keyCode]);
};
nextdia();
start();
</script></body></html>
转载于:https://www.cnblogs.com/liuzhuqing/archive/2013/05/02/7480539.html
60行代码俄罗斯方块相关推荐
- 直击面试现场:神级程序员仅100秒,60行代码写出俄罗斯方块,成为全公司焦点!...
小编我今天逛论坛看到一位HR帖子直播公司面试情况,该公司是做棋牌APP的,现在正在招聘前端工程师和运营人员,HR直播的是前端这块的,有写游戏的也有做网站项目的,写特效的都有很多,但是这位HR却看上了一 ...
- python居然能语音控制电脑壁纸切换,只需60行代码
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 家在日常的电脑使用中,都会有自己喜爱类型的桌面 单纯的桌面有时候会让人觉得单调 今天,就由我带领大家只用60行代码打造一款语音壁纸切换器程序, 让大家能够 ...
- 菜鸟最爱,60行代码打造一款音乐播放器!
点上方"菜鸟学Python",选择"星标" 第467篇原创干货,第一时间送达 大家好,我是菜鸟哥! 对于小伙伴们来说,在日常的学习和工作中,很多人都喜欢边听音乐 ...
- GameBuilder开发游戏应用系列之60行代码实现FlappyBird
在线演示:http://osgames.duapp.com/apprun.html?appid=osgames1-911422256817006 在线编辑:http://osgames.duapp.c ...
- Win10下 60行代码实现多线程PDF转Word 运行错误摘要
代码下载:https://github.com/python-fan/pdf2word 资料整合来源: https://www.imooc.com/qadetail/181211 https://zh ...
- 60行代码出炫酷效果之 python语音控制电脑壁纸切换
前言 大家早好.午好.晚好吖 ❤ ~欢迎光临本文章 电脑大家有吧!手大家有吧!今天!! 就由我带领大家用区区60行代码打造一款语音壁纸切换器程序!!! 单纯的桌面有时候会让人觉得单调,那么~ 让大家能 ...
- python房子代码_基于python的链家小区房价爬取——仅需60行代码!
简介 首先打开相关网页(北京链家小区信息). 注意本博客的代码适用于爬取某个城市的小区二手房房价信息. 如果需要爬取其他信息,可修改代码,链家的数据获取的基本逻辑都差不多. 效果展示 因为只需要60行 ...
- 短短60行代码搞定鸿蒙“二维码扫描”功能!
开发者(KaiFaX) 面向全栈工程师的开发者专注于前端.Java/Python/Go/PHP的技术社区 可以实现的效果就是打开摄像头扫描一张二维码图片然后显示二维码里面的内容,看个视频一睹为快吧(界 ...
- python爬取南京市房价_基于python的链家小区房价爬取——仅需60行代码
简介 首先打开相关网页(北京链家小区信息). 注意本博客的代码适用于爬取某个城市的小区二手房房价信息. 如果需要爬取其他信息,可修改代码,链家的数据获取的基本逻辑都差不多. 效果展示 因为只需要60行 ...
最新文章
- 自动驾驶开发云平台业务分析
- 机器学习(1)机器学习基础 鸢尾花数据集
- P2207 Photo
- 字符数组的初始化与赋值
- Wind的实时行情API使用
- matlab波特率,波特率定义及波特率计算公式小结
- r73750h和i79750h哪个好
- 帝国栏目导航点击显示不同样式的实现
- StarRocks 社区一周年:极速统一,感谢遇见!
- ES6—46:class中getter和setter的设置方法
- 实现电脑文件自动同步到FTP
- zzzfun网站连接不上服务器,ZzzFun
- IPv4 Type of Service服务类型(TOS)字段
- 【Java】JVM内存回收
- gsoc 任务_我在GSoC'20中进行编码的第三周
- 演讲比赛流程管理---C++
- 服务器虚拟化有哪些方面,服务器虚拟化技术有哪些
- 四级英语黄金词组及常用15个句型
- 求chen混沌系统仿真程序
- unity3d_颜色转换器