C++。。。。。。。。。。。。。6

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>

using namespace std;

class Weapon; // 武器类前向声明

// 英雄类
class Hero {
private:
    int attack;    // 攻击力
    int defense;   // 防御力
    int speed;     // 速度
    int health;    // 生命值

public:
    Hero(int attack = 0, int defense = 0, int speed = 0, int health = 0)
        : attack(attack), defense(defense), speed(speed), health(health) {}

    // 获取攻击力
    int getAttack() const {
        return attack;
    }

    // 设置攻击力
    void setAttack(int attack) {
        this->attack = attack;
    }

    // 获取防御力
    int getDefense() const {
        return defense;
    }

    // 设置防御力
    void setDefense(int defense) {
        this->defense = defense;
    }

    // 获取速度
    int getSpeed() const {
        return speed;
    }

    // 设置速度
    void setSpeed(int speed) {
        this->speed = speed;
    }

    // 获取生命值
    int getHealth() const {
        return health;
    }

    // 设置生命值
    void setHealth(int health) {
        this->health = health;
    }

    // 装备武器
    void equipWeapon(Weapon* weapon);

    // 显示英雄属性
    void showStatus() const;
};

// 武器基类
class Weapon {
private:
    int attack; // 攻击力

public:
    Weapon(int attack = 0) : attack(attack) {}

    // 获取攻击力
    int getAttack() const {
        return attack;
    }

    // 设置攻击力
    void setAttack(int attack) {
        this->attack = attack;
    }

    // 多态函数:装备武器
    virtual void equip(int& , int& , int& , int& ) const = 0;
};

// 长剑类
class Sword : public Weapon {
private:
    int healthBonus; // 生命值加成

public:
    Sword(int attack = 0, int healthBonus = 0) : Weapon(attack), healthBonus(healthBonus) {}

    // 获取生命值加成
    int getHealthBonus() const {
        return healthBonus;
    }

    // 设置生命值加成
    void setHealthBonus(int healthBonus) {
        this->healthBonus = healthBonus;
    }

    // 实现 equip 函数
    void equip(int& heroAttack, int& heroDefense, int& heroSpeed, int& heroHealth) const override {
        heroAttack += getAttack(); // 增加攻击力
        heroHealth += healthBonus; // 增加生命值
    }
};

// 匕首类
class Blade : public Weapon {
private:
    int speedBonus; // 速度加成

public:
    Blade(int attack = 0, int speedBonus = 0) : Weapon(attack), speedBonus(speedBonus) {}

    // 获取速度加成
    int getSpeedBonus() const {
        return speedBonus;
    }

    // 设置速度加成
    void setSpeedBonus(int speedBonus) {
        this->speedBonus = speedBonus;
    }

    // 实现 equip 函数
    void equip(int& heroAttack, int& heroDefense, int& heroSpeed, int& heroHealth) const override {
        heroAttack += getAttack(); // 增加攻击力
        heroSpeed += speedBonus;   // 增加速度
    }
};

// 斧头类
class Axe : public Weapon {
private:
    int defenseBonus; // 防御力加成

public:
    Axe(int attack = 0, int defenseBonus = 0) : Weapon(attack), defenseBonus(defenseBonus) {}

    // 获取防御力加成
    int getDefenseBonus() const {
        return defenseBonus;
    }

    // 设置防御力加成
    void setDefenseBonus(int defenseBonus) {
        this->defenseBonus = defenseBonus;
    }

    // 实现 equip 函数
    void equip(int& heroAttack, int& heroDefense, int& heroSpeed, int& heroHealth) const override {
        heroAttack += getAttack();    // 增加攻击力
        heroDefense += defenseBonus;  // 增加防御力
    }
};


// 装备武器
void Hero::equipWeapon(Weapon* weapon) {
    weapon->equip(attack, defense, speed, health);
}

// 显示英雄属性
void Hero::showStatus() const {
    cout << "攻击力: " << attack << ", 防御力: " << defense
         << ", 速度: " << speed << ", 生命值: " << health << endl;
}

int main() {
    // 创建英雄
    Hero hero(100, 50, 30, 500);
    cout << "初始属性: ";
    hero.showStatus();

    // 创建武器
    Sword sword(20, 100);   // 长剑:攻击力 +20,生命值 +100
    Blade blade(15, 10);    // 匕首:攻击力 +15,速度 +10
    Axe axe(30, 20);        // 斧头:攻击力 +30,防御力 +20

    // 装备长剑
    hero.equipWeapon(&sword);
    cout << "装备长剑后: ";
    hero.showStatus();

    // 装备匕首
    hero.equipWeapon(&blade);
    cout << "装备匕首后: ";
    hero.showStatus();

    // 装备斧头
    hero.equipWeapon(&axe);
    cout << "装备斧头后: ";
    hero.showStatus();

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值