EX_25/2/25

编写一个如下场景:

有一个英雄Hero类,私有成员,攻击,防御,速度,生命值,以及所有的set get 方法

编写一个 武器 Weapon 类,拥有私有成员攻击力,以及set get 方法

编写一个 长剑 Sword 类,继承自武器类,拓展属性 生命值,以及set get 方法

编写一个 匕首Blade类,继承自武器类,拓展属性 速度,以及set get 方法

编写一个 斧头 Axe类,继承自武器类,拓展属性 防御力,以及set get 方法

武器Weapon类里面,要求有一个多态函数,叫做 equip 函数

英雄Hero类里面,要求有一个公开函数,equipWeapon(Weapon* w)

实现功能:英雄既可以装备长剑,也可以装备短剑,也可以装备斧头,但是要求装备不同的武器,英雄需要获得不同的属性加成

cpp 复制代码
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>

using namespace std;                 
/*
编写一个如下场景:
有一个英雄Hero类,私有成员,攻击(ATK),防御(DEF),速度(AGL),生命值(HP),以及所有的set get 方法
编写一个 武器 Weapon 类,拥有私有成员攻击力,以及set get 方法
编写一个 长剑 Sword 类,继承自武器类,拓展属性 生命值,以及set get 方法
编写一个 匕首Blade类,继承自武器类,拓展属性 速度,以及set get 方法
编写一个 斧头 Axe类,继承自武器类,拓展属性 防御力,以及set get 方法

武器Weapon类里面,要求有一个多态函数,叫做 equip 函数
英雄Hero类里面,要求有一个公开函数,equipWeapon(Weapon* w)
实现功能:英雄既可以装备长剑,也可以装备短剑,也可以装备斧头,但是要求装备不同的武器,英雄需要获得不同的属性加成
*/
class Hero;
class Weapon
{
private:
	int ATK;
public:
	int getATK(){return ATK;}
	void setATK(int ATK){this->ATK=ATK;}
	virtual void equip(Hero* hero){}
};

class Hero
{
private:
	int ATK;
	int DEF;
	int AGL;
	int HP;
public:
	int getATK(){return ATK;}
	int getDEF(){return DEF;}
	int getAGL(){return AGL;}
	int getHP(){return HP;}
	void setATK(int ATK){this->ATK=ATK;}
	void setDEF(int DEF){this->DEF=DEF;}
	void setAGL(int AGL){this->AGL=AGL;}
	void setHP(int HP){this->HP=HP;}
	void equipWeapon(Weapon* w)
	{
		w->equip(this);
	}
};

class Sword:public Weapon
{
private:
	int HP;
public:
	int getHP(){return HP;}
	void setHP(int HP){this->HP=HP;}

	void equip(Hero* hero)
	{
		hero->setATK(hero->getATK()+getATK());
		hero->setHP(hero->getHP()+HP);
	}
};

class Blade:public Weapon
{
private:
	int AGL;
public:
	int getAGL(){return AGL;}
	void setAGL(int AGL){this->AGL=AGL;}
	
	void equip(Hero* hero)
	{
		hero->setATK(hero->getATK()+getATK());
		hero->setAGL(hero->getAGL()+AGL);
	}
};

class Axe:public Weapon
{
private:
	int DEF;
public:
	int getDEF(){return DEF;}
	void setDEF(int DEF){this->DEF=DEF;}

	void equip(Hero* hero)
	{
		hero->setATK(hero->getATK()+getATK());
		hero->setDEF(hero->getDEF()+DEF);
	}
};
int main(int argc,const char** argv)
{
	
	return 0;
}
相关推荐
汉克老师34 分钟前
GESP2026年3月认证C++六级真题与解析(编程题1 选数)
c++·动态规划·线性dp·gesp六级·状态转移·选与不选
有点。41 分钟前
C++倍增法(练习题)
c++·算法
凡人叶枫1 小时前
Effective C++ 条款23:宁以 non-member、non-friend 替换 member 函数
linux·开发语言·c++·嵌入式开发
C语言小火车1 小时前
什么时候用智能指针?什么时候用裸指针?
c语言·c++·学习·指针
玖玥拾2 小时前
C/C++ 基础笔记(十二)友元、运算符重载
c语言·c++·运算符重载·友元
智者知已应修善业2 小时前
【51单片机8位数码管同时倒计时从9999】2024-1-25
c++·经验分享·笔记·算法·51单片机
郝学胜_神的一滴3 小时前
Qt 高级开发 031:QListWidget图标布局实战
c++·qt
Coder-magician4 小时前
《代码随想录》刷题打卡day15:二叉树part05
数据结构·c++·算法
Irissgwe4 小时前
算法的时间复杂度和空间复杂度
数据结构·c++·算法·c·时间复杂度·空间复杂度
随意起个昵称4 小时前
区间dp-基础题目3(永别)
c++·算法