第七周实践项目-用多文件组织多个类的程序

来源:互联网 发布:沈阳seo搜索优化软件 编辑:程序博客网 时间:2024/05/21 10:29
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:77.cpp *作    者:董凯琦 *完成日期:2016年4月12日 *版 本 号:v1.0 * *问题描述:将上一周“项目2-带武器的游戏角色”用“一个项目多个文件”的方式实现,  其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()  函数用一个文件。体会这样安排的优点。 *输入描述: *程序输出: */


1.game.h:类声明

#ifndef GAME_H_INCLUDED  #define GAME_H_INCLUDED  using namespace std;  class Weapon  {  public:      Weapon(string wnam, int f);     int getForce();  private:     string wname;        int force;       };    class Role  {  public:     Role(string nam, int b, string wnam, int f);    ~Role();       void eat(int d);       void attack(Role &r);       bool isAlived();     void show();   private:      string name;      int blood;      Weapon weapon;     bool life;  };  #endif 


role.cpp:定义角色类的成员函数

#include <iostream>  #include "game.h"  using namespace std;    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)   {      if(isAlived())          blood+=d;  }    void Role::attack(Role &r) {      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;  }


 

3.weapon.cpp:武器类的成员函数的实现

#include <iostream>  #include "game.h"  using namespace std;    Weapon::Weapon(string wnam, int f):wname(wnam),force(f) {}    int Weapon::getForce()  {      return force;  } 


4.main.cpp:测试函数

#include <iostream>  #include "game.h"  using namespace std;  int main( )  {      Role mary("Mary", 500, "TuLong",200);      Role jack("Jack", 10, "YiTian", 180);      cout<<"---begin---"<<endl;      mary.show();      jack.show();      cout<<"---1st round---"<<endl;      jack.attack(mary);      mary.show();     jack.show();     cout<<"---2nd round---"<<endl;     mary.attack(jack);     mary.show();     jack.show();     cout<<"---end---"<<endl;     return 0;  }  


 

0 0
原创粉丝点击