我会用字摸点阵的方法保存每个方块的形状,并且能用掩码的方式画出来,但很
难判断能否下落。
我判断能否左右移动的算法是:用掩码分别计算每一行最左或最右的方块位置,然后在最左边那则不能移动块旁边的中点取颜色,如果不是黑色则不能移动。
// 检查左边界
int Left(int x, int y, unsigned int binary_code)
{
int i;
int leftmost = 0; // 最左端与x的的距离
int pix_in_line = 0; // 标志一行是否有方块
int mask = 1; // 设置掩码
for(i = 1; i<=16; i++, binary_code >>= 1)
{
if((mask & binary_code) == 1)
{
if(i%4 > leftmost)
leftmost = i%4;
if(i == 4)
leftmost = 4;
pix_in_line = 1;
}
x -= LEN;
if(i%4 == 0)
{
x += 4*LEN;
if(pix_in_line == 1)
{
if(getpixel(x - leftmost*LEN - LEN/2, y + LEN/2) != BLACK)
return 1;
else if(x - leftmost*LEN == 0)
return 1;
}
y += LEN;
leftmost = 0;
pix_in_line = 0;
}
}
return 0;
}
按这种方法判断下边界的要用两个for循环,很麻烦。网上的代码看上去没这么麻烦,但我看不懂,有哪位大神能提供下思路吗?谢谢!