# ⚔️ Java Knight: The Legend of Javanest

![Java Version](https://img.shields.io/badge/Java-17%2B-orange?style=for-the-badge&logo=java)
![License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)
![Game Type](https://img.shields.io/badge/Game-Text--Based%20RPG-blue?style=for-the-badge)

**Java Knight** is a text-based RPG game developed in Java.  
Embark on an epic adventure through the lands of **Javanest**, battle dangerous enemies, collect ancient keys, and face the ultimate **Dragon Boss** to save the kingdom.

---

## 🌟 Core Features

- 🎭 **Multiple Playable Classes** (Knight, Wizard, Assassin)
- 🗺️ **Location-Based Exploration System**
- ⚔️ **Turn-Based Combat Mechanics**
- 🔑 **Key Collection & Progression System**
- 💾 **Save / Load Ready (Java Serialization)**
- 📊 **RPG Systems**: HP, MP, XP, Levels
- 🛡️ **Weapons, Armor & Durability**
- 🐉 **Final Boss Battle**

---

## 🛡️ Playable Classes

| Class | HP | MP | Starting Weapon | Playstyle |
|------|----|----|----------------|-----------|
| **Knight** | High | Low | Sword | Tank / Physical Damage |
| **Wizard** | Medium | High | Magic Staff | Magic & Healing |
| **Assassin** | Medium | Medium | Daggers | Stealth & Burst Damage |

Each class has **unique abilities**, different mana costs, and a distinct combat style.

---

## 🗺️ World Map

Explore the dangerous regions of Javanest:

1. **Forest (Difficulty 1)**  
   _A dark forest full of Goblins._

2. **Graveyard (Difficulty 2)**  
   _An abandoned graveyard haunted by Skeletons._

3. **Vampire Crypt (Difficulty 3)**  
   _A cursed crypt ruled by Vampires._

4. **Dragon Castle (Difficulty 4)**  
   _The final destination and home of the Dragon._

Locations are connected, allowing the player to move freely between unlocked areas.

---

## 🎮 Game Flow

1. Start the game
2. Enter your player name
3. Choose a class
4. Begin in the **Forest**
5. Fight enemies and gain XP
6. Collect special keys
7. Unlock the **Dragon Castle**
8. Defeat the Dragon and save Javanest

---

## 🧭 Main Menu

At launch, the player is presented with the main menu:
```text
===============================
⚔ JAVA KNIGHT ⚔
===============================
1. Start Game
2. How To Play
3. Exit
Menu Options
Start Game – Begin a new adventure
How To Play – Learn the rules and objective
Exit – Close the game
🏰 In-Game Menu
While exploring a location, the player can choose:

text
1. Fight Enemy
2. Move Location
3. Enter Dragon Castle (if unlocked)
Fight Enemy – Starts a battle based on the current location
Move Location – Travel to connected locations
Enter Dragon Castle – Available only after collecting all keys
⚔️ Combat System
Combat is turn-based and class-dependent.

Available Actions
Light Attack
Heavy Attack
Defend
Heal
Special Ability
Exit Battle
Combat Rules
Attacks may consume MP
Special abilities are unique per class
Enemies attack after the player’s turn
Winning a battle grants XP
Enemies may drop keys
🔑 Key System
To unlock the final area, the player must collect:

🗝️ Goblin Key
🗝️ Skeleton Key
🗝️ Vampire Key
Each key drops from enemies in its respective location.

Once all keys are collected, the Dragon Castle becomes accessible.

📈 Progression System
HP (Health Points)
MP (Mana Points)
XP (Experience Points)
Level System
Weapon Durability
Progression rewards strategic combat and exploration.

💾 Save & Load System
The project is prepared for game saving using Java Serialization.

Serializable Components
Player
Location
Weapon
GameState
This allows the game to be saved and restored at any point.

🚀 Getting Started
Requirements
Java JDK 17 or higher
Terminal or Java IDE (IntelliJ IDEA, Eclipse, VS Code)
Run the Game
bash
javac -d out src/org/project/**/*.java
java -cp out org.project.Main
Or simply run Main.java from your IDE.

🛠️ Project Architecture
Object-Oriented Design
Clean separation of concerns
Interfaces & abstract classes
Easily extendable structure
Console-based UI with ANSI colors
🔮 Future Improvements
Inventory management menu
More weapons and consumables
Enhanced armor mechanics
Expanded world map
Graphical UI (JavaFX / Swing)
📜 License
This project is licensed under the MIT License.

