예제 #1
0
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) );
}
예제 #2
0
파일: grid.c 프로젝트: ldelaye/tetrinria
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);
    }
}
예제 #3
0
파일: grid.c 프로젝트: ldelaye/tetrinria
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;
}