忍者ブログ
  • 2024.08
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.10
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/09/19 11:53 】 |
Player.h
Player.h
プレイヤーのオブジェクトを生成するためのクラスです。
オブジェクト生成時にサーバなどに保存されているアカウント情報を
与えることでプレイヤーを生成します。戦闘をしかける、HPを回復する
などのプレイヤーに起こることなどを関数化しておきます。
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
【2013/03/08 03:07 】 | EBの箱 | 有り難いご意見(0)
<<Nation.h | ホーム | class.h>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>