class Player{
private:
Account ∾ // サーバなどに保存されているアカウント情報の参照
const bool enoughMoney(const int cost)const{
bool judge = (ac.money >= cost);
if(!judge) std::cout << "資金が足りません" << std::endl;
return judge;
}
int calcHPCost(const int increase)const{return (increase + 2*ac.maxHP + 9800)*increase/400;}
int calcENCost(const int increase)const{return (increase + 2*ac.maxEN + 995 )*increase;}
public:
Player(Account &acarg=Account()):ac(acarg){}
void battle(Player *enemy); // 戦闘をしかける(引数で相手を指定)
//HPを回復する
void healHP(const int incre){
ac.HP += incre;
if(ac.HP >= ac.maxHP){
ac.HP = ac.maxHP;
ac.survive = true;
}
}
//ENを回復する
void healEN(const int incre){
ac.EN += incre;
if(ac.EN > ac.maxEN)ac.EN=ac.maxEN;
}
// HPを消耗する
void damageHP(const int decre){
ac.HP -= decre;
if(ac.HP < 0){
ac.HP = 0;
ac.survive = false;
}
}
// ENを消費する
void damageEN(const int decre){
ac.EN -= decre;
if(ac.EN < 0)ac.EN=0;
}
void raiseMaxHP(const int incre); // 最大HPを上げる
void raiseMaxEN(const int incre); // 最大ENを上げる
void buyWeapon(const Weapon w); // 武器を買う
void buyProtect(const Protect p); // 防具を買う
void sellWeapon(const int index); // 武器を売る
void sellProtect(const int index); // 防具を売る
const int getHP()const{return ac.HP;}
const int getMaxHP()const{return ac.maxHP;}
const int getEN()const{return ac.EN;}
const int getMaxEN()const{return ac.maxEN;}
const int getMoney()const{return ac.money;}
const bool isSurvive()const{return ac.survive;}
const Weapon getWeapon()const{return ac.mainw;}
const Weapon (&getSubWeapon())[SUBW_NUM] {return ac.subw;}
const Protect getProtect()const{return ac.mainp;}
const Protect (&getSubProtect())[SUBP_NUM] {return ac.subp;}
};
// calcENCost(increase)に関して
// 私が最初にやっていたEBは5上げるのに10maxEN+5000の資金が必要
// 同じ額になるように数列の和を計算しincrease(increase + 2maxEN + 995)とした
// 少し計算処理が多いように感じますがこの感覚でENを上げてきた人は少なくないと思うので採用
// increaseに数値を代入して式の検証
// 5を代入すれば 5( 5+2maxEN+995) = 10maxEN+5000 ※改造1回分
// 10を代入すれば 10(10+2maxEN+995) = 10maxEN+5000 + 10(maxEN+5)+5000 ※改造2回分
// ここから先も多分合ってるはず
// calcHPCost(increase)も同じで200上げるのにmaxHP+5000の資金が必要
// を適当にいじってincrease(increase + 2maxHP + 9800)/400
PR