Welcome to my implementation of Super Mario Bros in Java! 🎮✨ This project was developed as part of a group assignment for the course Tecnología de Programación at the Universidad Nacional del Sur. It showcases the development of a 2D platformer game inspired by the iconic Mario series. It demonstrates the application of object-oriented programming principles, design patterns, data structures and various other programming techniques.
- Dynamic Level Design: Scrolling backgrounds, interactive platforms, and engaging power-ups.
- Character Animation and Physics: Smooth movement mechanics including jumping, running, and gravity-based falls.
- Enemy Interactions: Different types of enemies with unique behaviors and collision mechanics.
- Power-Ups and Transformations: Implementations of items like mushrooms and fire flowers, enabling Mario to transform and gain abilities.
- Scoring System: Dynamic point display for defeating enemies and collecting coins.
- Encapsulation: Clear separation of concerns using classes for entities such as
Mario
,Enemies
, andPlatforms
. - Inheritance: Hierarchical structure where entities like
Goomba
andKoopaTroopa
inherit from a commonEnemy
class. - Polymorphism: Flexible methods allowing diverse behaviors, such as unique enemy interactions.
- Observer Pattern: Implemented for updating graphics and managing animations in real-time.
- Visitor Pattern: Utilized for collision detection and handling interactions between different entities.
- Factory Pattern: Simplified creation of game objects such as enemies, platforms, and power-ups.
- Custom Physics Engine: Gravity and collision handling for seamless character movement.
- Multithreading: Managing background scrolling, animations, and enemy behaviors using separate threads.
- Resource Management: Efficient handling of sprites, sound effects, and animations.
- Clone the repository:
git clone https://github.com/6upernova/Super-Mario-Bros-Java.git
- Navigate to the project directory and build the application using your preferred IDE (e.g., IntelliJ, Eclipse) or via the command line.
- Run the
Launcher
class to start the game.
- Collision Detection: Implementing precise interactions between Mario and game entities required meticulous testing.
- Performance Optimization: Balancing graphical updates and game logic to ensure smooth performance.
- Scalability: Designing flexible systems to easily add new features like enemies and power-ups.
- Noah Kuperman - 6upernova
- Maximiliano Barco - DonSaturSaladas
- Gabriel Barros - GabrielAlejandroBarros
- Juan Cruz - JediEscoliosis
- Nicolas Gonzales - GonzaNicolas
This project is licensed under the MIT License. See the LICENSE file for details.