当前位置: 首页 > news >正文

c++作业7

 

模拟一个游戏场景
    有一个英雄:初始所有属性为1
    atk,def,apd,hp

    游戏当中有以下3种武器
    长剑Sword: 装备该武器获得 +1atx,+1def
    短剑Blade: 装备该武器获得 +1atk,+1spd
    斧头Axe:   装备该武器获得 +1atk,+1hp

    要求英雄写一个函数:
    equipweapon 装备武器
    实现效果:装备不同武器英雄获得不同的属性加成

/*有一个英雄:初始所有属性为1
atk,def,spd,hp
游戏当中有以下3种武器
长剑Sword:装备该武器获得+1atk,+1def
短剑Blade:装备该武器获得+1atk,+1spd
斧头Axe:装备该武器获得+1atk,+1hp*/
#include <iostream>using namespace std;
class Hero;
class Weapon
{
public:int atk;Weapon():atk(1){}virtual void update(Hero &h);int get_atk1();virtual ~Weapon(){}
};class Sword:public Weapon
{int def;
public:Sword():def(1){}void update(Hero &h);
};class Blade:public Weapon
{int spd;
public:Blade():spd(1){}void update(Hero &h);
};class Aex:public Weapon
{int hp;
public:Aex():hp(1){}void update(Hero &h);
};class Hero
{int atk;int def;int spd;int hp;public:Hero():atk(1),def(1),spd(1),hp(1){}void set_atk(int atk);void set_def(int def);void set_spd(int spd);void set_hp(int hp);int get_atk();int get_def();int get_spd();int get_hp();void updateWeapon(Weapon *w);void show();
};
void Hero::set_atk(int atk)
{this->atk=atk;
}
void Hero::set_def(int def)
{this->def=def;
}
void Hero::set_spd(int spd)
{this->spd=spd;
}
void Hero::set_hp(int hp)
{this->hp=hp;
}
int Hero::get_atk()
{return this->atk;
}
int Hero::get_def()
{return this->def;
}
int Hero::get_spd()
{return this->spd;
}
int Hero::get_hp()
{return this->hp;
}
void Weapon::update(Hero &h)
{int new_atk=h.get_atk()+this->atk;h.set_atk(new_atk);
}void Sword::update(Hero &h)
{Weapon::update(h);int new_def=h.get_def()+this->def;h.set_def(new_def);
}void Blade::update(Hero &h)
{Weapon::update(h);int new_spd=h.get_spd()+this->spd;h.set_spd(new_spd);
}void Aex::update(Hero &h)
{Weapon::update(h);int new_hp=h.get_hp()+this->hp;h.set_hp(new_hp);
}
void Hero::updateWeapon(Weapon *w)
{w->update(*this);delete w;
}
void Hero::show()
{cout<<"atk="<<atk<<endl;cout<<"def="<<def<<endl;cout<<"spd="<<spd<<endl;cout<<"hp="<<hp<<endl;
}
int main()
{Hero h1,h2,h3;h1.updateWeapon(new Sword);h2.updateWeapon(new Blade);h3.updateWeapon(new Aex);h1.show();h2.show();h3.show();return 0;
}

相关文章:

c++作业7

模拟一个游戏场景 有一个英雄&#xff1a;初始所有属性为1 atk,def,apd,hp 游戏当中有以下3种武器 长剑Sword&#xff1a; 装备该武器获得 1atx&#xff0c;1def 短剑Blade&#xff1a; 装备该武器获得 1atk&#xff0c;1spd 斧头Axe&#xff1a; 装备该…...

vue 上传组件 vxe-upload 实现拖拽调整顺序

vue 上传组件 vxe-upload 实现拖拽调整顺序&#xff0c;通过设置 drag-sort 参数就可以启用拖拽排序功能 官网&#xff1a;https://vxeui.com/ 图片拖拽排序 <template><div><vxe-upload v-model"imgList" mode"image" multiple drag-sor…...

Windows 环境实战开源项目GFPGAN 教程

GFPGAN GFPGAN&#xff08;Generative Facial Prior-GAN&#xff09;是由腾讯ARC&#xff08;Applied Research Center&#xff09;开发的一种实用的真实世界人脸修复算法。它专门设计用于人脸图像的生成和优化&#xff0c;尤其在低质量人脸图像的超分辨率恢复方面表现出色。以…...

UE5 做简单的风景观光视频

A、思路 新建摄像机&#xff0c;关卡序列&#xff0c; 镜头试拍录制器&#xff0c;新建镜头轨道&#xff0c;拖入摄像机&#xff0c; 变换&#xff0c;设置多个关键帧&#xff0c;改变摄像机在场景中的位置&#xff0c; 完成后&#xff0c;导出即可。 B、参考图...

k8s服务搭建与实战案例

Kubernetes&#xff08;K8s&#xff09;作为一个开源的容器编排平台&#xff0c;广泛应用于现代的云原生应用架构中。以下是一些常见的 **Kubernetes 实战案例**&#xff0c;包括从基础部署到高级应用场景的使用。通过这些案例&#xff0c;可以更好地理解 K8s 的运作原理和最佳…...

JavaScript学习难点

一、语法的灵活性 动态类型&#xff1a; JavaScript 是一种动态类型语言&#xff0c;这意味着变量的类型可以在运行时改变。这与静态类型语言&#xff08;如 Java、C&#xff09;形成鲜明对比&#xff0c;在静态类型语言中&#xff0c;变量的类型在编译时就已经确定。 例如&am…...

Qt WORD/PDF(一)使用 QtPdfium库实现 PDF 预览

文章目录 一、简介二、下载 QtPdfium三、加载 QtPdfium 动态库四、Demo 使用 关于QT Widget 其它文章请点击这里: QT Widget 姊妹篇: Qt WORD/PDF&#xff08;一&#xff09;使用 QtPdfium库实现 PDF 操作 Qt WORD/PDF&#xff08;二&#xff09;使用 QtPdfium库实现…...

解决创建laravel项目,使用国外镜像超时,国内镜像缺包的问题

解决创建laravel项目&#xff0c;使用国外镜像超时&#xff0c;国内镜像缺包的问题 一、前言二、切换镜像三、创建最新版本四、创建指定版本 一、前言 最近想下载 laravel 框架看看&#xff0c;但也遇到了些麻烦&#xff0c;这里做个记录。 二、切换镜像 先查看镜像源&#…...

Java泛型设计详解

引言 在日常Java开发中&#xff0c;泛型是一个非常重要的特性。它提供了编译时的类型安全检查&#xff0c;增强了代码的可读性和可维护性。然而&#xff0c;对于初学者甚至一些有经验的开发者来说&#xff0c;泛型的使用和理解仍然是一个挑战。本文旨在深入探讨Java泛型的诞生…...

用ue5打开网址链接

需要用到 Launch URL 这个函数 字面意思就是打开填写的链接网页 这里填写的是百度&#xff0c;按下Tab键后就会打开百度的网页...

【大数据】-- 读放大和写放大

目录 一、定义 1. 读放大(Read Amplification) 定义 原因 优化方法 2. 写放大(Write Amplification) 定义 原因 优化方法 对比与联系 二、举例 1. Hadoop(HDFS) 读放大 写放大 2. Flink 读放大 写放大 3. Hive 读放大 写放大 4. Presto 读放大 写放…...

【前端】JavaScript 抽取字符串特定部分题目详解与实现思路

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;核心步骤与实现解析1. 分割字符串为数组&#xff08;split 方法&#xff09;2. 使用 filter 提取名字&#xff08;偶数索引判断&#xff09;3. 使…...

CNCF云原生生态版图-分类指南(一)- 观测和分析

CNCF云原生生态版图-分类指南&#xff08;一&#xff09;- 观测和分析 CNCF云原生生态版图-分类指南一、观测和分析&#xff08;Observability and Analysis&#xff09;&#xff08;一&#xff09;可观测性&#xff08;Observablility&#xff09;1. 是什么&#xff1f;2. 解决…...

热更新解决方案3 —— xLua

概述 xLua框架导入和AB包相关准备 xLua导入 其它的导入 C#调用Lua 1.Lua解析器 using System.Collections; using System.Collections.Generic; using UnityEngine; //引用命名空间 using XLua;public class Lesson1_LuaEnv : MonoBehaviour {// Start is called before the fi…...

如何让ai在游戏中更像一个人?

开题开了一整年是我没想到的&#xff0c;还因此延毕了……我重新梳理一下我想做的研究以及相关痕迹。 我2023年3月找到的导师。起初我发现了在玩RTS游戏中会出现很多固定的套路&#xff0c;选手为此要做大量的练习&#xff0c;我就在想如何把这部分内容借助状态机这种流程给…...

websocket_asyncio

WebSocket 和 asyncio 指南 简介 本指南涵盖了使用 Python 中的 websockets 库进行 WebSocket 编程的基础知识&#xff0c;以及 asyncio 在异步非阻塞 I/O 中的作用。它提供了构建高效 WebSocket 服务端和客户端的知识&#xff0c;以及 asyncio 的特性和优势。 1. 什么是 WebS…...

如何在NGINX中实现基于IP的访问控制(IP黑白名单)?

大家好&#xff0c;我是锋哥。今天分享关于【如何在NGINX中实现基于IP的访问控制&#xff08;IP黑白名单&#xff09;&#xff1f;】面试题。希望对大家有帮助&#xff1b; 如何在NGINX中实现基于IP的访问控制&#xff08;IP黑白名单&#xff09;&#xff1f; 1000道 互联网大…...

Y3编辑器文档4:触发器1(界面及使用简介、变量作用域、入门案例)

文章目录 一、触发器简介1.1 触发器界面1.2 ECA语句编辑及快捷键1.3 参数设置1.4 变量设置1.5 实体触发器1.6 触发器复用 二、触发器的多层结构2.1 子触发器&#xff08;在游戏内对新的事件进行注册&#xff09;2.2 触发器变量作用域 三、入门案例3.1 使用触发器实现瞬间移动3.…...

echarts图表自定义配置(二)——代码封装

下图是初版&#xff0c;火山图的代码。可以看出&#xff0c;里面的变量&#xff0c;逻辑&#xff0c;函数存在冗余&#xff0c;基本上都是改了参数&#xff0c;同样的get和set&#xff0c;去刷新图表&#xff1b;对于往后继续开发十几二十个图表&#xff0c;会很麻烦。因此需要…...

02、10个富士胶片模拟的设置

二色彩 1、色彩的加减控制全局的饱和度增减&#xff1b; 2、色彩效果只提升暖色系饱和度&#xff1b; 3、FX蓝色大幅度提升蓝色系饱和度&#xff1b; 4、三个参数都不改变颜色的色相。 2.1 色彩 色彩调整的是拍摄画面整体的色彩饱和程度 2.2色彩效果 调整的是画面中暖色…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...