作业2.6————虚函数应用

题目

 

代码

#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;
}

实现结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值