Instead of checking for collisions in each move method separately, create a Boolean function for all move methods, that doesn't place any tiles, but instead checks if the new position is valid (doesn't collide). This should be for entire Tetromino, instead of a single tile.
This will avoid some graphical glitches that are occurring as currently the collision is checked per each tile individually, meaning it's possible that a tetromino's 3 blocks have moved to new position, while last block can not move, causing all other blocks to move back. Unnecessary work.
Instead of checking for collisions in each move method separately, create a Boolean function for all move methods, that doesn't place any tiles, but instead checks if the new position is valid (doesn't collide). This should be for entire Tetromino, instead of a single tile.
This will avoid some graphical glitches that are occurring as currently the collision is checked per each tile individually, meaning it's possible that a tetromino's 3 blocks have moved to new position, while last block can not move, causing all other blocks to move back. Unnecessary work.