見ていただきありがとうございます。
現在ブラウザゲームを作成しながらjsやPHPの勉強をしております。
ざっくりとした悩みではあるのですが、題の通り『キャラの固有スキル』の実装の形について質問させてください
やりたいこと
PHP側でスキルのリストを作り、プレイヤーがアクションをするたびそこから操作キャラに合ったスキル処理を呼び出すといったことをしたいと考えています。(計算処理などもPHP側で行います)
発生している問題
今のところclassを使って個別に処理内容や名前などを実装しようと考えているのですが、classをたくさん作るというのも無駄が多いような気がして悩んでおります。実装するならこうかなと思っているコードも一応あるのです。
PHP
1//スキルclassリスト 2 3 class SkillSample{//スキルの親クラス 4 public $skllname; 5 public function __construct($name){ 6 $this->skillname=$name; 7 } 8 9 public function action(){} 10} 11 12class Skill_1 extends SkillSample{ 13 public function action(){ 14 //固有の処理1 15 } 16} 17 18class Skill_2 extends SkillSample{ 19 public function action(){ 20 //固有の処理2 21 } 22} 23 24//..以下たくさん 25 26$skills = array( 27 "Skill_1"=>new Skill_1("スキル1"), 28 "Skill_2"=>new Skill_2("スキル2"), 29 //...以下classの数だけ増加? 30);
PHP
1//呼び出し側 2require_once("./SkillList.php"); 3 4$PlayerSt = array( 5 "name"=>"プレイヤー1", 6 "charaId"=>1, 7 "skillName"=>"Skill_1" 8 //...などのステータスをcsvファイルから格納 9); 10 11//スキル探索 12 $playskill = $skills[$PlayerSt["skillName"]; 13//スキル処理 14 $playskill->action();
処理の中身だけ違うのにたくさん生成するのはどうだろうかというのが今の考えです。いいclassの利用方法や他の実装方法の例などあれば教えていただきたいですよろしくお願いします。
追記
詳しい仕様について補足させていただきます。
現状の仕様として、
「キャラは一人一つ以上固有スキルを持つ」(共通スキルといったものは特に考えていませんでしたが、処理内容が同じものはこれに相当すると思います)
「キャラのマスタデータ(基礎ステータスやプロフィール部分)はcsvファイルに記述している」
「csvファイルからスキルIDを取得しclassの探索」
といった具合です。
少し考えた策
この質問を投げた後もスキルの内容や仕様を整理してみました。
ダメージ数なども結局はキャラステータス依存なので、倍率ダメージ、回復、連続攻撃など似通ったスキルのクラスは親クラスとして、スキルIDを基にスキルの形式からクラスを選んでインスタンス化して直後に処理を呼び出そうという案が浮かびました。
トレイトや戦闘で使うキャラステータスのclass生成についても検討中です(;'∀')
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/09 06:20