请教俄罗斯方块程序中不明白的地方,请热心的朋友帮一下忙,谢谢。
前面定义的枚举类型
enum DRAW
{
SHOW, // 显示方块
HIDE, // 隐藏方块
FIX // 固定方块
};
前面定义的结构体
struct BLOCKINFO
{
byte id; // 方块 ID
char x, y; // 方块在游戏区中的坐标
byte dir:2; // 方向
} g_CurBlock, g_NextBlock;
// 画方块的程序
void DrawBlock(BLOCKINFO _block, DRAW _draw)
{
WORD b = g_bBlocks[_lock.id].dir[_block.dir];
int x, y;
int color = BLACK;
switch(_draw)
{
case SHOW: color = g_Blocks[_block.id].color; break;
case HIDE: color = BLACK; break;
case FIX: color = g_Blocks[_block.id].color / 3; break;
}
setfillstyle(color);
for(int i=0; i<16; i++)
{
if (b & 0x8000)
{
x = _block.x + i % 4;
y = _block.y - i / 4;
if (y < HEIGHT)
{
if (_draw != HIDE)
bar3d(x * SIZE + 2, (HEIGHT - y - 1) * SIZE + 2, (x + 1) * SIZE - 4, (HEIGHT - y) * SIZE - 4, 3, true);
else
bar(x * SIZE, (HEIGHT - y - 1) * SIZE, (x + 1) * SIZE - 1, (HEIGHT - y) * SIZE - 1);
}
}
b <<= 1;
}
}
1.WORD b = g_Blocks[_block.id].dir[_block.dir];这一行不明白,id和dir应该是两个数怎么能都赋给一个WORD类型的变量?中间加的那个点什么意思?
2.可能因为上一句不明白,if (b & 0x8000)这一句我也不明白什么意思?b与0x8000会得到什么结果?对程序有什么影响?
3.最后一句b <<= 1;什么意思?有什么意义?
我是新手大家别笑话我,这些问题对我来说很难可能对高手来说就是喽一眼的事,真心的求教。我已经给出我能给的最高分了。求大家帮忙教我一下。