Welcome to Dungeon Fantasy! This is a classic text-based RPG developed in Java, where you create a hero, choose a race, and fight through endless rounds of monsters in a challenging arcade mode.
This project was created by a student in their second year of the DAM (Desarrollo de Aplicaciones Multiplataforma) vocational program. It serves as a practical application of core Java and Object-Oriented Programming (OOP) principles learned during the first year of study.
- Endless Arcade Mode: Survive as many rounds as you can against increasingly difficult waves of enemies.
 - Turn-Based Combat: A classic, easy-to-understand combat system where you choose to attack or heal.
 - Character Creation: Choose a name and a race for your hero.
 - Diverse Races: Select from 10 unique races, each with different base stats that promote various playstyles (Tank, Glass Cannon, Bruiser, etc.).
 - Progressive Difficulty: Enemies become stronger and more numerous with each round you clear.
 - Epic Boss Battles: Face a powerful, randomly selected boss every five rounds for a true test of skill.
 - Skill Upgrade System: After each successful round, choose one of three randomly presented skills to permanently upgrade your character's stats.
 - Resource Management: You have a limited number of healing potions. Use them wisely!
 
This is a simple console-based Java application with no external dependencies. You only need a Java Development Kit (JDK) installed to compile and run it.
- Java Development Kit (JDK) 8 or higher.
 
- 
Download the Code: Clone the repository or download the
.javafiles into a single directory. - 
Open a Terminal: Navigate to the directory where you saved the files.
 - 
Compile the Files: Run the Java compiler on all the
.javafiles.javac *.java - 
Run the Game: Execute the
Mainclass to start the adventure.java Main
Follow the on-screen prompts to create your character and begin playing!
 
The project follows Object-Oriented principles, with a clear separation of concerns among the different classes:
Main.java: The entry point of the application. Manages the main menu and the primary game loop.ArcadeMode.java: Controls the logic of the arcade mode, including round progression, enemy spawning, and turn management.PlayerCharacter.java: Represents the player. Manages all player stats (health, damage, level) and actions (attack, heal).Race.java: Anenumthat defines all playable races and their unique base stats.Enemy.java: The class for standard enemies that the player fights in most rounds.Boss.java: A subclass for powerful boss enemies encountered every five rounds.Skill.java: Represents a passive skill that provides a stat bonus to the player.SkillFactory.java: A factory class responsible for creating and providing random skills of different rarities (Common, Epic, Legendary).BossFactory.java: A factory class that holds a list of predefined bosses and generates one for boss rounds.IAttackable.java: An interface defining the contract for any entity that can attack and be attacked.IEnemy.java: An interface defining the basic contract for all enemy types.
- Java: The entire project is written in pure, object-oriented Java.