• 模拟原神圣遗物系统-小森设计项目,设计圣遗物(生之花,死之羽,时之沙,空之杯,理之冠)抽象类


    分析圣遗物

    在圣遗物系统,玩家操控的是圣遗物的部分
    在这里插入图片描述

    因此我们应该 物以类聚 人与群分把每个圣遗物的部分,抽象出来 拿 生之花,死之羽为例 若是抽象 类很好的扩展 添加冒险家的生之花 时候继承生之花 并且名称冒险者- 生之花 当然圣遗物包含(生之花,死之羽,时之沙 空之杯 理之冠)组合而成若装备它
    2件套效果:生命值上限提高1000点。
    4件套效果 开启各类宝箱后的5秒内,持续恢复30%生命值。
    在这里插入图片描述

    当然前期为了稳定就不要这种效果
    废话说了这么多,你有没有领悟到设计?

    设计圣遗物(生之花,死之羽,时之沙)抽象类 设计实例

    // 生之花抽象类
    class flowerOfLife {
    public:
        // 默认构造函数
        flowerOfLife() {}
    
        // 带参数的构造函数
        flowerOfLife(int id, string name, int Level, int HealthPoints) : id(id), name(name), level(Level), healthPoints(HealthPoints) {}
    
        // 虚析构函数,确保派生类的析构函数被调用
        virtual ~flowerOfLife() {}
    
        // 纯虚函数,用于获取圣遗物的ID
        virtual int Id() const = 0;
    
        // 纯虚函数,用于获取圣遗物的名称
        virtual string Name() const = 0;
    
        // 虚函数,用于获取圣遗物的等级
        virtual int level() const { return level; }
    
        // 虚函数,用于获取圣遗物的生命值
        virtual int HealthPoints() const { return healthPoints; }
    
        // 纯虚函数,用于获取圣遗物的子条目信息
        virtual string SubEntry() const = 0;
    
        // 纯虚函数,用于更新圣遗物的子条目信息
        virtual void updateSubEntry() = 0;
    
    protected:
        int id; // 圣遗物的唯一标识符
        string name; // 圣遗物的名称
        int level; // 圣遗物的等级
        int healthPoints; // 圣遗物的生命值
    };
    
    // 死之羽抽象类
    class Plumeofdeath {
    public:
        // 默认构造函数
        Plumeofdeath() {}
    
        // 带参数的构造函数
        Plumeofdeath(int id, string name, int Level, int atk) : id(id), name(name), level(Level), atk(atk) {}
    
        // 虚析构函数,确保派生类的析构函数被调用
        virtual ~Plumeofdeath() {}
    
        // 纯虚函数,用于获取圣遗物的ID
        virtual int Id() const = 0;
    
        // 纯虚函数,用于获取圣遗物的名称
        virtual string Name() const = 0;
    
        // 虚函数,用于获取圣遗物的等级
        virtual int Level() const { return level; }
    
        // 纯虚函数,用于获取圣遗物的攻击力
        virtual int ATK() const = 0;
    
        // 纯虚函数,用于获取圣遗物的子条目信息
        virtual string SubEntry() const = 0;
    
        // 纯虚函数,用于更新圣遗物的子条目信息
        virtual void updateSubEntry() = 0;
    
    protected:
        int id; // 圣遗物的唯一标识符
        string name; // 圣遗物的名称
        int level; // 圣遗物的等级
        int atk; // 圣遗物的攻击力
    };
    
    // 时之沙抽象类
    class sandsofTime {
    public:
        // 默认构造函数
        sandsofTime() {}
    
        // 带参数的构造函数
        sandsofTime(int id, string name, int Level) : id(id), name(name), level(Level) {}
    
        // 虚析构函数,确保派生类的析构函数被调用
        virtual ~sandsofTime() {}
    
        // 纯虚函数,用于获取圣遗物的ID
        virtual int Id() const = 0;
    
        // 纯虚函数,用于获取圣遗物的名称
        virtual string Name() const = 0;
    
        // 纯虚函数,用于获取圣遗物的等级
        virtual int Level() const = 0;
    
        // 设置攻击力沙
        virtual void setATK(float atk) {}
    
        // 获取攻击力
        virtual float atk() const { return 0.0; }
    
        // 设置防御力沙
        virtual void setDefense(float defense) {}
    
        // 获取防御力
        virtual float Defense() const { return 0.0; }
    
        // 设置生命值沙
        virtual void setHealthPoints(float healthPoints) {}
    
        // 获取生命值
        virtual float healthPoints() const { return 0.0; }
    
        // 设置元素充能沙
        virtual void setEnergyRecharge(float energyRecharge) {}
    
        // 获取元素充能
        virtual float EnergyRecharge() const { return 0.0; }
    
        // 设置元素精通沙
        virtual void setElementalMastery(int mastery) {}
    
        // 获取元素精通
        virtual int ElementalMastery() const { return 0; }
    
        // 纯虚函数,用于获取圣遗物的子条目信息
        virtual string SubEntry() const = 0;
    
        // 纯虚函数,用于更新圣遗物的子条目信息
        virtual void updateSubEntry() = 0;
    
    protected:
        int id; // 圣遗物的唯一标识符
        string name; // 圣遗物的名称
        int level; // 圣遗物的等级
    };
    

    设计圣遗物(空之杯,理之冠)设计实例

    class emptyCup {
    
        emptyCup();
        emptyCup(int id, string name, int Level);
    
        virtual ~emptyCup() {};
        virtual int Id() = 0;
        virtual string Name() = 0;
        virtual int Level() = 0;
    
        // 设置火伤属性 主词条
        virtual void setFireinjury(float fireInjury) {}
    
        // 获取火伤属性 主词条
        virtual float Fireinjury() { return 0.0; }
    
        // 设置水伤属性 主词条
        virtual void setWaterinjury(float waterInjury) {}
    
        // 获取水伤属性 
        virtual float Waterinjury() { return 0.0; }
    
        // 设置草伤属性 主词条
        virtual void setGrassinjury(float grassInjury) {}
    
        // 获取草伤属性主词条
        virtual float Grassinjury() { return 0.0; }
    
        // 设置雷伤属性主词条
        virtual void setthunderinjury(float thunderInjury) {}
    
        // 获取雷伤属性主词条
        virtual float thunderinjury() { return 0.0; }
    
        // 设置风伤属性主词条
        virtual void setWindinjury(float windInjury) {}
    
        // 获取风伤属性主词条
        virtual float Windinjury() { return 0.0; }
    
        // 设置冰伤属性主词条
        virtual void setIceinjury(float iceInjury) {}
    
        // 获取冰伤属性主词条
        virtual float Iceinjury() { return 0.0; }
    
        // 设置岩伤属性 主词条
        virtual void setRockinjury(float rockInjury) {}
    
        // 获取岩伤属性 主词条
        virtual float Rockinjury() { return 0.0; }
    
        // 设置物伤属性 主词条
        virtual void setPhysicalinjury(float physicalInjury) {}
    
        // 获取物伤属性 主词条
        virtual float Physicalinjury() { return 0.0; }
    
        // 设置攻击力 主词条
        virtual void setAttack(float attack) {}
    
        // 获取攻击力 主词条
        virtual float Attack() { return 0.0; }
    
        // 设置防御力 主词条
        virtual void setDefense(float defense) {}
    
        // 获取防御力 主词条
        virtual float Defense() { return 0.0; }
    
        // 设置生命 主词条
        virtual void setLife(float life) {}
    
        // 获取生命 主词条
        virtual float Life() { return 0.0; }
    
        // 设置元素精通主词条
        virtual void setElementsMastery(int mastery) {}
    
        // 获取元素精通主词条
        virtual int elementsMastery() { return 0; }
    
    
    protected:
        int id;
        string name;
        int level;
    };
    
    class CrownOfReason {
    
    public:
        CrownOfReason();
        CrownOfReason(int id, string name, int Level);
    
        virtual ~CrownOfReason() {};
        virtual int Id() = 0;
        virtual string Name() = 0;
        virtual int Level() = 0;
        // 设置攻击力主词条
        virtual void setAttack(float attack) {}
        // 获取攻击力冠
        virtual float Attack() { return 0.0; }
    
        // 设置防御主词条
        virtual void setDefense(float defense) {}
    
        // 获取防御主词条
        virtual float Defense() { return 0.0; }
    
        // 设置生命主词条
        virtual void setLife(float life) {}
    
        // 获取生命主词条
        virtual float Life() { return 0.0; }
    
        // 设置元素精通主词条
        virtual void setElementsMastery(int mastery) {}
    
        // 获取元素精通主词条
        virtual int elementsMastery() { return 0; }
    
    protected:
        int id;
        string name;
        int level;
    };
    
    
  • 相关阅读:
    java8(一)Stream API
    练习题之打印图案
    星空投影仪美国亚马逊审核标准UL62368检测项目介绍
    【Python 千题 —— 基础篇】奇数列表
    C. Colorful Table CodeTON Round 6 (Div. 1 + Div. 2, Rated, Prizes!)
    Vue渲染函数渲染html
    力扣100097. 合法分组的最少组数(哈希+贪心)
    Linux中的 loop设备
    华为防火墙:GRE over IPSec
    以太坊的最全概念攻略分享与案例分享|猿创征文
  • 原文地址:https://blog.csdn.net/xiaov_sen/article/details/139825074