marco-deusebio/shadowbound-rpg

GitHub: marco-deusebio/shadowbound-rpg

一个用 C++17 编写的控制台回合制 RPG 游戏,用于演示面向对象编程和游戏系统设计。

Stars: 0 | Forks: 0

# 暗影束缚 **暗影束缚**是一款基于控制台、回合制的RPG游戏,使用**C++17**编写,是一个面向对象的编程项目。 在精心设计的敌人阵容中战斗,管理技能与状态效果,通过装备和消耗品升级你的英雄,在营地休整,并准备与**深渊领主**进行最终对决。 ## 亮点 ## 概述 在《暗影束缚》中,你将引导一位英雄经历一系列遭遇战,赚取经验值和金币,购买升级,管理消耗品,并在战斗之间提升属性。 该项目强调: - 面向对象设计 - 继承与多态 - 模块化游戏系统 - 用于存档和概要的文件 I/O - 可复用的基于类的架构 ## 主菜单 ``` 1. New Game 2. Load Game 3. Delete Save 4. Quit ``` ## 核心功能 ### 战斗系统 - 回合制战斗系统 - 带有暴击的基础攻击 - 用于减少所受伤害的防御动作 - 基于冷却时间的技能系统 - 敌人特定的行为和攻击逻辑 - 战斗后的经验值、金币和物品奖励 ### 状态效果 - 燃烧 - 中毒 - 眩晕 - 再生 - 虚弱 - 护盾 ### 技能 - 力量打击 - 火球术 - 治疗术 - 盾牌猛击 - 毒素打击 - 闪电箭 ### 物品 当前的消耗品包括: - 生命药水 - 高级生命药水 - 解毒剂 - 净化药水 物品栏支持堆叠显示,例如: ``` Health Potion x3 Antidote x1 ``` ### 装备 - 武器 - 护甲 - 更换装备前需确认 装备显示示例: ``` Bronze Sword +6 Attack Steel Sword +18 Attack Knight Armor +60 Max HP ``` ## 营地 在战斗间隙,玩家可以: - 访问商店 - 休息 - 使用物品 - 训练攻击力或最大生命值 - 查看英雄状态 - 保存游戏 - 继续冒险 ## 难度选择 支持的难度模式: - 简单 - 普通 - 困难 难度影响: - 敌人生命值 - 敌人攻击力 - 营地休息费用 - 训练费用 ## 敌人阵容 当前敌人包括: - 哥布林 - 墓土士兵 - 毒蛛 - 火焰小鬼 - 兽人 - 黑刃游荡者 - 花岗岩守护者 - 霜之怨灵 - 血裔守卫 - 森林巨魔 - 黑暗法师 - 深渊领主 *(最终首领)* 每个敌人都有其独特的属性、行为、奖励和战斗风格。 ## 项目结构 ``` Shadowbound/ ├── main.cpp ├── GameTypes/ │ └── DamageType.h ├── Game/ │ ├── Game.h │ └── Game.cpp ├── Characters/ │ ├── Character.h │ ├── Character.cpp │ ├── Player.h │ ├── Player.cpp │ ├── Hero.h │ ├── Hero.cpp │ ├── Berserker.h │ ├── Berserker.cpp │ ├── Reaper.h │ ├── Reaper.cpp │ ├── Rogue.h │ ├── Rogue.cpp │ ├── Sorcerer.h │ ├── Sorcerer.cpp │ ├── Spellblade.h │ ├── Spellblade.cpp │ ├── Templar.h │ |── Templar.cpp | ├── Warrior.h │ └── Warrior.cpp ├── Enemies/ │ ├── Enemy.h │ ├── Enemy.cpp │ ├── Goblin.h │ ├── Goblin.cpp │ ├── GraveboundSoldier.h │ ├── GraveboundSoldier.cpp │ ├── VenomSpider.h │ ├── VenomSpider.cpp │ ├── FlameImp.h │ ├── FlameImp.cpp │ ├── Orc.h │ ├── Orc.cpp │ ├── BlackbladeRogue.h │ ├── BlackbladeRogue.cpp │ ├── GraniteGuardian.h │ ├── GraniteGuardian.cpp │ ├── FrostWraith.h │ ├── FrostWraith.cpp │ ├── SanguineWarden.h │ ├── SanguineWarden.cpp │ ├── ForestTroll.h │ ├── ForestTroll.cpp │ ├── DarkMage.h │ ├── DarkMage.cpp │ ├── AbyssalOverlord.h │ └── AbyssalOverlord.cpp ├── Battle/ │ ├── BattleSystem.h │ └── BattleSystem.cpp ├── Abilities/ │ ├── Ability.h │ ├── Ability.cpp │ ├── PowerStrike.h │ ├── PowerStrike.cpp │ ├── Fireball.h │ ├── Fireball.cpp │ ├── Heal.h │ ├── Heal.cpp │ ├── ShieldBash.h │ ├── ShieldBash.cpp │ ├── PoisonStrike.h │ ├── PoisonStrike.cpp │ ├── LightningBolt.h │ └── LightningBolt.cpp ├── StatusEffects/ │ ├── StatusEffect.h │ ├── BurnEffect.h │ ├── BurnEffect.cpp │ ├── PoisonEffect.h │ ├── PoisonEffect.cpp │ ├── RegenEffect.h │ ├── RegenEffect.cpp │ ├── StunEffect.h │ ├── StunEffect.cpp │ ├── WeakenEffect.h │ ├── WeakenEffect.cpp │ ├── ShieldEffect.h │ └── ShieldEffect.cpp ├── Items/ │ ├── Item.h │ ├── Item.cpp │ ├── Inventory.h │ ├── Inventory.cpp │ ├── HealthPotion.h │ ├── HealthPotion.cpp │ ├── GreaterHealthPotion.h │ ├── GreaterHealthPotion.cpp │ ├── Antidote.h │ ├── Antidote.cpp │ ├── CleansingPotion.h │ |── CleansingPotion.cpp | ├── Item.h │ ├── Item.cpp │ ├── Antidote.h │ ├── Antidote.cpp │ ├── Elixir.h │ ├── Elixir.cpp │ ├── IronskinTonic.h │ ├── IronskinTonic.cpp │ ├── RejuvenationTonic.h │ ├── RejuvenationTonic.cpp | ├── Remedy.h │ └── Remedy.cpp ├── Equipment/ │ ├── Equipment.h │ ├── Equipment.cpp │ ├── Weapon.h │ ├── Weapon.cpp │ ├── Armor.h │ └── Armor.cpp ├── Locations/ │ ├── Shop.h │ ├── Shop.cpp │ ├── Camp.h │ └── Camp.cpp └── Saves/ ├── save_slot_1.txt ├── save_slot_2.txt ├── save_slot_3.txt └── adventure_summary.txt ``` ## 主要系统 ### 游戏系统 `Game` 类管理整体进度和冒险流程,包括: - 主菜单 - 新游戏设置 - 加载和删除存档选项 - 难度选择 - 遭遇战进度 - 冒险结果和概要输出 ### 战斗系统 `BattleSystem` 类处理回合制战斗,包括: - 玩家回合 - 敌人回合 - 技能选择 - 物品使用 - 防御 - 状态效果处理 - 经验值和金币奖励 - 物品掉落 ### 玩家与英雄 `Player` 类存储共享的进度系统,例如: - 等级 - 经验值 - 金币 - 物品栏 - 装备 - 数据存档与加载 `Hero` 类定义了可玩角色,并拥有英雄的技能。 ### 敌人 `Enemy` 基类支持: - 经验值奖励 - 金币奖励 - 物品掉落 - 通过 `takeTurn` 进行的 AI 行为 - 伤害弱点与抗性 具体的敌人子类会覆盖其行为,以创造独特的战斗模式。 ## 存档系统 共有 3 个存档位,并支持删除。 存档位文件示例: ``` save_slot_1.txt save_slot_2.txt save_slot_3.txt ``` 保存的数据包括: - 已击败的敌人数量 - 最终首领完成状态 - 英雄等级 - 经验值 - 金币 - 生命值与最大生命值 - 攻击力 - 装备的武器 - 装备的护甲 - 装备加成 - 物品栏物品 - 难度 游戏还会为每个存档位生成一份冒险概要。 冒险概要文件示例: ``` adventure_summary.txt ``` ## 构建与运行 ### 选项一:Xcode 1. 在 Xcode 中打开项目 2. 确保每个 `.cpp` 文件都包含在目标中 3. 构建并运行 **提醒:** `项目目标 -> 构建阶段 -> 编译源代码` 所有 `.cpp` 文件都应出现在 **编译源代码** 列表中。 头文件 **无需** 添加到此处。 ### 选项二:终端 从项目根目录使用兼容 C++17 的编译器进行编译: ``` clang++ -std=c++17 \ -I. \ -IGameTypes \ -IGame \ -ICharacters \ -IEnemies \ -IBattle \ -IAbilities \ -IStatusEffects \ -IItems \ -IEquipment \ -ILocations \ main.cpp \ Game/*.cpp \ Characters/*.cpp \ Enemies/*.cpp \ Battle/*.cpp \ Abilities/*.cpp \ StatusEffects/*.cpp \ Items/*.cpp \ Equipment/*.cpp \ Locations/*.cpp \ -o shadowbound ``` 运行可执行文件: ``` ./shadowbound ``` ## 使用的 C++ 概念 本项目演示了: - 类与对象 - 封装 - 继承 - 多态 - 虚函数 - 抽象基类 - `std::vector` - `std::unique_ptr` - `std::function` - Lambda 表达式 - 文件输入/输出 - 随机数生成 - 枚举与枚举类 - 面向对象的游戏架构 ## 未来改进 可能的未来升级包括: - 在战斗菜单中添加技能描述 - 更多伤害类型 - 更多敌人技能 - 扩展的首领阶段 - 更多装备等级 - 商店物品出售功能 - 存档文件版本控制 - 随机遭遇战 - 任务系统 - 多个可玩职业 - 更好的 UI 格式化 - 单元测试 ## 注意 暗影束缚目前是一个**可玩的控制台 RPG 原型**,专注于回合制战斗和面向对象的 C++ 设计。 该项目功能完备且模块化,有持续扩展和打磨的空间。 ## 许可证 本项目是开源的,可供公众使用。 ## 截图 Shadowbound Screenshot
标签:C++17项目, C++编程, RPG游戏, 商店, 回合制战斗, 多态性, 存档, 战斗系统, 控制台应用, 敌人AI, 文件I/O, 最终Boss, 游戏开发, 物品管理, 状态效果, 继承, 能力系统, 英雄成长, 装备系统, 资源管理, 进度系统, 难度选择, 面向对象设计