类和对象(游戏)

(1)补充完整需要的成员函数,使角色能一定的规则行动或改变状态。

#include<iostream>
#include <string>
using namespace std;
class Role
{
public:
        void setRole(string nam,int n);
	void show();
	void attack();
	void beAttack();
	void eat(int n);
	bool isAlived();
private:
    string name;
    int blood;
    bool life;
};
bool Role::isAlived()
{
	return life;

}
void Role::setRole(string nam,int n)
{
	blood=n;
	name=nam;
	if(blood>0)
		life=true;
	else
		life=false;
}
void Role::show()
{
	cout<<name<<"还剩"<<blood<<"滴血,";
	if(isAlived())
		cout<<"还活着";
	else
		cout<<"死掉了";
	cout<<endl;
}
void Role::attack()
{
	if(isAlived())
		blood+=1;
}
void Role::beAttack()
{
	if(isAlived())
        blood--;
    if(blood==0)
        life=false;
}
void Role::eat(int n)
{
	if(isAlived())
		blood+=n;
}
int main( )
{
    Role mary;
    mary.setRole("Mary",4);
    mary.show();
    mary.attack();
    mary.eat(2);
    mary.beAttack();
    mary.beAttack();
    mary.show();
    return 0;
}
(2)设计构造函数,使角色对象在创建时被初始化;设计析构函数,当角色对象被撤消时,提示一句“XXX(名称)退出江湖…”。

#include<iostream>
#include<string>
using namespace std;

class Role
{
public:
	Role(string nam,int n)
	{
		this->name=nam;
		this->blood=n;
	}
	~Role()
	{
		if(!blood)
		cout<<name<<"退出江湖"<<endl;
	}
	void show();
private:
	string name;
	int blood;
};

void Role::show()
{
	if(blood)
	cout<<name<<"还剩"<<blood<<"滴血"<<endl;
}

int main( )
{
	Role mary("Mary", 4);
	Role jack("Jack", 0);
	mary.show();
	jack.show();
	return 0;
}


开始总是出现binary '<<' : no operator defined which takes a right-hand operand of type 'void' (or there is no acceptable conversion),百度搜索说是少了#include<string>,或者是程序中<<加了返回值为void类型的函数;我看原来的程序的确是这样的,加上之后还是有好多的错误,把开始的函数类型由int改成void,想到应该会,去掉原来的返回值,还是不对,参考老师的程序之后还是有问题,然后直接把老师的程序放进了VC6.0之后也是和我同样的问题出现,想着可能是编译环境的问题,就用visual 2012运行,还是不对,现在的问题比原来还要多了。最后发现是我自己的一个函数 void isAlived()函数内部写成了if(isAlived()) blood-=blood;,并没有将返回值传给life。
用string 定义一个变量还是第一次见,之前看见的string只是在头文件看见的,只是在字符串的操作当中才看见。知识只有我们想不到的,没有办不到的,我还得加油。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值