Single responsibility principle:
For a class, there should be only one reason for its change
What software design really needs to do is to discover responsibilities and separate them from each other.
How can we determine whether an algorithm should be isolated from a class?
If you can think of more than one motive to change a class, this class has more than one responsibility. At this time, you should consider the separation of duties of the class.
If a class has too many responsibilities, it is equivalent to coupling these responsibilities. A change in responsibilities may weaken or suppress the class's ability to fulfill other responsibilities. This coupling will lead to a fragile design. When a change occurs, the design will suffer unexpected damages.
In the design of square games, the logic of falling, rotating, collision judgment, moving, and stacking games will never change.
The code of the square game is not written. Mark it first and study it another day.