`

史上最短小精悍的javascript编写的俄罗斯方块游戏,仅仅60行代码

阅读更多

转:http://www.zuidaima.com/share/1759652641295360.htm

直接上效果图:

俄罗斯方块

通过左右下控制方向,上改变形状。

game over

<!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 domain="www.zuidaima.com";
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>

 

分享到:
评论

相关推荐

    最短的javascript编写俄罗斯方块仅仅60行代码

    史上最短小精悍的javascript编写的俄罗斯方块游戏,仅仅60行代码

    史上最短小精悍的javascript编写的俄罗斯方块游戏

    史上最短小精悍的javascript编写的俄罗斯方块游戏,只用了60行代码,绝对值得学习

    俄罗斯方块js代码

    俄罗斯方块js代码,短小精悍,大家互相学习一下

    俄罗斯方块(java)

    总的来说,通过编写"俄罗斯方块"游戏,我们可以深入理解Java中的类、对象、继承、多态等核心概念,同时也能锻炼到事件处理、图形用户界面设计以及游戏逻辑的实现能力。这是一个很好的实战项目,对于提升Java编程技能...

    清洁代码Javascript

    综上所述,《清洁代码JavaScript》涵盖了从基础的命名约定到高级的设计模式和性能优化等多个方面,旨在提升JavaScript开发者编写高质量代码的能力。通过不断学习和实践这些知识点,开发者可以创建出更健壮、可维护的...

    用javascript编写的第一人称射击游戏

    短小精悍,但是不支持IE,FireFox下可用:1) Canvascape 2) MSX Emulator 3) Unreal Soccer 4) Plasma Demo 5) An Arkanoid clone

    游戏编程精粹1 pdf和源代码

    这本书通过一系列短小精悍的文章,为读者提供了一系列实用的技术和经验分享,旨在帮助初学者和有经验的开发者提升游戏编程技能。提供的PDF文件包含了完整的书籍内容,而源代码文件则让读者能够直接查看和学习书中...

    游戏编程精粹1+源代码

    这本书通过一系列短小精悍的文章,展示了游戏设计与编程的精髓,旨在帮助读者掌握核心概念并激发创新思维。结合提供的源代码,读者能够更直观地理解书中所述的技术和方法。 1. **游戏引擎基础**:书中可能涉及了...

    C++编写的通讯录源代码

    在代码设计上,遵循良好的编程实践也很重要,这包括使用有意义的变量名、编写清晰的注释、保持函数短小精悍以及适当的模块化设计。这些都有助于代码的可读性和维护性。 总之,这个C++编写的通讯录源代码提供了学习...

    二十个C++经典程序附源代码

    "俄罗斯方块"游戏需要理解图形界面编程,可以使用SDL或SFML库,或者更底层的OpenGL。游戏逻辑涉及事件处理、图形变换和定时器。 "坦克大战"通常涉及到更复杂的图形编程和碰撞检测,可能需要使用游戏开发框架,如 ...

    程序精灵——短小精悍的实用代码

    数组是C/C++中最基本的数据结构之一,常用于存储一系列相同类型的数据。下面的代码展示了数组的一些基本操作,包括初始化、遍历、查找最大最小值、求和以及更复杂的处理逻辑。 #### 数组遍历 ```cpp int main1() { ...

    JavaScript在网页美化中的基本应用.pdf

    JavaScript短小精悍,运行在客户机上,提高了网页的浏览速度和交互能力。 二、JavaScript的基本应用 JavaScript在网页中的使用非常简单,有两种方法: 1. 在网页代码中添加“&lt;script language="JavaScript"&gt;”...

    JavaScript 代码规范

    JavaScript 代码规范是编程实践中非常重要的一个环节,它旨在提高代码质量、可读性、可维护性和团队协作效率。在JavaScript开发中,遵循一套统一的编码规范能够帮助开发者避免不必要的误解,减少错误,并且使代码更...

    适用于JavaScript的Clean Code概念.zip

    在编程领域,Clean Code(整洁代码)是一种编程实践,它强调编写可读性高、可维护性强、易于理解的代码。对于JavaScript这种广泛应用于前端和后端开发的动态语言来说,掌握Clean Code的概念尤为重要。本资料包围绕...

    用Jscript编写的人民币小写转大写代码。

    在描述中提到的“短小精悍”的代码,通常意味着这段代码非常简洁,但功能强大。这样的代码通常具有很高的代码复用性和可维护性。人民币小写转大写的功能,其核心在于将数字字符串(如"123456.78")转换为对应的中文...

    贪吃蛇游戏 短小精悍

    《贪吃蛇游戏:短小精悍的编程实践》 贪吃蛇游戏,作为一个经典的休闲娱乐项目,不仅深受玩家喜爱,也是许多初学者踏入编程世界的一道门槛。在这个小小的游戏中,蕴含了丰富的计算机科学原理和编程技巧,尤其在使用...

    编程开发-编程工具-代码行统计工具最新版 v1.5.zip

    在编程开发中,代码行统计不仅是一个简单的数字游戏,它反映了程序的结构、复杂性和可读性。通过统计代码行,我们可以获取以下几个方面的知识: 1. **项目规模**:总代码行数可以作为评估项目复杂度的一个参考指标...

    C语言代码风格

    C语言代码风格是指在编写C语言代码时应遵循的一系列规则和惯例,其目的是为了提升代码的可读性、可维护性、可移植性等关键质量属性。在众多的代码风格中,Linux代码风格和Microsoft代码风格是两个具有代表性的流派。...

    高质量C#代码

    在软件开发领域,编写高质量的代码是每一个程序员梦寐以求的能力,这不仅关乎个人的编程水平,也直接影响着软件的稳定性和团队的工作效率。本文将深入探讨在团队中推广高质量C#代码编写的技巧,并对如何避免常见问题...

Global site tag (gtag.js) - Google Analytics