Tetris
Create a playable Tetris game.
![Task](http://static.miraheze.org/rosettacodewiki/thumb/b/ba/Rcode-button-task-crushed.png/64px-Rcode-button-task-crushed.png)
You are encouraged to solve this task according to the task description, using any language you may know.
The visible game matrix should be 10*20.
It must have:
- left/right key;
- a hard drop key (the current piece will be dropped and locked at once);
- (better with another soft drop key);
- at least one rotation key;
- (better with two, for both clockwise and counter-clockwise 90° rotation);
- full set of 7 kinds of shapes (ITOSZJL).
The piece should be rotatable at its initial position (unlike sega arcade tetris), and automatically falling at reasonable speed.
At least 1 preview piece should be shown.
No further requirement about randomizer / rotation system / DAS / colors / difficulty levels / score / hold, but you may do it if you wish.