In this project, my goal is to learn Rust by coding a Tetris.
I also wanted to do it in TUI (Terminal UI), for this I use RatatUi with CrossTerm.
To code Tetris, I mainly help myself with these 2 wikis : Harddrop and Tetris fandom.
I will probably mix some features of different games to use the ones that seems the most useful and logical to me. Don't expect this Tetris to be 100% compliant with the official rules.
-
Playable game
- Display the grid
- Display the current tetromino
- Move the current tetromino
- Basic rotation
- Tetromino automatically move down
- Tetromino lock when reaching bottom and spawning a new one
- Clear line when full
- Detect lose
-
Advanced features
- [-] Super Rotation System
- Show the next tetrominoes
- Being able to hold a piece
- Basic scoring system (lines cleared)
- Advanced scoring system (BtB, combos, T-Spin etc.)
- Increase level and speed with score
- Hard drop
-
QOL features
- Show has a shadow where the piece will fall if not moved or rotate
- Adapt display depending on the size of the window
- Add a start menu
- Add a pause option and pause menu
- Save scores somewhere
-
Bugs
- Shadow seems buggy when playfield is full or almost