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;
}
相关推荐
Humbunklung40 分钟前
Rust方法语法:赋予结构体行为的力量
开发语言·后端·rust
萧曵 丶1 小时前
Rust 内存结构:深入解析
开发语言·后端·rust
算法练习生1 小时前
Qt核心类QWidget及其派生类详解
开发语言·c++·qt
oioihoii1 小时前
C++11标准库算法:深入理解std::none_of
java·c++·算法
1024小神1 小时前
tauri项目在windows上的c盘没有权限写入文件
c语言·开发语言·windows
老虎06271 小时前
数据结构(Java)--位运算
java·开发语言·数据结构
yanjiaweiya1 小时前
云原生-集群管理续
java·开发语言·云原生
Swift社区1 小时前
Swift 解 LeetCode 320:一行单词有多少种缩写可能?用回溯找全解
开发语言·leetcode·swift
写不出来就跑路1 小时前
暑期实习感悟与经验分享:从校园到职场的成长之路
java·开发语言·经验分享·spring boot
No Silver Bullet1 小时前
软件工程功能点估算法常用术语介绍
java·开发语言·软件工程