- A square we can move with left and right arrows
- The square moves N cells down each second. Don't use timeout/interval, we'd like to keep all movement logic in a single place. Keep y coordinate as a floating point, increment with a step during each update, check with Math.floor.
- The square stops when bottom is reached or existing block is hit (introduce board)
- A full row is removed from board.
- Block can have different shape, it's randomly chosen on spawn.
- Block can be rotated.
- The square can be rapidly moved down using the down arrow.
- Game finishes when top is touched.
- Extras
- Show score
- Add sounds
- Show next piece
- Increase speed
- Optimization
- Only redraw what's changed on the screen