/*1.全局变量,int monster = 10000;定义英雄类hero,受保护的属性string name,int hp,int attck;公有的无参构造,有参构造,虚成员函数 void Atk(){blood-=0;},法师类继承自英雄类,私有属性 int ap_atk=50;重写虚成员函数void Atk(){blood-=(attck+ap_atk);};射手类继承自英雄类,私有属性 int ac_atk = 100;重写虚成员函数void Atk(){blood-=(attck+ac_atk);}实例化类对象,判断怪物何时被杀死。*/
#include <iostream>
using namespace std;
int blood = 10000; // 怪物初始血量
class Hero {
protected:
string name;
int hp;
int attack;
public:
Hero() {
name = "";
hp = 0;
attack = 0;
}
Hero(string n, int h, int a) {
name = n;
hp = h;
attack = a;
}
virtual void Atk() {
blood -= attack;
}
int GetHp() const {
return hp;
}
};
class Mage : public Hero {
private:
int ap_attack;
public:
Mage(string n, int h, int a, int ap) : Hero(n, h, a) {
ap_attack = ap;
}
void Atk() override {
blood -= (attack + ap_attack);
}
};
class Archer : public Hero {
private:
int ac_attack;
public:
Archer(string n, int h, int a, int ac) : Hero(n, h, a) {
ac_attack = ac;
}
void Atk() override {
blood -= (attack + ac_attack);
}
};
int main() {
Mage mage("Mage", 150, 50, 50);
Archer archer("Archer", 120, 70, 100);
int count = 0; // 添加计数器
while (blood > 0) {
mage.Atk();
archer.Atk();
count++; // 攻击后递增计数器
}
cout << "monster has been killed in " << count << " attacks!" << endl;
return 0;
}
C++——Day5
于 2023-07-03 20:21:10 首次发布