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;
}
相关推荐
REDcker7 小时前
有限状态机与状态模式详解 FSM建模Java状态模式与C++表驱动模板实践
java·c++·状态模式
basketball6168 小时前
C++ 构造函数完全指南:从入门到进阶
java·开发语言·c++
想唱rap8 小时前
IO多路转接之poll
服务器·开发语言·数据库·c++
落羽的落羽10 小时前
【算法札记】练习 | Week4
linux·服务器·数据结构·c++·人工智能·算法·动态规划
goodesocket10 小时前
芯片HAST测试:通电工作下如何精准模拟极端环境挑战?
c++
特种加菲猫10 小时前
从零开始手撕AVL树:详解插入、平衡因子更新与四种旋转
开发语言·c++
萑澈10 小时前
算法竞赛入门:C++ STL核心用法与时空复杂度速查手册
数据结构·c++·算法·stl
江屿风11 小时前
C++OJ题经验总结(竞赛)1
开发语言·c++·笔记·算法
运筹vivo@11 小时前
LeetCode 2405. 子字符串的最优划分
c++·算法·leetcode·职场和发展·哈希表
有点。12 小时前
C++(枚举法一练习题)
开发语言·c++·算法