模拟原神圣遗物系统-小森设计项目,设计圣遗物(生之花,死之羽,时之沙,空之杯,理之冠)抽象类
分析圣遗物
在圣遗物系统,玩家操控的是圣遗物的部分

因此我们应该 物以类聚 人与群分把每个圣遗物的部分,抽象出来 拿 生之花,死之羽为例 若是抽象 类很好的扩展 添加冒险家的生之花 时候继承生之花 并且名称冒险者- 生之花 当然圣遗物包含(生之花,死之羽,时之沙 空之杯 理之冠)组合而成若装备它
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() {}// 纯虚函数,用于获取圣遗物的IDvirtual 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() {}// 纯虚函数,用于获取圣遗物的IDvirtual 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() {}// 纯虚函数,用于获取圣遗物的IDvirtual 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;
};相关文章:
模拟原神圣遗物系统-小森设计项目,设计圣遗物(生之花,死之羽,时之沙,空之杯,理之冠)抽象类
分析圣遗物 在圣遗物系统,玩家操控的是圣遗物的部分 因此我们应该 物以类聚 人与群分把每个圣遗物的部分,抽象出来 拿 生之花,死之羽为例 若是抽象 类很好的扩展 添加冒险家的生之花 时候继承生之花 并且名称冒险者- 生之花 当然圣遗物包含…...
仿真模拟--telnet服务两种认证模式(自作)
自己做的笔记,有问题或看不懂请见解一下~ 目录 两个路由器间实现telnet服务(password认证模式) server client 两个路由器间实现telnet服务(aaa认证模式) server client 改名 tab键补齐 不会就扣问号 ? save 两个路由器间实现telnet服务…...
Apple Phone Memory
Apple Phone Memory 苹果手机内存查询,哪些应用程序(app)占用内存: 设置 通用 iPhone储存空间 清理下QQ音乐:...
Kubernetes容器运行时:Containerd vs Docke
容器化技术笔记 Kubernetes容器运行时:Containerd vs Docke - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this arti…...
【java 线程的状态】
介绍 Java 线程在运⾏的⽣命周期中的指定时刻只可能处于下⾯ 6 种不同状态的其中⼀个状态 状态名称说明NEW初始状态,线程被构建,但是还没有调用start()方法RUNNABLE运行状态,Java线程将操作系统中的就绪和运行两种状态统称为"运行中"BLOCKED阻塞状态,表示线程阻塞于…...
php加密验签
签名生成步骤(小程序端/前端): 确定参与签名的参数:选择需要参与签名的请求参数,通常包括请求的时间戳、随机数、请求的数据等。 参数排序与拼接:将所有参与签名的参数按照字母顺序排序,并拼接成…...
【Golang - 90天从新手到大师】Day06 - 数组
系列文章合集 Golang - 90天从新手到大师 数组是golang中最常用的一种数据结构,数组就是同一类型数据的有序集合 定义一个数组 格式: var name [n]type n为数组长度,n>0 且无法修改,type为数组的元素类型如: var a [2]int上面的例子定义了一个长度为2,元素类型为int的数组…...
java的有参构造方法
java的有参构造方法和无参构造方法类似,区别是构造方法名称里后面跟着一个括号,括号里是参数的定义 示例代码如下 class student4{private String name;private int age;public student4(String n,int a) {namen;agea;System.out.println("调用了…...
Vue66-vue-默认插槽
一、默认插槽需求 1-1、原本的写法: 在每个category组件中用v-show来做条件渲染,但是不方便! 1-2、默认插槽 img标签,ul标签,video标签,都是在app组件中完成解析之后,塞到category组件中的&…...
tsf-consul的使用
在腾讯云微服务平台TSF中使用Consul作为服务发现组件,通常需要遵循以下步骤: ### 1. 创建应用 首先,您需要在TSF控制台创建一个应用。在创建应用时,选择合适的业务类型、开发语言、开发框架等信息。对于使用Consul作为服务发现组件的Spring Cloud应用,您需要选择“业务应…...
【perl】基本语法 /备忘录/
分享 perl 语言学习资源 Perl 教程|极客教程 (geek-docs.com) Perl [zh] (runebook.dev) Perl 运算符 | 菜鸟教程 (runoob.com) Perl Documentation - Perldoc Browser Search the CPAN - metacpan.org 当然还有一些经典书籍,不再列举。 1、数字 1.1、数字表…...
mongodb 集群安装
整体架构图: 1. 配置域名 Server1: OS version: CentOS Linux release 8.5.2111 hostnamectl --static set-hostname mongo01 vi /etc/sysconfig/network # Created by anaconda hostnamemong01 echo "192.168.88.20 mong1 mongo01.com mongo…...
绿茶集团重启IPO:流量渐退、业绩波动,还能讲出好故事吗?
近日,绿茶集团有限公司(下称“绿茶集团”)向港交所递交上市申请,花旗、招银国际为其联席保荐人。 回望绿茶集团的上市之路,可谓有诸多坎坷。该公司于2021年3月首度向港交所发起冲击,但却将中文版招股书中的“流动负债总额”错写成…...
Git与SSH
Git Git是一种分布式版本控制系统,最初由Linus Torvalds为管理Linux内核开发而设计并开发。Git可以帮助开发团队协作管理代码,跟踪代码变更历史,并在需要时回溯到特定版本。 分布式版本控制:每个开发者都可以拥有完整的代码仓库…...
我的创作纪念日--码农阿豪
个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] 📱…...
Git 学习笔记(超详细注释,从0到1)
Git学习笔记 1.1 关键词 Fork、pull requests、pull、fetch、push、diff、merge、commit、add、checkout 1.2 原理(看图学习) 1.3 Fork别人仓库到自己仓库中 记住2个地址 1)上游地址(upstream地址):http…...
GitLab项目组相关操作(创建项目组Group、创建项目组的项目、为项目添加成员并赋予权限)
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 ——《将…...
英语恶补ing
ing的词组都有停下来做某事的感觉了。 second hand是形容词了。 wouldnt buy这里的would是情态动词,也是助动词 助动词不能单独使用,要搭配实义动词,这样才能构成谓语 情态动词(modals)在英语中有多种作用ÿ…...
DS1339C串行实时时钟-国产兼容RS4C1339
RS4C1339串行实时时钟是一种低功耗的时钟/日期设备,具有两个可编程的一天时间报警器和一个可编程方波输出。地址和数据通过2线双向总线串行传输。时钟/日期提供秒、分钟、小时、天、日期、月份和年份信息。对于少于31天的月份,月末的日期会自动调整&…...
神经网络模型---LeNet-5
一、LeNet-5 1.定义LeNet-5模型 model models.Sequential([1.1添加一个二维卷积层,有6个过滤器,每个过滤器的尺寸是5x5。输入图像尺寸是28x28像素,具有1个颜色通道,激活函数是relu layers.Conv2D(6, (5, 5), activationrelu, input_shape…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
