C++ day44

程序定义了一个全局变量`monster`表示怪物的血量,创建了`Hero`基类,包含无参和有参构造函数,以及虚函数`AtK()`。`Mage`和`Archer`类分别继承自`Hero`,并重写了`AtK()`函数,增加法师和射手的特殊攻击。在主函数中,实例化法师和射手对象,循环进行攻击,直到怪物血量为0,输出‘怪物被杀死!’。
摘要由CSDN通过智能技术生成

1、全局变量,int monster = 10000;定义英雄类hero,受保护的属性string name,int hp,int attcKk;公有的无参构造,有参构造,虚成员函数void AtK()[blood-=0,},法师类继承自英雄类,私有属性int ap_atk=50;重写虚成员函数void AtKk()(blood-=-(attck+ap_atk);};射手类继承自英雄类,私有属性int ac_atk = 100;重写虚成员函数void AtK()blood-=(attck+ac_atk)}实例化类对象,判断怪物何时被杀死。

#include <iostream>
using namespace std;
int monster = 10000;

class Hero
{
private:
    string name;
public:
    int hp;
    int attck;
    Hero(){}
    Hero(string _name, int _hp, int _attck)
    {
        name = _name;
        hp = _hp;
        attck = _attck;
    }
    virtual void AtK()
    {
        hp -= 0;
    }
};

class Mage:public Hero
{
private:
    int ap_attck = 50;
public:
    Mage(){}
    Mage(string _name,int _hp,int _attck):Hero(_name, _hp, _attck){}
    void AtK() override
    {
        hp -= (attck + ap_attck);
    }
};

class Archer:public Hero
{
private:
    int ac_attck = 100;
public:
    Archer(){}
    Archer(string _name,int _hp,int _attck):Hero(_name, _hp, _attck){}
    void AtK() override
    {
        hp -= (attck + ac_attck);
    }
};

int main()
{
    Mage mage("Mage", 100, 20);         // 实例化法师对象
    Archer archer("Archer", 150, 30);   // 实例化射手对象
    while (monster > 0)
    {
        mage.AtK();
        archer.AtK();
        monster -= (mage.attck + archer.attck);
        cout << "怪物血量: " << monster << endl;
    }
    cout << "怪物被杀死!" << endl;

    return 0;
}

2、思维导图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值