多态打怪兽:
#include <iostream>
using namespace std;
int monster_blood = 10000;
class Hero
{
string name;
int hp;
int attack;
public:
Hero()
{
}
Hero(string name, int hp, int attack):name(name), hp(hp), attack(attack)
{
}
int get_attack();
virtual void Atk()
{
monster_blood -= 0;
}
};
int Hero::get_attack()
{
return attack;
}
class Master:public Hero
{
int ap_atk = 50;
public:
using Hero::Hero;
void Atk()
{
monster_blood -= (get_attack() + ap_atk);
}
};
class Shooter:public Hero
{
int ad_atk = 100;
public:
using Hero::Hero;
void Atk()
{
monster_blood -= (get_attack() + ad_atk);
}
};
int main()
{
Master ap_hero("master", 150, 100);
Shooter ad_hero("shooter", 200, 100);
int count = 0;
while(monster_blood > 0)
{
ad_hero.Atk();
ap_hero.Atk();
count++;
}
cout << "经过 " << count << "次后,monster被击杀!" << endl;
return 0;
}
思维导图