1、作业需求
2、实现过程
#include <iostream>
using namespace std;
int crystal_blood = 5000; //水晶血量
//英雄类
class Hero
{
protected:
string name; //英雄名字
int blood; //血量
public:
Hero() {}
Hero(string n, int b);
virtual ~Hero() {}
virtual void Crystal() = 0; //攻击水晶函数
};
//坦克类
class Tank:public Hero
{
protected:
int attack; //攻击力
public:
Tank() {}
Tank(string n, int b, int a);
~Tank() {}
//重写攻击水晶函数
void Crystal();
};
//刺客类
class Assassin:public Hero
{
protected:
int chastise; //惩戒
public:
Assassin() {}
Assassin(string n, int b, int c);
~Assassin() {}
//重写攻击水晶函数
void Crystal();
};
//英雄类有参构造函数
Hero::Hero(string n, int b):name(n), blood(b) {}
//坦克类有参构造函数
Tank::Tank(string n, int b, int a):Hero(n, b), attack(a) {}
//刺客类有参构造函数
Assassin::Assassin(string n, int b, int c):Hero(n ,b), chastise(c) {}
//重写坦克攻击水晶函数
void Tank::Crystal()
{
crystal_blood = crystal_blood-(100+attack);
cout<<"水晶受到 "<<name<<" 的攻击,血量下降为"<<crystal_blood<<endl;
}
//重写刺客攻击水晶函数
void Assassin::Crystal()
{
crystal_blood = crystal_blood-(100+chastise);
cout<<"水晶受到 "<<name<<" 的攻击,血量下降为"<<crystal_blood<<endl;
}
void fun(Hero *h)
{
h->Crystal();
}
int main()
{
Tank t1("亚瑟", 1500, 100);
Assassin a1("李白", 1000, 120);
cout<<"水晶总血量为:"<<crystal_blood<<endl;
int i = 0;
while(i<5) {
fun(&t1);
fun(&a1);
i++;
}
cout<<"水晶剩余血量为:"<<crystal_blood<<endl;
return 0;
}
3、效果截图