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

分析圣遗物

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

因此我们应该 物以类聚 人与群分把每个圣遗物的部分,抽象出来 拿 生之花,死之羽为例 若是抽象 类很好的扩展 添加冒险家的生之花 时候继承生之花 并且名称冒险者- 生之花 当然圣遗物包含(生之花,死之羽,时之沙 空之杯 理之冠)组合而成若装备它
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;
};

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小森程序员

若能帮助到你,小费自愿付费

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值