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;
}
相关推荐
whoarethenext几秒前
c/c++的opencv的轮廓匹配初识
c语言·c++·opencv
爱吃涮毛肚的肥肥(暂时吃不了版)1 分钟前
项目班——0510——JSON网络封装
c++·算法·json
apocelipes13 分钟前
使用libdivide加速整数除法运算
c语言·c++·性能优化·linux编程
虾球xz17 分钟前
游戏引擎学习第290天:完成分离渲染
c++·人工智能·学习·游戏引擎
易只轻松熊18 分钟前
C++(20): 文件输入输出库 —— <fstream>
开发语言·c++·算法
虾球xz19 分钟前
游戏引擎学习第285天:“Traversables 的事务性占用”
c++·学习·游戏引擎
芯眼21 分钟前
ALIENTEK精英STM32F103开发板 实验0测试程序详解
开发语言·c++·stm32·单片机·嵌入式硬件·社交电子
【正弦】38 分钟前
深入理解构造函数,析构函数
c++
虾球xz1 小时前
游戏引擎学习第280天:精简化的流式实体sim
数据库·c++·学习·游戏引擎
虾球xz2 小时前
游戏引擎学习第281天:在房间之间为摄像机添加动画效果
c++·人工智能·学习·游戏引擎