当前位置: 首页 > news >正文

C++day6

编写一个如下场景:
有一个英雄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;
}

输出结果:

相关文章:

  • 【MyBatis】带你快速掌握 —— CRUD
  • deepseek 学习资料整理
  • 直击高频编程考点:聚焦新版综合编程能力考查汇总
  • 【nginx】:给nginx增加 password 配置通过简单的方式限制登陆。使用openssl 生成密码
  • 个人电脑小参数GPT预训练、SFT、RLHF、蒸馏、CoT、Lora过程实践——MiniMind图文版教程
  • 用AI学习RPA——机器人流程自动化实现路径1
  • springboot实现多文件上传
  • 3DM转换成OBJ
  • ultralytics导出engine之后,用tensorrt c++ api加载报Serialization failed
  • 【Python爬虫(59)】解锁学术文献网站数据爬取:从登录到知识图谱构建
  • [算法--前缀和] 矩阵区域和
  • 【Golang】go语言异常处理快速学习
  • PHP应用程序设计:一个实际的例子(3)
  • 【博资考2】网安学院-北航网安基础部分(简洁版)
  • zabbix“专家坐诊”第276期问答
  • 八、Spring Boot:RESTful API 应用
  • 【链 表】
  • matlab 海浪模型和舰艇动力学模型
  • 【后端】微服务架构
  • 【学习笔记】Cadence电子设计全流程(三)Capture CIS 原理图绘制(中)
  • 全国游泳冠军赛:孙杨、潘展乐同进400自决赛,今晚将正面对决
  • 长三角体育节回归“上海时间”,首次发布赛事旅游推荐线路
  • 马上评|重病老人取款身亡,如何避免类似悲剧?
  • 商务部召开全国离境退税工作推进会:提高退税商店覆盖面,扩大入境消费
  • 今年有望投产里程已近3000公里,高铁冲刺谁在“狂飙”?
  • 基金经理调仓引发大金融板块拉升?公募新规落地究竟利好哪些板块