A simple Tetris game built in Python using the Pygame library.
The project is organized in a modular way and includes several typical game features:
- Ghost piece (shows where the piece will land)
- Next piece preview
- Increasing speed with score
- Pause, restart, and exit
- Audio system (music and sound effects)
- Python 3.x
- Pygame
Installation:
pip install pygameOpen the terminal in the main project folder (where main.py is located) and run:
python main.pyNote: do not run files inside src/, otherwise imports may not work correctly.
tetris/
│
├── main.py # Game entry point
│
├── src/ # Game logic
│ ├── __init__.py
│ ├── game.py
│ ├── config.py
│ ├── grid.py
│ ├── piece.py
│ ├── render.py
│ ├── audio.py
│ ├── input_handler.py
│ └── utils.py
│
├── assets/ # Resources (images, sounds, music)
│ ├── sounds/
│ ├── music/
│ └── images/
│
├── data/ # Saved data (High Score)
│ └── highscore.txt
- ⬅️ / ➡️ → Move the piece horizontally
- ⬇️ → Soft drop
- ⬆️ → Rotate the piece (clockwise)
- Space → Hard drop (piece falls instantly)
- P → Pause
- R → Restart
- M → Toggle Music
- K → Toggle Sound Effects (SFX)
- ESC → Exit the game (close window)
Complete horizontal lines without leaving gaps. Each completed line is removed and increases the score. More lines cleared simultaneously give higher points. The game ends when blocks reach the top of the grid.
- Score system with local high score saving
- Increasing falling speed and music tempo as the game progresses
- Next piece preview
- Ghost piece (landing preview)
- Audio controls (Music and SFX adjustable and toggleable separately)
main.py→ game entry pointgame.py→ main logic (coordinates all other files)piece.py→ piece management (Piece class)grid.py→ game grid managementrender.py→ graphical rendering
This project is distributed under the GNU GPL license; for more details, see the LICENSE.md file.
Davide D'Angelo (DAVIDENG): creator of the entire project.
Un semplice gioco Tetris realizzato in Python utilizzando la libreria Pygame.
Il progetto è organizzato in modo modulare e include diverse funzionalità tipiche del gioco:
- Ghost piece (mostra dove cadrà il pezzo)
- Anteprima del prossimo pezzo
- Aumento della velocità con il punteggio
- Pausa, riavvio e uscita
- Sistema audio (musica ed effetti sonori)
- Python 3.x
- Pygame
Installazione:
pip install pygameApri il terminale nella cartella principale del progetto (dove si trova main.py) ed esegui:
python main.pyNota: non avviare i file dentro src/, altrimenti gli import potrebbero non funzionare correttamente.
tetris/
│
├── main.py # Avvio del gioco
│
├── src/ # Logica del gioco
│ ├── __init__.py
│ ├── game.py
│ ├── config.py
│ ├── grid.py
│ ├── piece.py
│ ├── render.py
│ ├── audio.py
│ ├── input_handler.py
│ └── utils.py
│
├── assets/ # Risorse (immagini, suoni, musica)
│ ├── sounds/
│ ├── music/
│ └── images/
│
├── data/ # Dati salvati (Record)
│ └── highscore.txt
- ⬅️ / ➡️ → Muovere il pezzo orizzontalmente
- ⬇️ → Accelerare la discesa (Soft Drop)
- ⬆️ → Ruotare il pezzo (Senso Orario)
- Spazio → Cadere il pezzo fino a terra (Hard Drop)
- P → Pausa
- R → Riavvia
- M → Muta/Smuta la Musica
- K → Muta/Smuta gli Effetti Sonori (SFX)
- ESC → Esce dal Gioco (Chiude la Finestra)
Completare righe orizzontali senza lasciare spazi vuoti. Ogni riga completata viene eliminata e aumenta il punteggio. Più righe completate in contemporanea danno più punti. Il gioco termina quando i blocchi raggiungono la parte superiore della griglia.
- Sistema di punteggio con salvataggio del record in file locale
- Velocità crescente della caduta dei pezzi e anche della musica durante la partita
- Anteprima del prossimo pezzo
- Ghost piece (anteprima di dove cadrà)
- Controlli audio (Musica e SFX regolabili e mutabili separatamente)
main.py→ avvio del giocogame.py→ logica principale (raggruppa tutti file.py)piece.py→ gestione dei pezzi (classe Piece)grid.py→ gestione della griglia di giocorender.py→ rendering grafico
Questo progetto è distribuito sotto licenza GNU GPL; per ulteriori dettagli, consultare il file LICENSE.md
Davide D'Angelo (DAVIDENG): realizzatore dell'intero progetto.