This project was developed as part of the Object-Oriented Programming module at CCT College Dublin.
The objective of the assignment was to design and implement a simple turn-based battle simulation using Java. The system models a fictional creature battle game called Algomon, where players control creatures with different types and abilities.
The project demonstrates the use of object-oriented programming principles, including class design, enumerations, encapsulation, and interaction between multiple objects in a game environment.
The application runs as a console-based Java program where two players battle using their Algomon creatures.
In the Algomon game, each player controls a set of creatures called Algomons. Each Algomon has attributes and abilities that can be used during battle.
The match is played in turns, where players activate abilities from their Algomons. The battle simulation demonstrates interactions between players, creatures, and abilities.
The match continues for a fixed number of turns and then ends.
An Algomon represents a creature used in battles.
Each Algomon contains several attributes:
- Name
- Type
- Health points
- Attack value
- Defense value
- Speed
- List of abilities
These attributes define how the Algomon behaves during the battle simulation.
The Algomon class also includes methods that allow creatures to activate abilities during a match. :contentReference[oaicite:0]{index=0}
Each Algomon belongs to a specific elemental category.
The available Algomon types include:
- FIRE
- WATER
- EARTH
- SUN
- MOON
- STAR
These types are defined using a Java enumeration to represent predefined categories. :contentReference[oaicite:1]{index=1}
Abilities define actions that an Algomon can perform during battle.
Each ability contains:
- Ability name
- Ability type
Ability types are represented using an enumeration that defines different kinds of abilities:
- OFFENSIVE
- DEFENSIVE
- HEALING :contentReference[oaicite:2]{index=2}
When an ability is activated, the system prints a message indicating that the ability has been used. :contentReference[oaicite:3]{index=3}
This design demonstrates the use of composition, where Algomon objects contain a list of abilities.
The game includes two players, each controlling a set of Algomons.
Each player can hold up to four Algomon creatures in their team.
Players interact with their Algomons by selecting abilities during their turn in the battle.
The Player class manages the list of Algomon creatures associated with each player and provides methods for activating abilities during the match. :contentReference[oaicite:4]{index=4}
The Match class manages the battle between two players.
The match system controls:
- Turn order
- Player switching
- Ability activation
- Match duration
Each match runs for a predefined number of turns. During each turn:
- The active player selects an Algomon
- The player activates one of the Algomon abilities
- The system prints the action performed
- The next player's turn begins
After the maximum number of turns is reached, the match ends.
This match controller demonstrates how game flow can be managed through a central class. :contentReference[oaicite:5]{index=5}
The main game logic is implemented in the AlgomonGame class.
At the start of the program:
- Abilities are created
- Eight Algomon creatures are initialized
- Two players are created with teams of Algomon
- The battle match begins
The system displays the Algomon owned by each player before starting the match simulation. :contentReference[oaicite:6]{index=6}
The project was implemented entirely using Java, applying key object-oriented programming concepts such as:
- Classes
- Objects
- Enumerations
- Composition
- Encapsulation
- Lists and collections
This project demonstrates several important programming concepts:
- Object-Oriented Programming in Java
- Class relationships and composition
- Use of enumerations
- Game simulation logic
- Managing collections of objects
- Designing simple game architectures
The project provides a practical example of modelling a small system using object-oriented design principles.
This project was developed by Thiago Goncalves da Costa as part of the Bachelor of Science in Computing and Information Technology at CCT College Dublin.
During my studies, I used the institutional GitHub account associated with my student email:
Since institutional accounts and student emails may be deactivated after graduation, this repository was migrated to my personal GitHub account:
https://github.com/ThiagoGoncos
This ensures long-term preservation of the project, commit history, and academic work completed during the degree program.