您的位置:首页 > 编程语言

俄罗斯方块88行 代码注释版 (一)

2012-07-06 11:06 204 查看
void trsInit() {

int sp[8][4] = {{15,4369},{23,785,116,547},{71,275,113,802},

{39,305,114,562},{54,561},{99,306},{51,51},{-1}};

int *p, i, j, b;

for (p = sp[0]; *p >= 0; ++p) if ( *p == 0 ) *p = p[-2]; //1,2,3,4四个形状中如果有3,4为空说明只有两个不重复的,如S形,这时3拷贝1的,4拷贝2的就行了

gt.pool = >._pool[4];

for (j = 0; j < 7; ++j)

for (i = 0; i < 4; ++i)

for (b = 0; b < 16; ++b)

gt.tmap[j+1][i][b] = (sp[j][i] & 1) * (j + 1),

sp[j][i] >>= 1;

memset(gt._pool, -1, sizeof(gt._pool));

for (i = 0; i < 10; ++i)

memset(>.pool[i], 0, sizeof(int[21]));

return ;

}

int trsCopy(int sp[], int x, int y, int c) {

//c为0就单纯的碰撞检测,c为1是复制,c为2就是反复制

int i, cx, cy;

for (i = 0; i < 16; ++i) if (sp[i]) {

cx = x + (i & 3), cy = y + (i >> 2); //i&3可以取到i所对应的列号,i>>2可以取到i所对应的行号

if (gt.pool[cx][cy])

if (c == 2) gt.pool[cx][cy] = 0; else return 0;

if (c==1) gt.pool[cx][cy] = sp[i]; //16个格子一起copy所以不会有残影什么的

}

return 1;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: