第6周项目2:带武器的游戏角色

来源:互联网 发布:js标签切换代码 编辑:程序博客网 时间:2024/06/07 03:19
<pre name="code" class="cpp">/*  * Copyright(c)2016,烟台大学计算机与控制工程学院  * All rights reserved.  * 文件名称:第6周项目2:带武器的游戏角色  * 作者:马康泰 * 完成日期:2016.4.5  * 版本号:v1.0  *  * 问题描述:设计一个武器类,其数据成员至少要有武器名、威力,还可以加上你想描述武器的其他数据。想一想要对武器实施什么处理,设计其成员函数。在上周的游戏角色类Role基础上扩充,为每个角色创建一个武器,并在攻击(attack)行为发生时,武器在其中起作用。制定游戏规则,使之接近于真实的游戏场景,并利用成员函数实现游戏规则,最后在main函数中通过调用相应的成员函数,模拟游戏过程。  * 输入描述:  * 程序输出:  */  #include <iostream>  using namespace std;  class Weapon  {  public:      Weapon(string wnam, int f);      int getForce();  private:      string wname;   //名称      int force;       //威力  };  Weapon::Weapon(string wnam, int f):wname(wnam),force(f) {}  int Weapon::getForce()  {      return force;  }  class Role  {  public:      Role(string nam, int b, string wnam, int f); //构造函数      ~Role()    {           cout<<name<<"退出江湖..."<<endl;      }; //析构函数      void eat(int d); //吃东西,涨d血      void attack(Role &r); //攻击别人,自己涨血,同时失血      bool isAlived(); //是否活着      void show(); //显示  private:      string name;      int blood;      Weapon weapon;      bool life;  };  Role::Role(string nam, int b, string wnam, int f):name(nam),blood(b),weapon(wnam,f)  {      if(blood>0)          life=true;      else          life=false;  }  /*Role::~Role()  {      cout<<name<<"退出江湖..."<<endl;  } */ void Role::eat(int d) //吃东西,涨d血  {      if(isAlived())          blood+=d;  }  void Role::attack(Role &r) //攻击别人,涨1血  {      if(isAlived())      {          blood+=weapon.getForce();          r.blood-=weapon.getForce();          if(r.blood<=0)              r.life=false;      }  }    bool Role::isAlived() //是否活着  {      return life;  }    void Role::show() //显示  {      cout<<name<<" has "<<blood<<" blood, it is ";      if(isAlived())          cout<<"alived.";      else          cout<<"dead.";      cout<<endl;  }  int main( )  {      Role mary("gailun", 300, "heiqie",100);      Role jack("jiansheng", 200, "wujin", 150);      cout<<"---开始---"<<endl;      mary.show();      jack.show();      cout<<"---第一回合---"<<endl;      jack.attack(mary);      mary.show();      jack.show();      cout<<"---第二回合---"<<endl;      mary.attack(jack);      mary.show();      jack.show();      cout<<"---结束---"<<endl;      return 0;  } 


                                             
0 0