#pragma once #include "ICharacter.h" /** * @brief 战士职业 * * 技术点: 多态 (Polymorphism) - 继承和方法重写 * 特点: 高生命值、高防御、物理攻击 */ class Warrior : public ICharacter { private: int m_rage; // 怒气值 (战士特有资源) int m_maxRage; // 最大怒气值 public: /** * @brief 构造函数 * @param name 角色名称 * @param level 等级 */ Warrior(const std::string& name, int level = 1); /** * @brief 析构函数 */ virtual ~Warrior() {} /** * @brief 受到伤害 (重写) - 战士有格挡机制 */ virtual void takeDamage(int damage) override; /** * @brief 治疗 (重写) */ virtual void heal(int amount) override; /** * @brief 获取怒气值 */ int getRage() const { return m_rage; } /** * @brief 增加怒气值 */ void addRage(int amount); /** * @brief 消耗怒气值 */ bool consumeRage(int amount); }; /** * @brief 法师职业 * * 技术点: 多态 (Polymorphism) - 继承和方法重写 * 特点: 高魔法值、魔法攻击、低防御 */ class Mage : public ICharacter { private: int m_shield; // 法力护盾 int m_maxShield; // 最大护盾值 public: /** * @brief 构造函数 * @param name 角色名称 * @param level 等级 */ Mage(const std::string& name, int level = 1); /** * @brief 析构函数 */ virtual ~Mage() {} /** * @brief 受到伤害 (重写) - 法师有法力护盾机制 */ virtual void takeDamage(int damage) override; /** * @brief 治疗 (重写) */ virtual void heal(int amount) override; /** * @brief 获取护盾值 */ int getShield() const { return m_shield; } /** * @brief 添加护盾 */ void addShield(int amount); /** * @brief 重置护盾 */ void resetShield(); };