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;
}
相关推荐
凤年徐2 小时前
【数据结构初阶】单链表
c语言·开发语言·数据结构·c++·经验分享·笔记·链表
oioihoii2 小时前
C++11 右值引用:从入门到精通
开发语言·c++
木子.李3476 小时前
排序算法总结(C++)
c++·算法·排序算法
freyazzr7 小时前
C++八股 | Day2 | atom/函数指针/指针函数/struct、Class/静态局部变量、局部变量、全局变量/强制类型转换
c++
fpcc8 小时前
跟我学c++中级篇——理解类型推导和C++不同版本的支持
开发语言·c++
终焉代码9 小时前
STL解析——list的使用
开发语言·c++
DevangLic9 小时前
【 *p取出内容 &a得到地址】
c++
鑫鑫向栄9 小时前
[蓝桥杯]修改数组
数据结构·c++·算法·蓝桥杯·动态规划
鑫鑫向栄9 小时前
[蓝桥杯]带分数
数据结构·c++·算法·职场和发展·蓝桥杯
m0_5522008210 小时前
《UE5_C++多人TPS完整教程》学习笔记37 ——《P38 变量复制(Variable Replication)》
c++·游戏·ue5