✅ An object-oriented Pokémon battle system implemented in Java
✅ The project follows a classic OOP design
✅ implement the same idea twice:
- once in a functional style - (Racket) https://github.com/eleventozero/pokemon-battle-racket
- once in an object-oriented style - (Java)
AI tools were used to support project planning, code reviews, refactoring, and documentation.
The final implementation, design decisions, and project structure were reviewed and validated by myself.
- Turn-based battle system (Player vs Enemy)
- Object-oriented state management (encapsulation & mutation)
- Type effectiveness system (Gen 1 inspired)
- SQLite database integration
- Modular architecture (Data, DB, Logic, UI)
| Field | Type | Description |
|---|---|---|
| name | String | Name |
| maxHp | int | Max HP |
| attack | int | Attack |
| defense | int | Defense |
| type | String | e.g. "fire" |
| attacks | List | attacks |
| Field | Type | Description |
|---|---|---|
| profile | Object | base data |
| currentHp | int | current HP |
| Field | Type | Description |
|---|---|---|
| name | String | Attack name |
| damage | int | Base damage |
| type | String | e.g. "water" |
| Field | Description |
|---|---|
| player-team | List of Pokemon |
| enemy-team | List of Pokemon |
| p-active | Player active index |
| e-active | Enemy active index |
| turn | controlled via GameFlow |
- Status effects (poison, burn, etc.)
- Improved enemy AI (strategy instead of random)
- Extended type system (full Gen 1 mechanics)
This project is designed as a learning system to explore:
- Object-oriented programming in Java
- Translating functional design into OOP
- Clean architecture and separation of concerns
- Game logic implementation
- Database integration with SQLite
Any feedback, suggestions, or criticism are highly appreciated.
