day7作业

编写一个如下场景: 有一个英雄Hero类,私有成员,攻击(Atx),防御(Defense),速度(Speed),生命值(Blood),以及所有的set get 方法 编写一个 武器 Weapon 类,拥有私有成员攻击力(Atx),以及set get 方法 编写一个 长剑 Sword 类,继承自武器类,拓展属性 生命值(Blood),以及set get 方法 编写一个 匕首Blade类,继承自武器类,拓展属性 速度(Speed),以及set get 方法 编写一个 斧头 Axe类,继承自武器类,拓展属性 防御力(Defense),以及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;

class Hero{
private:
	int Atx;
	int Defense;
	int Speed;
	int Blood;
public:
	Hero(int Atx=0,int Defense=0,int Speed=0,int Blood=0):Atx(Atx),Defense(Defense,Speed(Speed),
			Blood(Blood){}

	void setAtx(int atx) { Atx = atx; }
    int getAtx() const { return Atx; }

    void setDefense(int defense) { Defense = defense; }
    int getDefense() const { return Defense; }

    void setSpeed(int speed) { Speed = speed; }
    int getSpeed() const { return Speed; }

    void setBlood(int blood) { Blood = blood; }
    int getBlood() const { return Blood; }
};

class Weapon{
private:
	int Atx;
public:		
  Weapon(int Atx=0):Atx(Atx){}
  virtual ~Weapon() {}
  virtual void equip(Hero* h) = 0;
  virtual void unequip(Hero* h) = 0;
  void setAtx(int atx) { Atx = atx; }
  int getAtx() const { return Atx; }

};
class Sword:public Weapon{
	private:
		int Blood;
	public:
		Sword(int Blood=50):Defense(Defense){}
         void equip(Hero* h) {
        Weapon::equip(h);
        h->setBlood(h->getBlood() + bloodBonus);
    }

    void setBlood(int blood) {Blood = blood; }
    int getBlood() const { return blood; }
};
}

class Blade:public Weapon{
private:
    int Speed;

public:
    Sword(int Speed=50):Defense(Defense){}

    void equip(Hero* h) {
        Weapon::equip(h);
        h->setSpeed(h->getSpeed() + Speed;
    }

    void setSpeed(int speed) { Speed = speed; }
    int getSpeed() const { return speed; }
};


}
class Axe:public Weapon{
private:
    int Defense;

public:
     Axe(int Defense=50):Defense(Defense){}
    void equip(Hero* h) {
        Weapon::equip(h);
        h->setDefense(h->getDefense() + Defenss);
    }

    void setDefenseBonus(int defense) { Denfense = defense; }
    int getDefense() const { return Defense; }
};
}
 int main(int argc,const char** argv){
    Hero hero;
    Sword sword;
    Blade blade;
    Axe axe;
}
相关推荐
沐知全栈开发1 分钟前
JavaScript 计时事件
开发语言
Yang-Never1 分钟前
Android 应用启动 -> Android 多种方式启动同一进程,Application.onCreate() 会多次执行吗?
android·java·开发语言·kotlin·android studio
期待のcode2 分钟前
Java 共享变量的内存可见性问题
java·开发语言
会游泳的石头3 分钟前
深入剖析 Java 长连接:SSE 与 WebSocket 的实战陷阱与优化策略
java·开发语言·websocket
yutian06063 分钟前
TI-C2000 系列 TMS320F2837X 控制律加速器(CLA)应用
开发语言·ti·ti c2000
txinyu的博客11 分钟前
解析muduo源码之 BoundedBlockingQueue.h
c++
夕阳之后的黑夜12 分钟前
Python脚本:为PDF批量添加水印
开发语言·python·pdf
女王大人万岁15 分钟前
Go标准库 path 详解
服务器·开发语言·后端·golang
楼田莉子25 分钟前
Linux进程间通信——System V系列
linux·服务器·c++·学习·信息与通信
一路往蓝-Anbo27 分钟前
第 2 篇:单例模式 (Singleton) 与 懒汉式硬件初始化
开发语言·数据结构·stm32·单片机·嵌入式硬件·链表·单例模式