积木表示
一种有7种积木:
■ ■
■■ ■■ ■■ ■■
■ ■■ ■ ■■ (正反两种)
■ ■■
■ ■■■ ■ ■
■■ ■ ■ ■■■
■ ■■
■ ■ ■ ■■■
■■ ■■■ ■ ■
■■
■■
■
■ ■■■■
■
■
■ ■ ■
■■■ ■■ ■■■ ■■ (共计19件积木)
■ ■ ■
可以用一个三维数组block[4][4][4]来表示每个积木,第一维用于表示积木的四种旋转状态,后两维用4x4的0/1数字阵来表示这几种积森的形状,如:
{
{
{0, 0, 1, 0},
{0, 0, 1, 0},
{0, 1, 1, 0},
{0, 0, 0, 0}
},
{
{0, 0, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 1},
{0, 0, 0, 0}
},
{
{0, 0, 0, 0},
{0, 1, 1, 0},
{0, 1, 0, 0},
{0, 1, 0, 0}
},
{
{0, 0, 0, 0},
{1, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 0, 0}
}
}//这是L形的积木
一字形和Z形的还有田字的积木也按4种状态来做,只不过状态有重复而已,这样就不用为不同的积木用不同的旋转方法了
积木的变形
积木的变形很好做,就是循环把相当积木矩阵中的旋转状态读出来
比如当前积木是block [4][4],假设丁字形积木的数组为block2[4][4][4],那么旋转就是将block2[0],block[1],block[2],block[3]…->block[0]循环赋给block数组。每旋转一次当前旋转值(即数组的索引,范围为{0,1,2,3})加一,如果等于4,则重新归0