プログラミング

戦闘用アイテム編 プラスパワー 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ポケモンでは「戦闘用アイテム プラスパワー」の実装方法をご紹介しました。

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

 

注目の記事

動画編集に役立つ基本的な考え方【Adobe AfterEffects】
動画編集
Adobe,AfterEffects,PremierePro,YouTube
動画編集に役立つ基本的な考え方【Adobe AfterEffects】

  YouTubeの人気に合わせて、動画編集の需要も高まってきましたが、その大変さから挫折してしまう人も続出しています。 動画編集は奥が深く、技術的な部分に関してはプロのクリエイターであっても自分がよく使うような一部しか把握していないのが普通であり、調べても該当する情報が出てきにくいということもあ...

PHPポケモン「バトルシステム編〜状態異常1〜」30
プログラミング
PHP,PHPポケモン,ポケモン
PHPポケモン「バトルシステム編〜状態異常1〜」30

状態異常チェック 今回は少し先延ばししていた状態異常判定を一部作成していきましょう。 状態異常では「行動前」と「行動後」に判定するものに分けることができます。 行動前 まひ、ねむり、こおり  行動後 どく、もうどく、やけど   まずは簡単な行動前から実装していきます。行動前に判...

ブログ運営者のための「よくわかるSEO対策」フィード編
SEO対策
atom,feedly,rss,WebSub,WordPress,xml,フィード
ブログ運営者のための「よくわかるSEO対策」フィード編

  アメブロやFC2など優れたブログサービスが存在している中、好きなデザイン、こだわった機能を求めてWordPressを選択される方も多いですね。 また、コーポレートサイトにWordPressを用いる方もいるでしょう。ただしSEO対策がしっかりとされていなければ、提供されているサービスに太刀打ちできません。  もちろん...

config実装編(ドット記法・多次元配列) PHPポケモン 71
プログラミング
PHP,PHPポケモン,ポケモン
config実装編(ドット記法・多次元配列) PHPポケモン 71

configファイルの作成 プログラミングでは設定値というものを使うことが良くあります。量が多い場合はデータベースへ格納して管理する場合も多いですが、わざわざテーブルを用意してまで格納するほどのものでなければ、ファイルに配列として定義してアクセスできる方が便利です。フレームワークではこれらをconfigフ...

PHPポケモン「タイプ実装編」15
プログラミング
PHP,PHPポケモン,ポケモン
PHPポケモン「タイプ実装編」15

ポケモンのタイプについて  2020年剣盾シリーズでのポケモンでは、全18タイプが実装されています。初代では15タイプ(あく、はがね、フェアリーを除く)からスタートして、たった3つのタイプしか増えていない、と感じる方もいるかも知れませんが、この追加に関してもバトルの歴史を大きく動かしてきたのです...

PHPポケモン「コントローラー編」〜POSTとSESSIONの活用〜 10
プログラミング
PHP,PHPポケモン,ポケモン
PHPポケモン「コントローラー編」〜POSTとSESSIONの活用〜 10

  今回のPHPポケモンでは、今まで作った機能用のコントローラーになるインターフェースを作成します。ポケモンやメソッドを選択できるようにして、よりゲーム性の高いアプリケーションを実装しましょう。   第1回から学習したい方はコチラ     コントローラーの実装   それでは実装したアクション...

バトルステータス可視化編 PHPポケモン 70
プログラミング
PHP,PHPポケモン,ポケモン
バトルステータス可視化編 PHPポケモン 70

バトルステータスの可視化 現在のポケモンでは、バトルステータスの現状を可視化できるようになっており、どれぐらいのランク補正がかかっているか、フィールドがどういう状態になっているかがわかるようになっています。 初代、第2世代等では確認できなかった内容ではありますが、システムとしては便利な要素でも...

ビジュアル作り込み編(序) PHPポケモン66
プログラミング
PHP,PHPポケモン,ポケモン
ビジュアル作り込み編(序) PHPポケモン66

ビジュアルの作り込み 最近は内部の作り込みが多かったので、今回の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 独立 神戸 福祉 秘密鍵 翻訳 自己啓発 英語 見積書 計算機 読書 起業 迷惑メール 配列 銀の弾丸 集客 雑学力