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;
}
相关推荐
.select.5 分钟前
C++ 单例模式
java·c++·单例模式
2401_8914821715 分钟前
C++中的原型模式
开发语言·c++·算法
史蒂芬_丁18 分钟前
C++静态变量管理实例
开发语言·c++
2301_7957417919 分钟前
C++中的代理模式变体
开发语言·c++·算法
2301_7890156220 分钟前
封装RBTree(红黑树)实现myset和mymap
开发语言·数据结构·c++·算法·r-tree
Ralph_Y20 分钟前
std::unique_lock 与 std::lock_guard
开发语言·c++
赵民勇35 分钟前
gtkmm库之动作系统详解
linux·c++
宵时待雨37 分钟前
C++笔记归纳13:map & set
开发语言·数据结构·c++·笔记·算法
仰泳的熊猫6 小时前
题目2570:蓝桥杯2020年第十一届省赛真题-成绩分析
数据结构·c++·算法·蓝桥杯
Thera7779 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++