*Copyright(c) 2016.烟台大学计算机与控制工程学院
*ALL rights reserved.
*文件名称:main.cpp
*作者:孙亚茹
*完成日期:2016年6月7日
*问题描述:与角色类相结合设计一个武器类。
*//
#include <iostream>
using namespace std;
class Wuqi
{
private:
string name;
string type;
int force;
public:
Wuqi(string nam,string ty,int f):name(nam),type(ty),force(f){};
void show();
int getForce();
};
void Wuqi::show()
{
cout<<"所用武器名字为:"<<name<<" "<<"所属系别是:"<<type<<" "<<"杀伤力是:"<<force<<endl;
}
int Wuqi::getForce()
{
return force;
}
class Role
{
public:
Role(string nam,int b,string nam1,string ty1,int f1):name(nam),blood(b),w(nam1,ty1,f1) {};
~Role();
void show();
void attack(Role &r);
void eat(int n);
bool isLife();
private:
string name;
int blood;
bool life;
Wuqi w;
};
bool Role::isLife()
{
if(blood>0)
return true;
else
return false;
}
Role::~Role()
{
cout<<name<<"退出江湖..."<<endl;
}
void Role::attack(Role &r)
{
if(isLife())
{
blood+=w.getForce();
r.blood-=w.getForce();
}
}
void Role::eat(int n)
{
if(isLife())
{
blood+=n;
}
}
void Role::show()
{
if(isLife())
{
cout<<name<<"还有"<<blood<<"滴血"<<" ";
w.show();
}
else
cout<<name<<"已经死了"<<endl;
}
int main()
{
Wuqi w1("倚天剑","剑系",4);
Wuqi w2("屠龙刀","刀系",3);
Role mary("Mary",4,"倚天剑","剑系",2);
Role jack("Jack",3,"屠龙刀","刀系",1);
mary.show();
jack.show();
int n;
while(1)
{
cout<<" 1 maryAttack 2 maryEat 3 jackAttack 4 jackEat"<<endl;
cout<<"请您选择相应的动作:"<<endl;
cin>>n;
if(n==1)
{
mary.attack(jack);
mary.show();
jack.show();
cout<<endl;
}
else if(n==2)
{
mary.eat(2);
mary.show();
cout<<endl;
}
else if(n==3)
{
jack.attack(mary);
jack.show();
mary.show();
cout<<endl;
}
else if(n==4)
{
jack.eat(2);
jack.show();
cout<<endl;
}
else
break;
}
return 0;
}
总结:
虽然程序复杂繁琐,但只要耐下心去总结思考就一定能将程序写的完满。
考查了类的对象作为另一个类的数据成员时的构造函数的写法。
不利用继承与派生一个类的数据成员的也能是另一个类的对象。