武器杀伤有限制

来源:互联网 发布:php倒计时 编辑:程序博客网 时间:2024/06/10 03:57

在之前的基础上增加距离等新功能

//孙悟空大战红孩儿#include<iostream>  #include<string>  using namespace std;  class weapon //武器属性 {  public: friend class Role;    weapon(string na,int po,int di)      {          name=na;          power=po; distant=di;    }      int getpower();      string getname();  int getdist();private:      string name;      int power; int distant;};  string weapon::getname()  {      return name;  }  int weapon::getpower()  {      return power;  }   int weapon::getdist(){return distant;}class Role  //角色{  public:      Role(string nam,int n,string we,int p,int di,int dis);      ~Role();      void show();      void attack(Role &other);      void eat(int n);      bool isAlive();      string getname();  int getdistance();void runaway(Role &r);//逃跑int deledis();//减小距离int addpower();//增加武器的威力int getblood();//血量private:      string name;      int blood;      weapon weapon; //定义一个武器,也可定义多个武器,例如:weapon weapon[20],表示二十个武器int distance;    bool life;  };  int Role::getblood(){return blood;}int Role::addpower (){cout<<name<<"想起了家中的母亲,不能就此死去,他张开大口,三昧真火的颜色变了,攻击力加200"<<endl;return weapon.power+=200;//将Role类定义为weapon的朋友类,访问weapon的私有成员。}int Role::deledis(){cout<<name<<"向前推进200米"<<endl;return distance-=200;}void Role::runaway(Role &r){if(blood<20)cout<<name<<"打不过"<<r.name<<",他逃跑了。"<<endl;}int Role::getdistance(){return distance;}  string Role::getname()  {      return name;  }  void Role::attack(Role &other)  {      if(isAlive())      {          cout<<name<<"使用"<<weapon.getname()<<"攻击"<<other.getname()<<',';  if(weapon.getdist()>getdistance()){        cout<<other.getname()<<"损失"<<weapon.getpower()<<"滴血,";  cout<<name<<"得到"<<weapon.getpower()/2<<"滴血"<<endl;  blood+=weapon.getpower()/2;      other.blood-=weapon.getpower();  if(other.blood<=0)  life=false;}else{cout<<"但是敌人距离超出武器攻击范围,攻击无效"<<endl;}    }  }  void Role::eat(int n)  {      if(isAlive())          cout<<name<<"逃跑过程中使用了回血丹,血量增加"<<n<<"点"<<endl;          blood+=n;  }  bool Role::isAlive()  {      return life;  }  Role::Role(string nam,int n,string we,int p,int di,int dis):name(nam),blood(n),weapon(we,p,di),distance(dis)//改了参数之后表示weapon的参数为三;  {      if(blood>0)          life= true;      else          life= false;  }  Role::~Role()  //析构函数,在程序结束的时候调用{      if(blood<=0)      cout<<name<<"退出江湖"<<endl;  }    void Role::show()  {      if(blood>0)      cout<<name<<"还剩"<<blood<<"滴血"<<endl;  }    int main( )  {      cout<<"初始状态:"<<endl;      Role mary("孙悟空", 100,"金箍棒",90,100,10);  //最后两个是武器的攻击距离,和距离武器的距离    Role jack("红孩儿", 100,"三昧真火",10,150,300);      mary.show();      jack.show();      cout<<"第一回合:"<<endl;      mary.attack(jack);      jack.attack(mary); mary.runaway(jack);if(jack.getblood()>0)jack.runaway(mary);cout<<"这一回合:"<<endl;    jack.eat(50);      mary.show();      jack.show();      cout<<"第二回合:"<<endl;jack.deledis();jack.addpower();    jack.attack(mary); if(mary.getblood()>0)mary.attack(jack);  cout<<"这一回合:"<<endl;    mary.show();      jack.show(); cout<<"母爱好伟大!"<<endl;    return 0;  }  

运行结果:


0 0
原创粉丝点击