ポケモンセンター
バトルシステムを作る関係上、どうしてもダメージを受けることが多くなってきたので、そろそろポケモンセンターを建設(作成)します。
とは言っても、ポケモンセンターに行って交換やらボックス整理などができるわけではなく、ただ回復ポイントを設置するだけの簡単な処理です。
HPの回復
まずはHPの回復処理です。こちらはひんし状態になった際の復活と同様、HP計算メソッド(calReamainingHp)の第1引数にresetを指定して回復させましょう。
// HP回復
$this->pokemon
->calRemainingHp('reset');
これでHPを全回復してくれます。
状態異常の解除
次に状態異常の解除処理を行います。こちらもポケモンに作成した状態異常の解除メソッド(releaseSa)を使用します。
// 状態異常解除
$this->pokemon
->releaseSa();
これで状態異常を解除することができます。
状態変化はバトル中のみ引き継がれる項目のため、解除不要です。
PPの回復
最後に前回作成したPP計算メソッド(calRemainingPp)を使って、全技PPのリセット処理を実行します。
// PP回復
$this->pokemon
->calRemainingPp('reset');
これでPPの全回復ができます。この3メソッドは全回復時の処理として使えるため、recoveryという一つのメソッドとして用意して、ホームコントローラー内で呼び出せるようにしておきましょう。
ホームコントローラー(/Classes/Controller/HomeController.php)
/**
* 全回復
*
* @return void
*/
private function recovery()
{
// HP回復
$this->pokemon
->calRemainingHp('reset');
// 状態異常解除
$this->pokemon
->releaseSa();
// PP回復
$this->pokemon
->calRemainingPp('reset');
}
メッセージの返却
作成したrecoveryメソッドを呼び出すための、ポケモンセンター使用時のアクション分岐を追加します。せっかくなので、ポケモンセンター利用時らしいメッセージを出力しておきましょう。
ホームコントローラー(/Classes/Controller/HomeController.php)
/**
* アクション
*
* @param string $action(method_name)
* @param mixed $param
* @return void
*/
private function action($action, $param)
{
// リセット
if($action === 'reset' || is_null($this->pokemon)){
header("Location: ./index.php", true, 307) ;
exit;
}
// ポケモンセンター
if($action === 'recovery'){
$this->recovery();
$this->setMessage('お預かりしたポケモンは、皆元気になりましたよ');
$this->setMessage('またのご利用お待ちしております');
return;
}
あとは、ホーム画面にポケモンセンター利用ボタンを設置するだけです。こちらも他のフォーム同様にファイルを分けて作成しておきましょう。
ポケモンセンターフォーム(/Resources/Partials/Home/Forms/pokemon_center.php)
<form action="" method="post">
<div class="input-group mb-3">
<input type="hidden" name="action" value="recovery">
<input class="btn btn-success" type="submit" value="ポケモンセンター">
</div>
</form>
バトル終了後なのでダメージを受けており、PPも減っていますね。
では、設置したポケモンセンターを使ってみましょう。
しっかり回復されていることが確認できましたね。
これでポケモンセンターの設置は完了です。
まとめ
いかがだったでしょうか。
今回のPHPポケモンは「ポケモンセンター編」について紹介しました。
最近はバトルシステムの作り込みや修正などで根を詰めていたので息抜き回となります。ですが、検証する際には非常に大切な要素であり、ゲームクリアをするためにもほぼ必要だと言えるシステムの一つです。
ポケモンが好きな方や、ゲームづくりに興味がある人は、ぜひ参考にしてくださいね。