조건은 시계방향, 반시계 방향에만 적용함. 이것도 배열에 넣고 쓰면 조건문 소거 되지만 오히려 느려질거라서.


// 총 공백블럭 + 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 blockbool is_cw )

{

    ifis_cw ) return ( block << 4 ) & 0xFFF0 | ( block >> 12 ) & 0x000F;

    return ( block >> 4 ) & 0x0FFF | ( block << 12 ) & 0xF000;

}