题目
代码
#include <iostream>
using namespace std;
class Tank;
class Assassin;
void fun(Tank &t,Assassin &a);
//基地血量
int base=1500;
//英雄类
class Hero
{
protected:
string name;
int HP;
int baseatk;
public:
Hero() {}
Hero(string n,int h,int b):name(n),HP(h),baseatk(b) {}
virtual int attack_base()=0;
virtual ~Hero() {}
};
//坦克类
class Tank:public Hero
{
protected:
int attack;
public:
Tank() {}
Tank(string n,int h,int b,int a):Hero(n,h,b),attack(a)
{
cout<<"你所选择的坦克英雄为:"<<name<<endl;
cout<<"你所选择的坦克英雄基础血量为:"<<HP<<endl;
cout<<"你所选择的坦克英雄基础攻击值为:"<<attack<<endl;
}
int attack_base()override
{
cout<<"正在攻击敌方水晶"<<endl;
cout<<"敌方水晶受到伤害"<<(baseatk+attack)<<endl;
return (baseatk+attack);
}
virtual ~Tank() {}
friend void fun(Tank &t,Assassin &a);
};
//刺客类
class Assassin:public Hero
{
protected:
int punish;
public:
Assassin() {}
Assassin(string n,int h,int b,int p):Hero(n,h,b),punish(p)
{
cout<<"你所选择的刺客英雄为:"<<name<<endl;
cout<<"你所选择的刺客英雄基础血量为:"<<HP<<endl;
cout<<"惩戒伤害为:"<<punish<<endl;
}
int attack_base()override
{
cout<<"正在攻击敌方水晶"<<endl;
cout<<"敌方水晶受到伤害"<<(baseatk+punish)<<endl;
return (baseatk+punish);
}
virtual~ Assassin() {}
friend void fun(Tank &t,Assassin &a);
};
void fun(Tank &t,Assassin &a)
{
cout<<endl;
cout<<"敌方水晶血量为"<<base<<endl;
cout<<endl;
int m = t.attack_base();
cout<<endl;
int n = a.attack_base();
cout<<endl;
if((m+n)>=1500)
{
cout<<"敌方水晶爆炸,游戏胜利"<<endl;
}else
{
cout<<"敌方水晶尚在"<<endl;
}
}
int main()
{
Tank t("廉颇",2000,500,200);
cout<<endl;
Assassin a("兰陵王",1500,650,250);
fun(t,a);
return 0;
}
实现结果