# Java Knight - Turn-Based RPG Game ## Project Overview This project is a simple turn-based RPG game written in Java. The player can choose a character and fight different enemies such as Skeletons, Goblins, Vampires, and a final Dragon boss. The game focuses on basic object-oriented programming concepts like inheritance, abstraction, and interfaces. --- ## Features - Choose between different character classes: - Knight - Assassin - Wizard - Turn-based combat system - Different enemy types with unique behaviors - HP and MP system for player and enemies - Weapon and armor system - Experience points (XP) and leveling up - Special abilities for each character - Simple map progression (Village, Forest, Castle) --- ## Game Mechanics ### Combat System Each turn, the player can choose one action: - Light Attack (no MP cost) - Heavy Attack (uses MP) - Defend (reduces incoming damage) - Heal (restores HP but uses MP) - Special Ability (strong attack with MP cost) Enemies also attack automatically after the player's turn. --- ### Level System - Players gain XP after defeating enemies - After reaching a certain XP threshold, the player levels up - Leveling up increases HP and MP --- ### Items System - Weapons increase attack power - Armor reduces incoming damage and can break after repeated use - Keys are collected by defeating specific enemies --- ## Object-Oriented Design This project uses basic OOP principles: - **Encapsulation**: All player stats are private with getters/setters - **Inheritance**: Different player classes extend the base Player class - **Polymorphism**: Enemies and players share the Entity interface - **Abstraction**: Abstract Player class defines shared behavior --- ## Conclusion In this project, I was able to build a simple text-based RPG game using basic Java concepts such as classes, inheritance, and interfaces. Through this project, I learned how different game mechanics like combat, leveling up, and inventory systems can be implemented using object-oriented programming.