您的位置首页百科词条

C语言编写的俄罗斯方块程序中的疑问

C语言编写的俄罗斯方块程序中的疑问

嗯,你给的代码有限,但我还是知道了燃雹仿个大概,应该是正确的,下面做简要说明:首先,俄罗斯方块里所有的方块都能在4x4的矩阵中用四个点坐标来表示先来看shape这个结构体变量,它有一个成员变量box,是个数组注意这两句for(ii=0;ii<2;ii++)if((shapes[box_num].box[ii])&mask)这说明了box是个长度为2的变量,如果box为unsigned char类型,那box长度就正好为2字节,16位,也就等于4x4,这就说明了box[2]是用来记录方块的。mask = 128,它的二进制就为 10000000mask/=2,等价于mask>>=2(自己可以证皮纤明的,呵呵)这里以一个正方形的方块为例肆岁每四位表示一行,行序储存■■00■■0000000000它的box变量的值就为box[0]11001100box[1]00000000第一次循环:ii =0i=0if((shapes[box_num].box[ii])&mask)//即为11001100&1000000为真,就画上一个方块之后mask/=2,那么mask就变成了01000000进入第二次循环ii=0i=1if((shapes[box_num].box[ii])&mask)//即为11001100&0100000仍为真,再画上一个方块mask再除等于2,变成00100000进入第三次循环ii=0i=2if((shapes[box_num].box[ii])&mask)//即为11001100&00010000这时就为假了,就不画它,进入下一次循环,后面就不再重复了,呵呵有问题加个qq吧,交个朋友,1504837063