60行代码:Javascript 写的俄罗斯方块游戏
哈哈这个实在是有点意思
备受打击当初用java各种类写的都要几百行啦
先看效果图:

游戏结束图:

javascript实现源码:
- <!doctype html>
- <html><head><title>俄罗斯方块</title>
- <meta name="Description" content="俄罗斯方块Javascript实现">
- <meta name="Keywords" content="俄罗斯方块,Javascript,实现,短小精悍,游戏,ithomer,ithomer.net">
- </head><body>
- <div id="box" style="margin: 20px auto; text-align:center; width:252px;font:25px/25px 宋体;background:#000;color:#9f9;border:#999 20px ridge;text-shadow:2px 3px 1px #0f0;"></div>
- <div id="footer" style="margin-top: 200px auto; text-align:center; font-size: 16px;">© 2009 - 2014 All Rights by <a href="http://blog.ithomer.net">ithomer.net</a></div>
- <script>
- var domain="***";
- var author="zuidaima";
- 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>
原文: http://blog.ithomer.net/2014/05/60-lines-of-code-the-small-javascript-written-in-russia-block-game/
版权声明:本文为博主原创文章,未经博主允许不得转载。
60行代码:Javascript 写的俄罗斯方块游戏的更多相关文章
- 【转】shell脚本写的俄罗斯方块游戏
亲测一个很好玩的shell脚本写的俄罗斯方块游戏,脚本来自互联网 先来讲一下思维流程 一.方块的表示 由于shell不能定义二维数组,所以只能用一维数组表示方块,俄罗斯方块主要可以分为7类,每一类方块 ...
- Python 写一个俄罗斯方块游戏
使用 Python 的 PyGame 库写一个俄罗斯方块游戏的逐步指南 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人 ...
- 60行自己动手写LockSupport是什么体验?
60行自己动手写LockSupport是什么体验? 前言 在JDK当中给我们提供的各种并发工具当中,比如ReentrantLock等等工具的内部实现,经常会使用到一个工具,这个工具就是LockSupp ...
- 3行代码,为QQ轻游戏加上语音互动能力
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云 发表于云+社区专栏 游戏和社交往往有着密不可分的关系,QQ轻游戏就是一款集成在手Q里面的游戏平台,直接通过手Q入口就能随开 ...
- 用C写的俄罗斯方块游戏 By: hoodlum1980 编程论坛
/************************************ * Desc: 俄罗斯方块游戏 * By: hoodlum1980 * Email: jinfd@126.com * Dat ...
- 280行代码:Javascript 写的2048游戏
2048 原作者就是用Js写的,一直想尝试,但久久未动手. 昨天教学生学习JS代码.最好还是就做个有趣的游戏好了.2048这么火,是一个不错的选择. 思路: 1. 数组 ,2维数组4x4 2. 移动算 ...
- javascript写贪吃蛇游戏(20行代码!)
<!doctype html> <html> <body> <canvas id="can" width="400" ...
- JavaScript写一个拼图游戏
拼图游戏的代码400行, 有点多了, 在线DEMO的地址是:打开: 因为使用canvas,所以某些浏览器是不支持的: you know: 为什么要用canvas(⊙o⊙)? 因为图片是一整张jpg或 ...
- 1000行代码徒手写正则表达式引擎【1】--JAVA中正则表达式的使用
简介: 本文是系列博客的第一篇,主要讲解和分析正则表达式规则以及JAVA中原生正则表达式引擎的使用.在后续的文章中会涉及基于NFA的正则表达式引擎内部的工作原理,并在此基础上用1000行左右的JAVA ...
随机推荐
- C++中一个0xC0000005访问冲突问题
在冯.诺依曼结构CPU(如i386,ARM A8,A9)的保护模式或者哈佛结构(如8051, ARM M0,.. M3)的CPU下,C++编译器将放置常量的内存设置为只读模式或者放入只读内存中,如果出 ...
- 使用cmd时cd命令失效
使用cmd时cd命令失效 近日使用cmd时总是出现无法cd到指定目录的情况 如下图所示 输入cd命令后依旧停留在原始路径 解决方法: 输入 cd D:\CE-5\Training_Sanple\n ...
- 【Mac】解决「另一个活跃的 Homebrew 进程正在进行中」问题
问题描述 在安装 tesseract 的语言包时,由于网络下载速度太慢,我按下 ctrl + z 退出了安装,当再次输入安装命令时,系统报错如下: 解决方法 使用以下命令删除 homebrew 进程锁 ...
- 安装xml2js出现npm ERR! code E404 npm ERR! 404 Not Found: event-stream@3.3.6
原因是npm源指向的问题 执行: npm config set registry https://registry.npmjs.org/
- 一道hive面试题(窗口函数)
表student中的数据格式如下: name month degree s1 201801 As1 201802 As1 201803 Cs1 201804 As1 201805 As1 201806 ...
- 20145207《Java程序设计》实验二(Java面向对象程序设计)实验报告
<Java程序设计>实验二(Java面向对象程序设计)实验报告 目录 改变 Java面向对象程序设计实验要求 实验成果 课后思考 改变 看了下之前实验二的整体,很搞笑,大图+代码,没了.. ...
- 【SQLSERVER】服务挂起解决办法
一. 问题描述:某项SQLSERVER服务,运行状态为“正在挂起更改”,导致该服务无法使用,也不能启动.停止.重新启动. 二.解决方法 方法一:从任务管理器 → 进程 (勾上 显示所有用户进程) → ...
- 13 tcp3次握手 4次释放 mac和ip 访问百度的过程
1.mac地址和ip地址的不同 (传棒棒糖) 需求:192.168.1.1 ping 192.168.2.1 1):获取默认的网关mac地址 2)寻找下一个网关的mac地址 3)mac地址在变,寻找 ...
- RHCSA-day4
硬盘分区 1.硬盘的物理组成 硬盘实际上是由很多的盘片.磁臂.磁头与主轴马达所组成的. 那么实际的数据当然是写在具有磁性物质的盘片上了.数据的读写主要是通过在磁臂上的磁头来完成的.实际运转时,主轴马达 ...
- Luogu2183【国家集训队】礼物
题面 题解 易得答案为 $$ \sum_{i=1}^m\binom{n-\sum_{j=1}^{i-1}w_j}{\sum_{j=1}^iw_j} $$ 扩展$\text{Lucas}$即可 代码 # ...
