/* *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; }