#define TETROMINO_WIDTH 4 #define TETROMINO_HEIGHT 4 #define TETROMINO_AREA (TETROMINO_HEIGHT*TETROMINO_WIDTH) struct piece { struct colour *colour; char (*bitmap)[4][4]; int type; int rotation; }; char tetromino_I[4][4][4] = { { {0,0,0,0}, {1,1,1,1}, {0,0,0,0}, {0,0,0,0} },{ {0,0,1,0}, {0,0,1,0}, {0,0,1,0}, {0,0,1,0} },{ {0,0,0,0}, {0,0,0,0}, {1,1,1,1}, {0,0,0,0} },{ {0,1,0,0}, {0,1,0,0}, {0,1,0,0}, {0,1,0,0} } }; char tetromino_J[4][4][4] = { { {1,0,0,0}, {1,1,1,0}, {0,0,0,0}, {0,0,0,0} },{ {0,1,1,0}, {0,1,0,0}, {0,1,0,0}, {0,0,0,0} },{ {0,0,0,0}, {1,1,1,0}, {0,0,1,0}, {0,0,0,0} },{ {0,1,0,0}, {0,1,0,0}, {1,1,0,0}, {0,0,0,0} } }; char tetromino_L[4][4][4] = { { {0,0,1,0}, {1,1,1,0}, {0,0,0,0}, {0,0,0,0} },{ {0,1,0,0}, {0,1,0,0}, {0,1,1,0}, {0,0,0,0} },{ {0,0,0,0}, {1,1,1,0}, {1,0,0,0}, {0,0,0,0} },{ {1,1,0,0}, {0,1,0,0}, {0,1,0,0}, {0,0,0,0} } }; char tetromino_O[4][4][4]= { { {0,1,1,0}, {0,1,1,0}, {0,0,0,0}, {0,0,0,0} },{ {0,1,1,0}, {0,1,1,0}, {0,0,0,0}, {0,0,0,0} },{ {0,1,1,0}, {0,1,1,0}, {0,0,0,0}, {0,0,0,0} },{ {0,1,1,0}, {0,1,1,0}, {0,0,0,0}, {0,0,0,0} } }; char tetromino_S[4][4][4] = { { {0,1,1,0}, {1,1,0,0}, {0,0,0,0}, {0,0,0,0} },{ {0,1,0,0}, {0,1,1,0}, {0,0,1,0}, {0,0,0,0} },{ {0,0,0,0}, {0,1,1,0}, {1,1,0,0}, {0,0,0,0} },{ {1,0,0,0}, {1,1,0,0}, {0,1,0,0}, {0,0,0,0} } }; char tetromino_T[4][4][4] = { { {1,1,1,0}, {0,1,0,0}, {0,0,0,0}, {0,0,0,0} },{ {0,0,1,0}, {0,1,1,0}, {0,0,1,0}, {0,0,0,0} },{ {0,0,0,0}, {0,1,0,0}, {1,1,1,0}, {0,0,0,0} },{ {1,0,0,0}, {1,1,0,0}, {1,0,0,0}, {0,0,0,0} } }; char tetromino_Z[4][4][4] = { { {1,1,0,0}, {0,1,1,0}, {0,0,0,0}, {0,0,0,0} },{ {0,0,1,0}, {0,1,1,0}, {0,1,0,0}, {0,0,0,0} },{ {0,0,0,0}, {1,1,0,0}, {0,1,1,0}, {0,0,0,0} },{ {0,1,0,0}, {1,1,0,0}, {1,0,0,0}, {0,0,0,0} } }; char (*tetrominoes[])[4][4][4] = { &tetromino_I, &tetromino_J, &tetromino_L, &tetromino_O, &tetromino_S, &tetromino_T, &tetromino_Z };