조건은 시계방향, 반시계 방향에만 적용함. 이것도 배열에 넣고 쓰면 조건문 소거 되지만 오히려 느려질거라서.
// 총 공백블럭 + 7가지 블럭
const BLOCK blocks[ 8 ] =
{
0xFFFF, 0xA808, 0x840A, 0x8888, 0xC808, 0xA088, 0x8848, 0xA880,
};
// 요건 충돌 검출때 씀. 요거의 블럭모양 조합이 위의 16비트 값임.
const BLOCK block_masks[] =
{
0x0001, 0x0002, 0x0004, 0x0010,
0x4000, 0x0008, 0x0080, 0x0020,
0x2000, 0x8000, 0x0800, 0x0040,
0x1000, 0x0400, 0x0200, 0x0100,
};
// 회전 함수
BLOCK rotate_block( BLOCK block, bool is_cw )
{
if( is_cw ) return ( block << 4 ) & 0xFFF0 | ( block >> 12 ) & 0x000F;
return ( block >> 4 ) & 0x0FFF | ( block << 12 ) & 0xF000;
}
앙~