您的位置:首页 > 房产 > 建筑 > 网站大全下载软件安装_我赢网seo优化网站_软文营销定义_关键词数据

网站大全下载软件安装_我赢网seo优化网站_软文营销定义_关键词数据

2025/2/26 12:49:56 来源:https://blog.csdn.net/qq_56444188/article/details/145861868  浏览:    关键词:网站大全下载软件安装_我赢网seo优化网站_软文营销定义_关键词数据
网站大全下载软件安装_我赢网seo优化网站_软文营销定义_关键词数据

编写一个如下场景:
有一个英雄Hero类,私有成员,攻击,防御,速度,生命值,以及所有的set get 方法
编写一个 武器 Weapon 类,拥有私有成员攻击力,以及set get 方法
编写一个 长剑 Sword 类,继承自武器类,拓展属性 生命值,以及set get 方法
编写一个 匕首Blade类,继承自武器类,拓展属性 速度,以及set get 方法
编写一个 斧头 Axe类,继承自武器类,拓展属性 防御力,以及set get 方法

武器Weapon类里面,要求有一个多态函数,叫做 equip 函数
英雄Hero类里面,要求有一个公开函数,equipWeapon(Weapon* w)
实现功能:英雄既可以装备长剑,也可以装备短剑,也可以装备斧头,但是要求装备不同的武器,英雄需要获得不同的属性加成

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>using namespace std;class Weapon {
protected:int attackPower; public:Weapon(int attackPower) : attackPower(attackPower) {}void setAttackPower(int attackPower) {this->attackPower = attackPower;}int getAttackPower() const {return attackPower;}virtual void equip() const {}
};class Sword : public Weapon {
private:int healthBoost; public:Sword(int attackPower, int healthBoost) : Weapon(attackPower), healthBoost(healthBoost) {}void setHealthBoost(int healthBoost) {this->healthBoost = healthBoost;}int getHealthBoost() const {return healthBoost;}void equip() const override {cout << "装备长剑:+" << attackPower << " 攻击力,+" << healthBoost << " 生命值。" << endl;}
};class Blade : public Weapon {
private:int speedBoost; public:Blade(int attackPower, int speedBoost) : Weapon(attackPower), speedBoost(speedBoost) {}void setSpeedBoost(int speedBoost) {this->speedBoost = speedBoost;}int getSpeedBoost() const {return speedBoost;}void equip() const override {cout << "装备匕首:+" << attackPower << " 攻击力,+" << speedBoost << " 速度。" << endl;}
};class Axe : public Weapon {
private:int defenseBoost; public:Axe(int attackPower, int defenseBoost) : Weapon(attackPower), defenseBoost(defenseBoost) {}void setDefenseBoost(int defenseBoost) {this->defenseBoost = defenseBoost;}int getDefenseBoost() const {return defenseBoost;}void equip() const override {cout << "装备斧头:+" << attackPower << " 攻击力,+" << defenseBoost << " 防御力。" << endl;}
};class Hero {
private:int attack;int defense;int speed;int health;public:Hero(int attack, int defense, int speed, int health): attack(attack), defense(defense), speed(speed), health(health) {}void setAttack(int attack) {this->attack = attack;}int getAttack() const {return attack;}void setDefense(int defense) {this->defense = defense;}int getDefense() const {return defense;}void setSpeed(int speed) {this->speed = speed;}int getSpeed() const {return speed;}void setHealth(int health) {this->health = health;}int getHealth() const {return health;}void equipWeapon(Weapon* w) {cout << "装备武器" << endl;w->equip(); }
};int main() {Hero hero(10, 10, 10, 100);cout << "初始属性:攻击力 " << hero.getAttack() << ",防御力 " << hero.getDefense()<< ",速度 " << hero.getSpeed() << ",生命值 " << hero.getHealth() << endl;Sword sword(10, 20);Blade blade(10, 20);Axe axe(20, 10);hero.equipWeapon(&sword);hero.equipWeapon(&blade);hero.equipWeapon(&axe);return 0;
}

输出结果:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com