我看了已个俄罗斯方的代码,有点不懂。希望知道的高诉我一下什么意思 
代码: 
public const int width = 20;           //场景的宽,以方块个数为单位 
public const int height = 30; 
public static int[] arrBitBlock=new int[height];  //位数组:当某个位置有方块时,该行的该位为1 public static bool isEmpty(int x, int y) 
        { 
            //先检测是否越界 
            if (y < 0 || y >= height) 
                return false; 
            if (x < 0 || x >= width) 
                return false; 
            //然后检测是否为空 
            if ((arrBitBlock[y] & (1 << x)) != 0) 
                return false; 
            else 
                return true; 
        } 
public static int[] arrBitBlock=new int[height];  这一句不是默认数组值不是都是0吗?
((arrBitBlock[y] & (1 << x)) 得到的不是应该是0吗?返回值应该都是true才对。
不怎么明白,它是怎么判断方块附近是否为空的,希望有人讲解下。

解决方案 »

  1.   

    public static int[] arrBitBlock=new int[height];  这一句不是默认数组值不是都是0吗? 
    ----------------
    都是0((arrBitBlock[y] & (1 < < x)) 
    --------------
    1<<x就是1向左移x位 就是2^x次方  ,就是左边第x位是,其余是0
    &运算  同1则1
      

  2.   

    当运行((arrBitBlock[y] & (1 < < x))这里的时候 说明x,y都在有效范围内
      

  3.   

    arrBitBlock[y] 不是都是0吗?它和后面的执行&得到不是0 吗?