第六周 项目二 带武器的游戏角色

问题及代码:

/*

*Copyright(c) 2016.烟台大学计算机与控制工程学院

*ALL rights  reserved.

*文件名称:main.cpp

*作者:郝昱猛

*完成日期:2016年4月7日

*问题描述: 设计一个武器类,要有武器名、威力。在上周的游戏角色类Role基础上扩充,为每个角色创建一个武器,并在攻击(attack)行为发生时,武器在其中起作用。

*/


#include<iostream>
using namespace std;
class weapon
{
public:
   weapon(string wnam,int forc);
   int  getforce();
private:
    string wname;
    int force;
};
weapon::weapon(string wnam,int forc):wname(wnam),force(forc){}
int weapon::getforce()
{
    return force;
}
class Role
{
public:
    Role(string nam,int blo,string wnam,int forc);
    ~Role();
    void eat(int n);
    bool isAlived();
    void attack(Role &r);
    void show();
private:
    string name;
    int blood;
    weapon weap;
    bool life;
};
Role::Role(string nam,int blo,string wnam,int forc):name(nam),blood(blo),weap(wnam,forc)
{
    if(blood>0)
        life=true;
    else
        life=false;
}
Role::~Role()
{
    cout<<" 退出江湖@。@ "<<endl;
}
void Role::eat(int n)
{
    if(isAlived())
        blood+=n;
}
bool Role::isAlived()
{
    return life;
}
void Role::attack(Role &r) //攻击别人,涨1血
{
   if(isAlived())
    {
        blood+=weap.getforce();
        r.blood-=weap.getforce();
        if(r.blood<=0)
            r.life=false;
    }
}
void Role::show() //显示
{
    cout<<name<<" has "<<blood<<" blood, it is ";
    if(isAlived())
        cout<<"alived.";
    else
        cout<<"dead.";
    cout<<endl;
}
int main()
{
    Role mary("mary",500,"wujin",200);
    Role jack("jack",10,"pobai",180);
    cout<<" begin "<<endl;
    mary.show();
    jack.show();
    cout<<" the first combat "<<endl;
    jack.attack(mary);
    mary.show();
    jack.show();
    cout<<" the second combat "<<endl;
    mary.attack(jack);
    mary.show();
    jack.show();
    cout<<" end "<<endl;
    return 0;
}


运行结果:

第六周 项目二 带武器的游戏角色_第1张图片

你可能感兴趣的:(第六周 项目二 带武器的游戏角色)