This Pokémon Battle Simulator allows players to engage in exciting turn-based battles using various Pokémon. The simulator is designed to provide a realistic and engaging Pokémon battle experience, complete with different moves, strategies, and outcomes.
In case you want to check out, here's link to our presentation slides: Presentation.
This application adopts the Clean Architecture principles for a maintainable and scalable design. At its core are the business entities, surrounded by use cases that form the application's business rules. Interface adapters translate between these use cases and external components like databases and UIs. This layered approach ensures that changes in external frameworks have minimal impact on business logic, keeping the codebase robust and flexible.
The architecture is structured into layers, with the most central one being the Entities layer, which contains the business objects of the application. Surrounding this are the Use Cases, which encapsulate and implement all of the business rules for the application. External to the Use Cases is the Interface Adapters layer, which converts data from the format most convenient for the use cases and entities, to the format most convenient for some external agency such as the Database or the Web. Finally, at the outermost layer, we have the Frameworks and Drivers, which are generally composed of frameworks and tools such as the Database, the Web Framework, or other high-level tools.
Following these guidelines, our application ensures that the business rules are at the core of the system's design, thus protecting them from external changes and making the system robust and testable. More information about how we used clean architecture can be found here
To set up and run this Java project on your local machine, follow these steps:
Clone the Repository
git clone https://github.com/YehyunLee/PokemonGame
cd PokemonGame
Check for Java Installation Ensure you have Java installed on your system. You can check this by running:
java -version
If Java is not installed, download and install it from Oracle's Java website.
Run the Project Run the main.java inside src/main
Enjoy the Game The game should now start. Follow the on-screen instructions to play.
Note: These steps assume you have Git and Java correctly installed and configured on your system.
TA Instructions
Justification for the Clean Architecture Design / Unit Testing Files
Outdated Progress Update
[Updates] October 30, 2023 [Yehyun] Last week, we changed our project domain from AITextEditor to PokemonGame. You can still find our old project blueprint and API explorer activity in our AITextEditor branch. We received feedback from TA and devised a plan for entity, UML diagram, and sequence diagram. [Yehyun] Worked on setting entity and use case folder, setting basics entities file, and mainly implemented Pokemon entity. [Muaj] Working on PlayerPokemons entity [Alex] Worked on Move entity. Leave it as a class for now, may be implemented as an interface/factory.
Oct, 2023 Tyseer changed the project to the Maven project Nov 7, 2023 [Yehyun] Download sprites and organize it, removing unnecessary sprites Nov 8, 2023 [Yehyun] Worked on getCombinedListOfPokemonSprites -> RENAMED to PokemonListFromSpritesDataAcessObject Tyseer made interface to my code and added documents (comments on each methods) and removed unnecessary code. Nov 9, 23 [Yehyun] Our old code was very inefficent when it comes to creating dozens of Pokemons. It will fetch the sprites directory for every Pokemon. I made some improvement and made this more efficient. 4 BIG UPDATES:
[Logic of Program: Basic Structure of Program] Hey everyone, Yehyun here. I am writing down these logics so that everyone can catch up with important files. Please feel free to update this section.
Special Thanks to Tyseer and Muaj for their hard work on this project! — from Yehyun