|
1 | | -Dungeon Escape (JavaFX) |
| 1 | +# The End The Beginning - Dungeon Escape Game 🏰Dungeon Escape (JavaFX) |
| 2 | + |
2 | 3 | 📖 Overview |
3 | 4 |
|
| 5 | +## 📖 Overview |
| 6 | + |
4 | 7 | Dungeon Escape is a text-adventure style game built in Java with a JavaFX GUI. |
5 | | -Players explore, fight, and progress through levels while their stats are updated in real time. |
6 | 8 |
|
7 | | -The MainController connects the UI (FXML) with the game logic, handling input and updating the display. |
| 9 | +**The End The Beginning** is an immersive text-adventure dungeon escape game built with Java and JavaFX. Players embark on a perilous journey through a mysterious dungeon, battling monsters, collecting items, and progressing through 10 challenging levels to achieve freedom.Players explore, fight, and progress through levels while their stats are updated in real time. |
| 10 | + |
| 11 | + |
| 12 | + |
| 13 | +This enhanced version features a complete character class system, inventory management, achievements, and polished JavaFX GUI interface.The MainController connects the UI (FXML) with the game logic, handling input and updating the display. |
| 14 | + |
| 15 | + |
| 16 | + |
| 17 | +**Current Version:** 2.0 (Enhanced Edition) 🚀 Features |
| 18 | + |
| 19 | +**Developer:** Abdul Fornah |
| 20 | + |
| 21 | +**Framework:** Java 17+ with JavaFX Interactive Story/Game Loop with dynamic text updates. |
| 22 | + |
8 | 23 |
|
9 | | -🚀 Features |
10 | 24 |
|
11 | | -Interactive Story/Game Loop with dynamic text updates. |
| 25 | +---Player Stats Tracking: health, attack, defense, and level displayed live. |
12 | 26 |
|
13 | | -Player Stats Tracking: health, attack, defense, and level displayed live. |
14 | 27 |
|
15 | | -Commands System: enter actions via text field (e.g., attack, explore). |
16 | 28 |
|
17 | | -Game Controls: |
| 29 | +## 🎮 Game FeaturesCommands System: enter actions via text field (e.g., attack, explore). |
18 | 30 |
|
19 | | -Start button → begins the adventure. |
20 | 31 |
|
21 | | -Submit button → sends player’s command. |
| 32 | + |
| 33 | +### Core GameplayGame Controls: |
| 34 | + |
| 35 | +- **🏰 Epic Dungeon Adventure** - Navigate through 10 increasingly challenging dungeon levels |
| 36 | + |
| 37 | +- **⚔️ Character Classes** - Choose from Warrior, Mage, or Rogue, each with unique abilities and stat growthStart button → begins the adventure. |
| 38 | + |
| 39 | +- **👹 Dynamic Monster System** - Face diverse enemies with special abilities and scaling difficulty |
| 40 | + |
| 41 | +- **📦 Inventory Management** - Collect and use various items including weapons, armor, and potionsSubmit button → sends player’s command. |
| 42 | + |
| 43 | +- **🏆 Achievement System** - Unlock achievements for exploration, combat, and progression milestones |
22 | 44 |
|
23 | 45 | Stats button → shows current stats. |
24 | 46 |
|
25 | | -Reset button → restarts the game. |
| 47 | +### Character Progression |
| 48 | + |
| 49 | +- **📈 Experience & Leveling** - Gain XP from combat and exploration to level up your characterReset button → restarts the game. |
| 50 | + |
| 51 | +- **💪 Stat Growth** - Each class has different stat growth patterns (health, attack, defense) |
26 | 52 |
|
27 | | -🛠️ Requirements |
| 53 | +- **🎯 Class-Specific Bonuses** - Warriors are tanky, Mages hit hard, Rogues have critical strikes🛠️ Requirements |
| 54 | + |
| 55 | +- **📊 Detailed Statistics** - Track your progress with comprehensive stat displays |
28 | 56 |
|
29 | 57 | Java 17+ (recommended) |
30 | 58 |
|
31 | | -JavaFX SDK (matching your JDK version) |
| 59 | +### Interactive Interface |
| 60 | + |
| 61 | +- **🖥️ Modern JavaFX GUI** - Clean, intuitive interface with real-time stat updatesJavaFX SDK (matching your JDK version) |
32 | 62 |
|
33 | | -IDE with JavaFX support (IntelliJ, Eclipse, or VS Code) |
| 63 | +- **⌨️ Text-Based Commands** - Enter actions via text field for immersive gameplay |
| 64 | + |
| 65 | +- **🎛️ Control Panel** - Easy access to game controls (Start, Stats, Reset)IDE with JavaFX support (IntelliJ, Eclipse, or VS Code) |
| 66 | + |
| 67 | +- **📱 Responsive Design** - Scales well with different window sizes |
34 | 68 |
|
35 | 69 | 🎮 Gameplay |
36 | 70 |
|
| 71 | +--- |
| 72 | + |
37 | 73 | Press Start to begin the adventure. |
38 | 74 |
|
| 75 | +## 🚀 Getting Started |
| 76 | + |
39 | 77 | Type commands (e.g., attack, explore, run) into the input field and hit Submit. |
40 | 78 |
|
41 | | -Track your health, attack, defense, and level on-screen. |
| 79 | +### System Requirements |
| 80 | + |
| 81 | +- **Java:** 17 or higher (JDK recommended)Track your health, attack, defense, and level on-screen. |
| 82 | + |
| 83 | +- **JavaFX:** Matching your JDK version (often bundled with JDK) |
42 | 84 |
|
43 | | -Press Stats anytime to review progress. |
| 85 | +- **IDE:** IntelliJ IDEA, Eclipse, or VS Code with Java extensionsPress Stats anytime to review progress. |
| 86 | + |
| 87 | +- **OS:** Windows, macOS, or Linux |
44 | 88 |
|
45 | 89 | Use Reset to start fresh. |
46 | 90 |
|
47 | | -🧑💻 Developer Notes |
| 91 | +### Installation & Setup |
| 92 | + |
| 93 | +1. **Clone the repository:**🧑💻 Developer Notes |
| 94 | + |
| 95 | + ```bash |
| 96 | + |
| 97 | + git clone https://github.com/[your-username]/TheEndOfTheBeginning-game.gitMain.java → The entry point that loads the FXML and launches the JavaFX application. |
| 98 | + |
| 99 | + cd TheEndOfTheBeginning-game/TheEndTheBeginning |
48 | 100 |
|
49 | | -Main.java → The entry point that loads the FXML and launches the JavaFX application. |
| 101 | + ```MainController.java → Core controller that handles: |
50 | 102 |
|
51 | | -MainController.java → Core controller that handles: |
52 | 103 |
|
53 | | -User input (TextField) |
54 | 104 |
|
55 | | -Updating story text (TextArea) |
| 105 | +2. **Import into your IDE:**User input (TextField) |
| 106 | +
|
| 107 | + - Open the `TheEndTheBeginning` folder as a Maven project |
| 108 | +
|
| 109 | + - Ensure JavaFX is properly configured in your IDEUpdating story text (TextArea) |
| 110 | +
|
| 111 | + - Verify Java 17+ is selected as the project JDK |
56 | 112 |
|
57 | 113 | Managing buttons (Start, Submit, Stats, Reset) |
58 | 114 |
|
59 | | -Syncing player stats with labels (healthLabel, attackLabel, etc.) |
| 115 | +3. **Run the application:** |
| 116 | +
|
| 117 | + - Main class: `gameproject.TheEndTheBeginning`Syncing player stats with labels (healthLabel, attackLabel, etc.) |
| 118 | +
|
| 119 | + - Or use your IDE's run configuration for JavaFX applications |
60 | 120 |
|
61 | 121 | GameState.java → Holds all the game data (player health, level, attack, defense, etc.). Acts as the "model" in an MVC-like structure. |
62 | 122 |
|
63 | | -FXML → Defines the GUI layout (buttons, text areas, input fields, labels). |
| 123 | +### Quick Start |
| 124 | +
|
| 125 | +1. Click **"Start New Game"** to begin your adventureFXML → Defines the GUI layout (buttons, text areas, input fields, labels). |
| 126 | +
|
| 127 | +2. Choose your character class (Warrior, Mage, or Rogue) |
| 128 | +
|
| 129 | +3. Select difficulty level (Easy, Medium, Hard, or Death)CSS (optional) → Can be used to style the game window (themes, fonts, colors). |
| 130 | +
|
| 131 | +4. Enter your character name |
| 132 | +
|
| 133 | +5. Use text commands to navigate and interact with the game world📌 Tip for future dev work: |
64 | 134 |
|
65 | | -CSS (optional) → Can be used to style the game window (themes, fonts, colors). |
66 | 135 |
|
67 | | -📌 Tip for future dev work: |
68 | 136 |
|
69 | | -Keep game logic inside GameState (or dedicated classes) instead of bloating the controller. |
| 137 | +---Keep game logic inside GameState (or dedicated classes) instead of bloating the controller. |
70 | 138 |
|
71 | | -Use the controller mainly for event handling and updating the UI. |
72 | 139 |
|
73 | | -If the game grows, consider splitting into multiple controllers for different screens (menu, battle, etc.). |
74 | 140 |
|
75 | | -🧩 Next Steps |
| 141 | +## 🎯 Gameplay GuideUse the controller mainly for event handling and updating the UI. |
| 142 | +
|
| 143 | +
|
| 144 | +
|
| 145 | +### Character ClassesIf the game grows, consider splitting into multiple controllers for different screens (menu, battle, etc.). |
| 146 | +
|
| 147 | +- **🛡️ WARRIOR** - High health and defense, reliable damage |
| 148 | +
|
| 149 | + - *Starting Stats:* 120 HP, 15 ATK, 8 DEF🧩 Next Steps |
| 150 | +
|
| 151 | + - *Bonus:* Consistent damage output, high survivability |
76 | 152 |
|
77 | 153 | Add more story events and encounters. |
78 | 154 |
|
79 | | -Expand combat system with items and enemies. |
| 155 | +- **🧙 MAGE** - High attack power, learns quickly, fragile |
| 156 | +
|
| 157 | + - *Starting Stats:* 80 HP, 25 ATK, 3 DEF Expand combat system with items and enemies. |
| 158 | +
|
| 159 | + - *Bonus:* +20% experience gain, critical hit chance |
80 | 160 |
|
81 | 161 | Implement save/load functionality. |
82 | 162 |
|
83 | | -Polish UI with CSS themes |
| 163 | +- **🗡️ ROGUE** - Balanced stats, critical hit specialist |
| 164 | +
|
| 165 | + - *Starting Stats:* 100 HP, 20 ATK, 5 DEFPolish UI with CSS themes |
| 166 | +
|
| 167 | + - *Bonus:* +30% critical hit chance, balanced growth |
| 168 | +
|
| 169 | +### Game Commands |
| 170 | +During gameplay, you'll make choices by entering numbers or text commands: |
| 171 | +- **Combat:** Choose to attack, run, or use items |
| 172 | +- **Exploration:** Search rooms, move forward, check stats, manage inventory |
| 173 | +- **Inventory:** Use items during encounters or exploration |
| 174 | +
|
| 175 | +### Progression System |
| 176 | +- **Levels 1-3:** Learn the basics, face weak enemies |
| 177 | +- **Levels 4-6:** Encounter stronger monsters, better loot |
| 178 | +- **Levels 7-9:** Elite enemies with special abilities |
| 179 | +- **Level 10:** Final boss encounter and escape |
| 180 | +
|
| 181 | +--- |
| 182 | +
|
| 183 | +## 🛠️ Technical Architecture |
| 184 | +
|
| 185 | +### Project Structure |
| 186 | +``` |
| 187 | +src/main/java/ |
| 188 | +├── gameproject/ |
| 189 | +│ ├── TheEndTheBeginning.java # Application entry point |
| 190 | +│ ├── MainControllerNew.java # JavaFX controller & game logic |
| 191 | +│ └── Monster.java # Simple monster class for combat |
| 192 | +├── main/model/ |
| 193 | +│ ├── Player.java # Enhanced player system |
| 194 | +│ ├── Item.java # Item management system |
| 195 | +│ └── [Monster.java] # Advanced monster system (future) |
| 196 | +└── resources/ |
| 197 | + ├── game.fxml # UI layout definition |
| 198 | + └── game-style.css # UI styling |
| 199 | +``` |
| 200 | + |
| 201 | +### Design Patterns |
| 202 | +- **MVC Architecture** - Clear separation of Model, View, and Controller |
| 203 | +- **Observer Pattern** - UI updates when player stats change |
| 204 | +- **Strategy Pattern** - Different character classes with unique behaviors |
| 205 | +- **Factory Pattern** - Dynamic item and monster generation |
| 206 | + |
| 207 | +### Key Components |
| 208 | +- **MainControllerNew** - Handles all UI events and game state management |
| 209 | +- **Player Class** - Comprehensive player data with progression system |
| 210 | +- **GameState** - Legacy compatibility layer for smooth transitions |
| 211 | +- **Item System** - Various item types (healing, equipment, consumables) |
| 212 | + |
| 213 | +--- |
| 214 | + |
| 215 | +## 🔄 Recent Updates (Version 2.0) |
| 216 | + |
| 217 | +### ✅ New Features |
| 218 | +- Complete character class system with unique progression |
| 219 | +- Enhanced inventory management with item types and rarity |
| 220 | +- Achievement tracking and milestone rewards |
| 221 | +- Improved combat mechanics with status effects |
| 222 | +- Polished UI with better visual feedback |
| 223 | + |
| 224 | +### 🔧 Technical Improvements |
| 225 | +- Modernized codebase with Java 17+ features |
| 226 | +- Better error handling and user feedback |
| 227 | +- Optimized performance and memory usage |
| 228 | +- Comprehensive documentation and code comments |
| 229 | + |
| 230 | +### 🐛 Bug Fixes |
| 231 | +- Fixed class naming inconsistencies |
| 232 | +- Resolved import and dependency issues |
| 233 | +- Corrected switch statement syntax warnings |
| 234 | +- Eliminated unused variables and methods |
| 235 | + |
| 236 | +--- |
| 237 | + |
| 238 | + |
| 239 | + |
| 240 | +## 🤝 Contributing |
| 241 | + |
| 242 | +We welcome contributions from developers, testers, and players! Here's how you can help: |
| 243 | + |
| 244 | +### For Developers |
| 245 | +- **Bug fixes** - Check the issue tracker for reported bugs |
| 246 | +- **Feature implementation** - Pick items from the TODO list |
| 247 | +- **Code optimization** - Performance improvements and refactoring |
| 248 | +- **Documentation** - Improve comments, guides, and examples |
| 249 | + |
| 250 | +### For Testers |
| 251 | +- **Bug reporting** - Play the game and report issues with reproduction steps |
| 252 | +- **Balance feedback** - Suggest improvements to gameplay mechanics |
| 253 | +- **UI/UX suggestions** - Help improve the user experience |
| 254 | + |
| 255 | +### For Players |
| 256 | +- **Feedback** - Share your gameplay experience and suggestions |
| 257 | +- **Screenshots** - Show off your achievements and high scores |
| 258 | +- **Reviews** - Help spread the word about the game |
| 259 | + |
| 260 | +--- |
| 261 | + |
| 262 | +## 📞 Support & Contact |
| 263 | + |
| 264 | +- **Issues:** Report bugs via GitHub Issues |
| 265 | +- **Questions:** Check documentation or open a discussion |
| 266 | +- **Suggestions:** Feature requests welcome in Issues or Discussions |
| 267 | + |
| 268 | +--- |
| 269 | + |
| 270 | +## 📄 License & Credits |
| 271 | + |
| 272 | +**Developer:** Abdul Fornah |
| 273 | +**Framework:** JavaFX |
| 274 | +**Language:** Java 17+ |
| 275 | + |
| 276 | +*This project is for educational and entertainment purposes. Feel free to learn from, modify, and build upon this code.* |
| 277 | + |
| 278 | +--- |
| 279 | + |
| 280 | +## 🎉 Acknowledgments |
| 281 | + |
| 282 | +- **Java & JavaFX Communities** for excellent documentation and examples |
| 283 | +- **UMBC Computer Science Program** for educational support and resources |
| 284 | +- **Beta Testers** who provided valuable feedback during development |
| 285 | + |
| 286 | +*Ready to escape the dungeon? Your adventure awaits...* ⚔️ |
0 commit comments