今日思维导图
法师类,射手类轮流攻击;判断blood什么时候为0;
#include <iostream>
using namespace std;
int blood=10000;
class hero
{
protected:
string name;
int hp;
int attack;
public:
hero(){}//无参构造
hero(string name,int hp,int attack):name(name),hp(hp),attack(attack)
{
}//有参构造
virtual void Atk() //虚函数
{
blood-=0;
}
};
class Caster:public hero
{
private:
int ap_atk=50;
public:
Caster(string name,int hp,int attack):hero(name,hp,attack)
{
cout<<"caster的构造函数"<<endl;
}
void Atk()
{
blood-=(attack+ap_atk);
cout<<name<<"正在攻击!"<<"现在怪物还剩多少血:"<<blood<<endl;
}
};
class Archer:public hero
{
private:
int ac_atk=100;
public:
Archer(string name,int hp,int attack):hero(name,hp,attack)
{
cout<<"archer的构造函数"<<endl;
}
void Atk()
{
blood-=(attack+ac_atk);
cout<<name<<"正在攻击!"<<"现在怪物还剩多少血:"<<blood<<endl;
}
};
void atk(hero &h)
{
h.Atk();
}
int main()
{
int count=0;
Caster c1("AP",1000,950);
Archer a1("ADC",1000,400);
while(blood>0)
{
atk(c1);
if(blood>0)
{
atk(a1);
cout<<"这是第"<<++count<<"波的攻击"<<endl;
}
else {
cout<<"这是第"<<++count<<"波的攻击"<<endl;
break;
}
}
cout<<"攻击结束"<<endl;
return 0;
}
运行结果: