`
aasddsasda
  • 浏览: 4985 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Javascript俄罗斯方块,极简代码

阅读更多
为了达到最精简的写法,整个程序的运行是围绕着位操作进行的。
一共用了不到100代码(常规写法),实现了最基本的变形、下落、消除、积分的功能。

操作:
上(变形),下(加速),左(左移),右(右移),空格(落到底)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<style>
    GBody {width:241px;height:401px;display:block;background-color:black;}
    GSpan {background-color:gray;float:left;width:12px;height:12px;border:4px gray outset;margin:0 1 1 0;overflow:hidden;}
</style>
<script>
    //By: X!ao_f QQ:120000512
    var G = {
        s:0,
        f:[],
        m:[],
        v:[0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0xFFFF],
        d:[[0xCC00],[0x4444,0xF0],[0x8C40,0x6C00],[0x4C80,0xC600],[0x44C0,0x8E00,0xC880,0xE200],[0x88C0,0xE800,0xC440,0x2E00],[0x4E00,0x8C80,0xE400,0x4C40]],
        init:function(c){
            c = c.appendChild(document.createElement("GBody"));
            for(var i=0;i<240;i++){
                G.f.push(c.appendChild(document.createElement("GSpan")));
            }
            document.onkeydown=function(e){G.event(e||window.event,0)};
            G.next();
            setInterval("G.timeTesk()",500);
        },
        timeTesk:function(){
            if(!G.move(G.x, G.y+1, G.t)){
                var s = 0;
                for(var i=0;i<20;i++){
                    G.v[i]=G.v[i]|G.m[i];
                    if(G.v[i]==0xFFF){
                        for(var k=i;k>0;k--){
                            G.v[k] = G.v[k-1];
                        }
                        G.s+=++s;
                    }
                }
                G.next();
                return false;
            }
            G.draw();
            return true;
        },
        move:function(x,y,t){
            var m = [];
            for(var k=0;k<4;k++){
                m[y+k] = (G.d[G.n][t]>>(3-k)*4&0xF)<<Math.max(x,0)>>-Math.min(x,0);
                if(m[y+k] & G.v[y+k]){
                    return false;
                }
            }
            G.x = x;
            G.y = y;
            G.t = t;
            G.m = m;
            G.draw();
            return true;
        },
        next:function(){
            var i = 0;
            G.n = parseInt(Math.random()*G.d.length);
            G.t = parseInt(Math.random()*G.d[G.n].length);
            while(!(G.d[G.n][G.t]>>i*4&0xF))i++;
            if(!G.move(3, i-3, G.t)){
                alert('Game over!');
            }
        },
        draw:function(){
            for(var i=0;i<240;i++){
                if((G.v[parseInt(i/12)]>>(11-i%12))&0x1||(G.m[parseInt(i/12)]>>(11-i%12))&0x1){
                    G.f[i].style.visibility = '';
                }else{
                    G.f[i].style.visibility ='hidden';
                }
            }
            document.title = 'score:'+G.s;
        },
        event:function(e,t){
            switch(e.keyCode){
                case 37:
                    G.move(G.x + 1, G.y, G.t);
                break;
                case 39:
                    G.move(G.x - 1, G.y, G.t);
                break;
                case 38:
                    G.move(G.x, G.y, (G.t + 1) % G.d[G.n].length);
                break;
                case 40:
                    G.timeTesk();
                break;
                case 32:
                    while(G.timeTesk());
            }
        }
    }
</script>
<body onload='G.init(document.body);'></body>
</html>
分享到:
评论

相关推荐

    Javascript俄罗斯方块,极简代码(完整版)适合初学者

    JavaScript俄罗斯方块是一款经典的编程学习项目,非常适合初学者入门。这个项目主要涉及到以下几个核心知识点: 1. **HTML基础知识**:`a.html` 文件是网页的基本结构,它包含了游戏的界面元素,如游戏区域、得分...

    Javascript俄罗斯方块AI版

    开发者通过编写JavaScript代码实现了游戏规则,并利用事件监听来响应用户的键盘输入,确保游戏的实时性和互动性。 **核心知识点二:HTML结构** 在提供的文件"tetris.html"中,HTML元素构建了游戏界面的基础结构。...

    JQuery 游戏 俄罗斯方块 代码

    【jQuery 游戏 俄罗斯方块 代码】是一款基于JavaScript库jQuery实现的网页版俄罗斯方块游戏。这个游戏的特色在于其简洁高效的代码实现,通过利用jQuery的事件处理和DOM操作功能,使得开发者可以用相对较少的代码量...

    javascript俄罗斯方块.zip

    在“javascript俄罗斯方块.zip”这个压缩包中,应该包含了完整的源代码,包括HTML文件、CSS样式表和JavaScript脚本。你可以通过查看这些文件来学习实际的代码实现。同时,这也是一个很好的学习资源,可以帮助你理解...

    (俄罗斯方块)javascript俄罗斯方块实现代码,喜欢用javascript实现游戏效果代码的朋友可以参考下。

    js俄罗斯方块小游戏实现,源代码打包,喜欢用javascript实现游戏效果代码的朋友可以参考下。

    Javascript俄罗斯方块(canvas版)

    压缩包中的"俄罗斯方块.html"是整个游戏的入口文件,包含了HTML结构、CSS样式和JavaScript代码。HTML用于构建网页的基本结构,CSS负责美化界面,而JavaScript则是游戏逻辑的实现。开发者可能会使用AJAX技术来动态...

    网页版俄罗斯方块源代码

    在俄罗斯方块源代码中,JavaScript函数可能包括: - `generateBlock()`: 生成新方块的函数,随机选择一种形状并将其放置在屏幕顶部。 - `fallBlock()`: 控制方块下落的定时器函数,根据重力模拟方块下降。 - `...

    俄罗斯方块JavaScript代码.rar

    总的来说,通过实现俄罗斯方块这款游戏,开发者不仅可以巩固JavaScript基础知识,还能提升动态效果处理、DOM操作、算法设计、代码组织和优化等多方面技能,为后续的大型网页游戏开发奠定坚实基础。而"codesc.net"这...

    俄罗斯方块 html 代码

    综上所述,这段HTML代码结合JavaScript实现了俄罗斯方块游戏的基本框架,通过定义游戏板、方块数据、颜色方案和关键的游戏逻辑函数,为学习者提供了一个良好的起点,深入理解游戏开发中的各种技术细节。

    jsp俄罗斯方块简短代码

    总的来说,"jsp俄罗斯方块简短代码"项目展示了如何结合JSP和JavaScript的力量来创建一个基本的在线游戏。通过学习这个项目,开发者可以深化对JSP动态网页开发和JavaScript客户端编程的理解,同时也能体会到游戏开发...

    可以自动玩的JavaScript俄罗斯方块游戏

    参考网络资源,使JavaScript实现的俄罗斯方块游戏,加入C程序自动求解的功能,初步实现了自动求解的算法。

    javascript 俄罗斯方块

    JavaScript 俄罗斯方块是一款经典的基于JavaScript编程的游戏,它主要用于学习和实践面向对象编程中的类概念。在这款游戏中,开发者可以通过创建不同的类来实现游戏的核心功能,如方块、游戏板、分数显示等。以下是...

    jQuery网页版俄罗斯方块游戏代码.7z

    总的来说,这个jQuery网页版俄罗斯方块游戏项目展现了JavaScript和jQuery在游戏开发中的应用,同时也锻炼了开发者的设计思维和编程技巧。它将基本的HTML、CSS和JavaScript技术与游戏逻辑巧妙结合,为学习和实践Web...

    俄罗斯方块C#代码web

    【标题】:“俄罗斯方块C#代码web” 在IT领域,"俄罗斯方块"是一款经典的电子游戏,由阿列克谢·帕基特诺夫在1984年设计。而“C#”是一种现代、面向对象的编程语言,由微软公司开发,广泛应用于Windows平台的软件...

    俄罗斯方块

    《俄罗斯方块》作为一款全球范围内的经典游戏,自1984年问世至今,它独特的游戏理念和机制依旧在世界各地拥有众多爱好者。游戏以其简单易上手的操作和逐渐增加的难度,成功吸引了各个年龄段的玩家。每当那熟悉的背景...

    js俄罗斯方块网页游戏代码

    【标题】"js俄罗斯方块网页游戏代码"所涉及的知识点主要集中在JavaScript编程语言和网页游戏开发上。JavaScript,简称JS,是一种轻量级的解释型编程语言,主要用于客户端的网页脚本,使得用户与网页交互更加动态和...

    html5 彩色的俄罗斯方块游戏代码

    在这个俄罗斯方块游戏中,可以创建一个“方块”类,包含方块的形状、颜色、位置等属性,以及旋转、下落、碰撞检测等方法。此外,还有“游戏板”类来管理当前的游戏状态,包括判断行是否被填满、清除行并更新分数等。...

    俄罗斯方块源代码

    方块会从区域上方开始缓慢继续落下。玩家可以以90度为单位旋转方块,以格子为单位左右移动方块,让方块加速落下。方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的方块出现在区域上方开始...

    原生js简易的俄罗斯方块游戏代码

    在本项目中,我们探索的是一个使用纯JavaScript实现的简单版俄罗斯方块游戏。这个项目旨在帮助开发者加深对JavaScript语言的理解,以及如何将其应用于游戏开发。以下是对该项目中涉及的关键知识点的详细说明: 1. *...

    Javascript版俄罗斯方块(含Bug)

    俄罗斯方块是大家所熟知的经典游戏,本着试试看的态度,我完成了这个Javascript版,不过美中不足的是在游戏的过程中有可能会出现错误,游戏的时间越长,错误出现的概率越大,针对这个Bug,我无能为力。希望有高手...

Global site tag (gtag.js) - Google Analytics