This project consists of a Tower Defense game. The game was created using libgdx and is supported on desktop and android. The game involves players placing towers on a grid in order to defeat waves of oncoming enemies.
Main Features
- Grid System
- Path logic
- Tower squares
- Tower System
- 4 different towers
- 2 types of tower attacks
- Tower Store
- Enemy System
- 3 different enemies
- Random enemy spawner
Main Design Patterns
- Strategy Pattern
- Using this pattern allowed me to interchange tower attacks, allowing easy creation of new towers. Additionally this allows for easy extension of the tower logic, as towers will be able to function with new attack types. This pattern was used in:
- TowerAttack
- Using this pattern allowed me to interchange tower attacks, allowing easy creation of new towers. Additionally this allows for easy extension of the tower logic, as towers will be able to function with new attack types. This pattern was used in:
- Singleton Pattern
- Using this pattern ensured that only one instance of key components was present at any time. This pattern also allowed easy access to the main components without the need to pass references among components. This pattern was used in:
- MapGrid
- Spawner
- TowerStore
- Using this pattern ensured that only one instance of key components was present at any time. This pattern also allowed easy access to the main components without the need to pass references among components. This pattern was used in:
What I Liked About My Design
My favorite aspect of this project's design is the Tower component. Using the strategy pattern to abstract the attack type from the tower not only helped me reaffirm one of the patterns learned in class, but also made this portion of my code easily extendable. While time limited me to how many attacks I could make, I could easily add a new one in the future, while keeping the rest of my code functioning properly.
Key Takeaway From Project
Through constant struggles with setting up travisCI and sonarqube with my libGDX/android project, I came to have a strong understanding of how maven, gradle, and sonarqube work. By the end of this project I was directly editing multiple parts of my gradle files in order to trouble shoot problems. While not always successful, I was able to develop a deeper understanding of these tools.
Support or Contact
@RAWeber
RAWeber95@gmail.com