求助:为什么lv自加后输出还是原值?
部分程序截取如下:
#include <iostream>using namespace std;class Tpler //写一个有关游戏玩家血、能量、升级等基本参数的类作练习{public: Tpler(int hp=100,int ex=0,int pow=20,int atk=5,int def=8,int bomb=5, int hmax=100,int pmax=50,int emax=20,int lv=1); int Atk(int x); //攻击 int HPup(int food); //加血 int HPdown(int hurt); //减血 int EXup(int kil); //加经验、升级 int Get_pow(int hit); //加能量(气) static int Get_lf(int x); //加命 int Get_bmb(int x); //加炸弹(大绝) int Get_atk(int wpn); //丢、捡武器,减少、增加攻击力 int Get_def(int equip); //丢、捡防具,减少、增加防御力 int Get_lv(){return lv;} void PrintMax(); //输出各参数上限值private: int hp, ex, pow, hmax, emax, pmax, atk, def, bomb, lv; //血、经验、能量(气) 血上限、经验上限 气上限 攻击力 防御力 炸弹(大绝) 级数 static int life; //生命值所有玩家共用 static const int lmax,bmax,amax,dmax; //生命、炸弹、攻击力、防御力的最大值,不可变};int Tpler::EXup(int x) //加经验,升级{ if(lv==10) return ex; //级数最大为10,若已为10,则不操作直接返回ex值 else ex+=x; //经验值为原值加杀敌数。 if(ex>=emax) //若ex新值达超原上限值,则升级,各项参数相应提升,ex为原值减去原上限值 { hmax+=20;hp=hmax; pmax=pmax*1.1+lv; atk*=1.3; def+=lv+1; lv++; if(lv==10) //若升级后级数为10,则ex归零。 ex=0; else { ex-=emax; emax=emax*1.2+lv; } } return ex;}void main() //此主函数纯粹用来试验类的正确性{ Tpler p1,p2(120,23,52,6,10,3,120,62,26,2); int food,hurt,hit,kil,wpn,eqp,skl1=2,skl2=3;//具体意思见类的函数声明 //skl对应某攻击技能,攻击力为普通攻击乘以倍数skl p1.HPdown(hurt); cout<<"input:food>>hurt>>hit>>kil>>wpn>>eqp"<<endl; cin>>food>>hurt>>hit>>kil>>wpn>>eqp; cout<<"p1:"<<"ex="<<p1.EXup(kil)<<",hp="<<p1.HPup(food) <<",pow="<<p1.Get_pow(hit)<<",atk="<<p1.Get_atk(wpn) <<",def="<<p1.Get_def(eqp)<<",bomb="<<p1.Get_bmb(1) <<",life="<<Tpler::Get_lf(0)<<",lv="<<p1.Get_lv()<<endl; p1.PrintMax();}
cout << "p2:"
cout << "ex="
cout << p2.EXup(kil)
...
ostream & operator <<(ostream & os, const type & obj);
cout << a << b; ->
operator <<(operator <<(cout, a), b);