Welcome to my Arkanoid game project!
This game was developed as part of my Object-Oriented Programming (OOP) course and serves as a demonstration of OOP principles and a variety of design patterns.
Arkanoid is a classic brick-breaker game where the player controls a paddle to bounce a ball and destroy blocks on the screen. This implementation features:
- Three unique levels with different designs and challenges
- Rich use of design patterns to structure the code and gameplay
- Clean, modular architecture for easy expansion and maintenance
- Score tracking and Game Over screen
Below are screenshots from the game, showcasing the three levels and the game over screen:
- Features a target and concentric circles for aiming practice.
- Focuses on precision and control.
- Features a bright sun effect and varied block placement.
- Encourages strategic block breaking and maneuvering.
- Classic brick wall layout with special blocks ("add ball", "deadblock").
- Includes obstacles and increased difficulty.
- Displays your final score and prompts you to close the game.
This project is a showcase of several design patterns, including:
- Singleton: Managing resources like the game engine or score tracker.
- Factory: Creating different types of levels and blocks.
- Observer: Updating score and game state when events occur.
- Strategy: Handling different ball movement algorithms.
- Command: Processing user input and game actions.
- State: Managing level transitions and game over logic.
- Decorator/Composite: For complex block behaviors.
- Use your keyboard to control the paddle and bounce the ball.
- Clear all blocks to advance to the next level.
- Try to achieve the highest score possible!
- When the game is over, press space to exit.
- Clone the repository.
- Ensure you have Java (or the required runtime environment).
- cd Arkanoid
- ant run
Developed by [idohaver7] as part of an OOP course.
Enjoy the game and feel free to explore the code to see how design patterns are applied in practice!