Warning: session_save_path(): Cannot change save path when headers already sent in /home/yqual/s-yqual.com/public_html/s-yqual/public/yqual/wp-content/themes/yqual/session.php on line 2

Warning: session_start(): Cannot start session when headers already sent in /home/yqual/s-yqual.com/public_html/s-yqual/public/yqual/wp-content/themes/yqual/session.php on line 3

Warning: session_regenerate_id(): Cannot regenerate session id - session is not active in /home/yqual/s-yqual.com/public_html/s-yqual/public/yqual/wp-content/themes/yqual/session.php on line 5
プログラミング

戦闘用アイテム編 プラスパワー PHPポケモン96

PHP PHPポケモン ポケモン
戦闘用アイテム編 プラスパワー PHPポケモン96

戦闘用アイテムとは

バトル中に使用できるアイテムはいくつかありますが、その中でも「バトル専用」のアイテムがあります。それが戦闘用アイテムであり、主にドーピングと呼ばれるものです。

アイテムカテゴリとして、プレイヤー対象(スプレーなど)、敵ポケモン対象(ボール類)、味方対象(キズぐすり)の3つに分類していましたが、今回実装するものは「戦闘中のポケモン」を対象にするものです。

 

プラスパワー

実装するアイテムは、初代からも人気が高い「プラスパワー」です。 

プラスパワー(ポケモンwiki

 

初代から第6世代までは「こうげき」のランクが1段階上昇というアイテムでしたが、第7世代より2段階上昇に修正されたため、PHPポケモンでは2段階上昇で実装します。買値・売値についても、最新世代のものを用います。

 

プラスパワー(/Classes/Item/ItemXAttack.php
<?php
require_once(root_path('Classes').'Item.php');
 
/**
* プラスパワー
*/
class ItemXAttack extends Item
{
 
    /**
    * 正式名称
    * @var string
    */
    public const NAME = 'プラスパワー';
 
    /**
    * 説明文
    * @var string
    */
    public const DESCRIPTION = '戦闘中の ポケモンの 攻撃を 大きく あげる 道具。ひっこめると 元に 戻る。';
 
    /**
    * カテゴリ
    * @var string::general|health|ball|important|machine
    */
    public const CATEGORY = 'general';
 
    /**
    * 最大所有数
    * @var integer
    */
    public const MAX = 99;
 
    /**
    * 買値
    * @var integer
    */
    public const BID_PRICE = 1000;
 
    /**
    * 売値
    * @var integer
    */
    public const SELL_PRICE = 500;
 
    /**
    * 対象
    * @var string::friend|enemy|player|friend_battle
    */
    public const TARGET = 'friend_battle';
 
    /**
    * 使用できるタイミング
    * @var array
    */
    public const TIMING = ['battle'];
 
    /**
    * 効果
    * @return array
    */
    public static function effects($pokemon)
    {
        // 効果なし
        if(
            $pokemon->getRank('A') >= 6 ||
            $pokemon->isFainting()
        ){
            return [
                'message' => '使っても効果がないよ',
                'result' => false,
            ];
        }
        // メッセージを返却
        return [
            'message' => $pokemon->addRank('A', 2), # こうげきランクを2段階上昇
            'result' => true,
        ];
    }
 
}

 

対象に新しく「friend_battle」を追加しました。キズぐすりなどは控えのポケモンに対しても使用できますが、プラスパワーなどのランクに影響を与えるアイテムは対象選択の必要がありません。なので、ボールなどと同様に「使う」を押した時点で処理を行うようにformとしてボタンを追加します。

 

アイテムモーダル(/Resources/Partials/Common/Modals/Item/item.php
<?php # バトル中の味方ポケモン対象のアイテム使用 ?>
<form method="post" data-button="use" data-item_target="friend_battle" style="display:none">
    <?php input_token(); ?>
    <input type="hidden" name="action" value="item">
    <input type="hidden" name="order">
    <button type="submit" class="btn btn-sm btn-php-dark">使う</button>
</form>

 

$.in_arrayを使った判定

このままではorderの値をセットしてくれないため、js側の判定も追加します。せっかくなので、jQuery$.in_arrayについて少しだけ触れておきます。

// もしアイテムの対象がenemy,player,friend_battleの場合はアイテム番号(order)をセット
if(0 <= $.inArray(target, ['enemy', 'player', 'friend_battle'])){
    use_btn.find('[name="order"]').val(order);
}

 

今回はこのような判定方法で、どの対象アイテムが選択されたかを判別しています。

$.inArray()という関数は、第1引数に指定した値が、第2引数の配列内に含まれているかどうかを確認してくれるものです。PHPではin_arrayを多用しているので馴染みがあるかも知れませんが、jQueryでは少し異なり、返り値に見つかった値の添字を返却します。そのため、最初の要素にヒットした場合は「0」が返ってくるため、単純にif内で関数の返り値だけを判定させると予期せぬ結果になってしまいます。 

 

判定に合わせ、それぞれ別の処理を行う場合はswitchが便利で、少量であればifelseifを組み合わせて作るとスマートな記述になります。ですが、今回のように「いずれかであれば」といった判定をする際には、inArrayin_array)を用いることで簡潔かつ管理がしやすくなるのでオススメです。

 

便利な関数はjQueryはもちろん標準でもいくつか用意されています。なので、上手く使うことで記述量を減らしたり、より可視性の良いプログラミンができるようになります

 

では、プラスパワーの挙動を見てみましょう。

 

しっかりと効果通りの結果が得られましたね。これで戦闘用アイテム「プラスパワー」の実装は完了です。

 

まとめ

いかがだったでしょうか。

今回のPHPポケモンでは「戦闘用アイテム プラスパワー」の実装方法をご紹介しました。

プログラミング学習に取り組んでいる方や、ゲームづくりに興味がある方は、ぜひ参考にしてみてくださいね。

 

注目の記事

ナンパしてたら独立できた「人間力の鍛え方」
フリーランス
コミュニケーション能力,ナンパ
ナンパしてたら独立できた「人間力の鍛え方」

  経験談から、人間力を鍛える方法をご紹介します。 今回は「ナンパ」がテーマです。なので、少し男性目線の内容になります。 女性の方は、「男性はこうやって考えている人もいるんだ」といった参考にしてください。   ナンパなんて、と思う人もいるでしょう。 ハラスメント規制も強くなる現代では、安易な...

そらをとぶ&あなをほる編 PHPポケモン46
プログラミング
PHP,PHPポケモン,ポケモン
そらをとぶ&あなをほる編 PHPポケモン46

チャージ中の回避技 以前は「ロケットずつき」や「ソーラービーム」をサンプルとしてチャージ技を実装しましたが、今回は少し特別な効果をもったチャージ技を実装します。それが「そらをとぶ」と「あなをほる」です。これらは初代ポケモンでも重宝される技であり、チャージ中に相手からの攻撃を回避することができま...

【JavaScript】ESLint下でToastr(グローバル変数)を使用する方法
プログラミング
ESLint,JavaScript,jQuery,Toastr
【JavaScript】ESLint下でToastr(グローバル変数)を使用する方法

  ESLintはシステム全体で見れば便利なツールと言えますが、ライブラリなどを読み込む際に通常紹介されているような方法では使えなかったり、慣れていない人からするとどうしても躓くポイントが多くなるのも事実です。 ですが使いこなせるようになれば、開発がスムーズになることはもちろん、保守性やコードの...

わざマシン編 習得 PHPポケモン105
プログラミング
PHP,PHPポケモン,ポケモン
わざマシン編 習得 PHPポケモン105

わざマシンによる技習得 前回、わざマシンのアイテムクラスを作成したので、今回は実際に使用するまでの処理を作成していきます。 まずは、アイテムクラスに使用時の処理(effectsメソッド)を増設しましょう。   わざマシン01(/Classes/Item/ItemTM01.php) <?php require_once(root_path('Classes').'...

フレンドリィショップ編 アイテムの販売 PHPポケモン 76
プログラミング
PHP,PHPポケモン,ポケモン
フレンドリィショップ編 アイテムの販売 PHPポケモン 76

リュックの作成 前回はフレンドリィショップへ商品を並べ、計算機を作成するところまで作成しました。ですが、商品が購入できたとしても、それを保管しておくためのスペースがなければ意味がありません。 なので、プレイヤー情報に対してアイテムを格納できるように機能拡張をしましょう。   プレイヤークラス(/C...

進化直後の技習得編 PHPポケモン 65
プログラミング
PHP,PHPポケモン,ポケモン
進化直後の技習得編 PHPポケモン 65

進化直後の技習得 パーティー機能を導入に合わせて、至る場所を修正することになり、合わせて未実装だった機能を導入していきます。 見た目にはわからない部分や、とある条件が重ならなければ起こらない部分の作り込みが多いため、プレイユーザー目線からすると少し面白みが無いかも知れません。 ですが、そういっ...

プレイヤー情報作成編 PHPポケモン72
プログラミング
PHP,PHPポケモン,ポケモン
プレイヤー情報作成編 PHPポケモン72

プレイヤー情報の作成 少し前よりプレイヤーをホーム画面に表示させるようにしましたが、ただイメージとして配置しただけでプレイヤー情報自体は設定していませんでした。なので、今回はプレイヤーとして持たせる必要のある情報を作成していきましょう。   クラスの作成 初代ポケモンではプレイヤー情報として閲...

パーティーの並び替え編 PHPポケモン 82
プログラミング
PHP,PHPポケモン,ポケモン
パーティーの並び替え編 PHPポケモン 82

パーティーの並び替え ポケモンをバトルに選出する際に欠かせないのが「パーティーの並び替え」です。パーティーの先頭(ひんし状態でない)がポケモンでは自動的に選択されるため、戦闘前に並び替えをしておく必要があります。 ゲーム上では簡単に見える処理ですが、これがPHPで行うとなれば少し厄介な問題が出てき...

カテゴリ

SEO対策 イベント デザイン ネットワーク ビジネスモデル フリーランス プログラミング マーケティング ライティング 動画編集 雑記

タグ

5G Adobe AfterEffects AI ajax amazon Animate api artisan atom Automator AWS Bluetooth CSS CVR description EC-CUBE4 ECショップ ESLint Facebook feedly foreach function Google Google AdSense Honeycode htaccess HTML IEEE 802.11ax Illustrator Instagram IoT JavaScript jQuery jQuery UI keyword LAN Laravel Linux MacBook MAMP meta MLM MySQL NoCode note OS OSI参照モデル Paypal Photoshop PHP phpMyAdmin PHPポケモン PremierePro rss SEO SEO対策 Sequel Pro Skype SNS SSH Symfony TCP/IP title Toastr Trait Twig Twitter UCC V系 WAN WebSub Wi-Fi wiki Windows WordPress XAMPP xml Xserver YouTube YouTuber Zoom アーティスト アウトプット アクセス層 アニメーション アフィリエイト イーブイ インターネット インプット エンジニア オブジェクト指向 お金配り クリック単価 クリック数 コミュニケーション能力 コロナ コンサルティング サムネイル システムエンジニア スタートアップ スタイルシート スパム データベース ディープフェイク デザイナー デザイン テレワーク ナンパ ニュース ネットワークモデル ノマドワーク バナー ピカチュウ ビジネス フィード フリーランス ブロガー ブログ プログラマー プログラミング プログラミング学習 プログラミング教育 プロトコル ホームページ制作 ポケモン マークアップ マーケティング メール リモートワーク レンダリング 三井住友 三宮 仕事依頼 児童デイ 児童デイサービス 児童発達支援 公開鍵 初心者 助成金 勉強法 営業 広告 広告収入 必勝マニュアル 放課後等デイサービス 朝活 楽天 深層学習 無線LAN 独立 神戸 福祉 秘密鍵 翻訳 自己啓発 英語 見積書 計算機 読書 起業 迷惑メール 配列 銀の弾丸 集客 雑学力