读书人

类的有关问题

发布时间: 2012-03-31 13:13:26 作者: rapoo

求助 类的问题

C/C++ code
#include<iostream>#include<string>using namespace std;class Soldier{protected:    int maxHP,HP;    int maxSP,SP;    int damage,exp,level,drugNum;    string name;public:    Soldier(string n):name(n)    {        maxHP=HP=100;        maxSP=SP=100;        damage=20;        exp=0;        level=1;        drugNum=5;    }    void makeDecision(Soldier enemy);        void attack(Soldier enemy);        void rest();    void takingDrug();    void ExpUp();    void show();};void Soldier::makeDecision(Soldier enemy){    if(HP>=maxHP/2&&SP>=0.3*maxSP)    {        this->attack(enemy);    }    else if(HP<maxHP/2)    {        takingDrug();     }    else if(HP>=maxHP/2&&SP<0.3*maxSP)    {        rest();    }    else;}void Soldier::attack(Soldier enemy){    SP-=10;    enemy.HP-=damage;    if(enemy.HP<=0)    {        drugNum+=enemy.drugNum;        cout<<enemy.name<<"死亡,战斗结束"<<endl;        exit(0);    }    else;    exp+=5;    if(    exp>=20)    {        ExpUp();    }    else;}void Soldier::rest(){        HP+=maxHP/2;    if(HP>maxHP)    {        HP=maxHP;    }    SP+=maxSP/2;    if(HP>maxHP)    {        SP=maxSP;    }}void Soldier::takingDrug(){    if(drugNum>0)    {        drugNum--;        HP+=maxHP/2;        if(HP>maxHP)        {            HP=maxHP;        }    }    else;}void Soldier::ExpUp(){    exp-=20;    level++;    maxHP+=20;    maxSP+=20;    damage+=20;}void Soldier::show(){    cout<<name<<"当前情况:"<<"生命:"<<HP<<"  体力:"<<SP<<"  攻击力:"<<damage<<endl<<endl;}int main(){    Soldier me("wangfan"),en("sail");    me.makeDecision(en);    en.makeDecision(me);    me.show();    en.show();    me.makeDecision(en);    en.makeDecision(me);    me.show();    en.show();    return 0;}





这是一个战士类
但是 我发现 attack函数里面不能使敌人减少生命值啊
求解释!!!!!!!!!!!

[解决办法]
void Soldier::attack(Soldier &enemy)

要传引用进去啊。。 不然函数进去后,改变的是enemy的拷贝。非enemy本身。。
[解决办法]
楼上正解。。。。函数参数是个很值得注意的地方。

读书人网 >C++

热点推荐