A classic implementation of Tetris with a retro twist, showcasing various Operating System concepts through its architecture.
- Classic Tetris gameplay with retro-style graphics
- Progressive difficulty system
- Score tracking with high score persistence
- Responsive controls
- Background music and sound effects
- Pause/Resume functionality
The game leverages multiple threads for smooth gameplay:
- Animation Thread: Handles the continuous rendering of game elements
- AutoDown Thread: Manages the automatic downward movement of pieces
- Loading Thread: Handles resource initialization
Game.java: Core game controller implementingRunnableinterface- Manages game threads
- Handles user input
- Controls game state
- Manages sound system
GameFrame.java: Main window containerGameScreen.java: Rendering engine- Double buffering for smooth graphics
- Event handling for user interactions
GameLogic.java: Singleton pattern implementation for game state- Various piece classes (
TPiece.java,LPiece.java, etc.) Grid.java: Game board managementCollisionManager.java: Collision detection system
-
Multi-threading
- Concurrent execution of game logic and rendering
- Thread synchronization for game state management
- Priority-based thread scheduling
-
Resource Management
- Memory management through efficient grid system
- Graphics resource handling with double buffering
- Sound resource management
-
Event Handling
- Keyboard input processing
- Game state event management
- Window system integration
- ⬅️ Left Arrow: Move piece left
- ➡️ Right Arrow: Move piece right
- ⬆️ Up Arrow: Rotate piece
- ⬇️ Down Arrow: Move piece down
- Space: Rotate piece
- P: Pause game
- M: Mute/Unmute
- R: Restart game
- Q: Quit game
- Java Runtime Environment (JRE) 8 or higher
- Minimum 256MB RAM
- Graphics support for Java Swing
- Audio output capability
- Download the latest release
- Double-click the executable file
- Start playing!
Background music and sound effects included in the game.
- Clark Rodriguez
- James Dela Cruz
- Jasper Perillo
Built with ❤️ using Java and Swing