方块类
class Blocks
{
public:
int space[4][4];
}blocks[7][4];
void Blocks::space //初始化方块信息
{
int i;
///////////////////////////////////基础七个形状
//倒置土字形
for (i = 0; i < 3; i++)
blocks[0][0].space[1][i]=1;
blocks[0][0].space[2][1] = 1;
//L形-1
for(i=1;i<4;i++)
blocks[1][0].space[i][1] = 1;
blocks[1][0].space[1][2] = 1;
//L形-2
for(i=1;i<4;i++)
blocks[2][0].space[i][2] = 1;
blocks[2][0].space[1][1] = 1;
for (i = 0; i < 2; i++)
{
//Z形-1
blocks[3][0].space[1][i] = 1;
blocks[3][0].space[2][i + 1] = 1;
//Z形状-2
blocks[4][0].space[1][i + 1] = 1;
blocks[4][0].space[2][i] = 1;
//田字形
blocks[5][0].space[1][i + 1] = 1;
blocks[5][0].space[2][i + 1] = 1;
}
//1字形
for (i = 0; i < 4; i++)
{
blocks[6][0].space[i][2] = 1;
}
///////////////////////////////////7个基础形状的旋转状态space_z,旋转状态共计7*3+7=21+7种
int base, space_z, j, tem[4][4];
for (base = 0; base < 7; base++)
{
for (space_z = 0; space_z < 3; space_z++)
{
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
tem[i][j] = blocks[base][space_z].space[i][j];
}
}
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
blocks[base][space_z + 1].space[i][j] = tem[4 - j - 1][i]; //控制一边坐标不变,另一边为4 - i - 1,然后再行列互换,这样可以保证四次旋转不同,如果仅仅行列互换,将会导致只有两种旋转状态
}
}
}
}
}