来论坛第二天 看到一个javascript编写的俄罗斯方块  有地方不懂 希望大哥们 解惑  /*定义这些事什么作用*/        l:['#9F0','#FF3','#F33','#C0C','#33C','#0F3','#F93'],
        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]],/*定义这些事什么作用*/ 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;
        },讲解详细点希望

解决方案 »

  1.   

    非常感谢  还有那一个G.d[G.n][t]>>(3-k)*4&0xF)<<Math.max(x,0)>>-Math.min(x,0)什么 意思啊   没关系  我有不是高手本来就是学习的 就是实践太少了 没想到
      

  2.   

    第一部分可能是定义的方块(估计压缩成16进制了)第二部分是方法,move应该是移动的方法
    提醒一下,这个代码可能被作者压缩(优化)过,可以找一下比较常规的代码,便于理解
      

  3.   

    谢谢了  我刚工作 还没有写过多少代码 看代码能看懂 但是 一些细节就不知道了 比如 >>  作用是什么  上网上查了  别人的讲解都太深奥了 不懂
      

  4.   

    v 的每个元素表示1行,
    0x801的2进制
    1000 0000 0001
    1表示在这个位置有画格子
    这样你就有个“U”型的背景边框了。
    d 的每个元素表示一个方块
    0xCC00分4行写
    1100
    1100
    0000
    0000
    就是一个正方形方块
    第2个是长条,怎么旋转也只有横竖2种状态。
    然后就是如何绘制了。
    >>是移位 
    如果你要取一个方块的第2行,就右移8位,再屏蔽掉非这一行位置的位。
    如:
    0xCC00 >> 8 = 0x00CC
    0x00CC & 0xF = 0x000C