void test_piece_position_in_grid() { // Create a piece; TrnPiece piece = trn_piece_create(TRN_TETROMINO_I,2,3,TRN_ANGLE_90); // Expected result TrnPositionInGrid expectedPos0 = {2,5}; TrnPositionInGrid expectedPos1 = {3,5}; TrnPositionInGrid expectedPos2 = {4,5}; TrnPositionInGrid expectedPos3 = {5,5}; // Actual results TrnPositionInGrid pos0 = trn_piece_position_in_grid(&piece,0); TrnPositionInGrid pos1 = trn_piece_position_in_grid(&piece,1); TrnPositionInGrid pos2 = trn_piece_position_in_grid(&piece,2); TrnPositionInGrid pos3 = trn_piece_position_in_grid(&piece,3); // Check actual results versus expected. CU_ASSERT( trn_position_in_grid_equal(pos0, expectedPos0) ); CU_ASSERT( trn_position_in_grid_equal(pos1, expectedPos1) ); CU_ASSERT( trn_position_in_grid_equal(pos2, expectedPos2) ); CU_ASSERT( trn_position_in_grid_equal(pos3, expectedPos3) ); }
void trn_grid_set_cells_with_piece(TrnGrid * const grid, TrnPiece const * const piece, TrnTetrominoType const type) { int squareIndex; TrnPositionInGrid pos; for (squareIndex = 0 ; squareIndex < TRN_TETROMINO_NUMBER_OF_SQUARES ; squareIndex++) { pos = trn_piece_position_in_grid(piece, squareIndex); trn_grid_set_cell(grid, pos, type); } }
bool trn_grid_can_set_cells_with_piece(TrnGrid * const grid, TrnPiece const * const piece) { int squareIndex; TrnPositionInGrid pos; for (squareIndex = 0 ; squareIndex < TRN_TETROMINO_NUMBER_OF_SQUARES ; squareIndex++) { pos = trn_piece_position_in_grid(piece, squareIndex); if (! trn_grid_cell_is_in_grid_and_is_void(grid,pos) ) return false; } return true; }