/*
*copyright (c) 2016,烟台大学计算机学院
*All rights reserved.
*文件名称:hellow.cpp
*作者:田甜
*完成日期:2016年3月31日
*版本号:v1.0
*
*问题描述:设计一个游戏角色类
*输入描述:输入角色姓名,生命值
*程序输出:角色当前状态,并在角色使用结束后输出退出江湖
*/
问题及代码:
#include <iostream>
using namespace std;
class Role
{
public:
Role(string nam,int blo);
~Role();
void shoe_role();
bool is_alived();
void attack();
void be_attacked();
void eat(int d);
private:
string name;
int blood;
bool life;
};
Role::Role(string nam,int blo)//构造函数
{
name=nam;
blood=blo;
if(blood>0)
life=true;
else
life=false;
}
Role::~Role()//析构函数
{
cout<<name<<"退出江湖。。。"<<endl;
}
void Role::shoe_role()//显示角色状态
{
cout<<name<<" has "<<blood<<" blood, it is ";
if(is_alived())
cout<<"alived."<<endl;
else
cout<<"died."<<endl;
}
void Role::eat(int d)//吃东西涨血,涨d个血
{
if(is_alived())
blood+=d;
}
void Role::attack()//攻击其他玩家,涨一个血
{
if(is_alived())
blood++;
}
void Role::be_attacked()//被攻击,失一个血
{
if(is_alived())
blood--;
}
bool Role::is_alived()//判断角色是否死亡
{
if(blood>0)
life=true;
else
life=false;
return life;
}
int main()
{
Role mary("mary",4);
Role jack("jack",2);
mary.attack();
jack.be_attacked();
mary.shoe_role();
jack.shoe_role();
mary.attack();
jack.be_attacked();
mary.eat(2);
mary.shoe_role();
jack.shoe_role();
return 0;
}
运行结果:
心得:构造函数的名字与类名相同,且没有类型。析构函数在主函数中不需要语句调用就可自动执行