プログラミング

戦闘用アイテム編 プラスパワー 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ポケモン「レスポンス機能編」メッセージの返却 12
プログラミング
PHP,PHPポケモン,ポケモン
PHPポケモン「レスポンス機能編」メッセージの返却 12

  第12回PHPポケモンは「レスポンス機能編」です。 メッセージやデータのやり取り部分を、よりシステム風に作成していきます。   第1回はコチラ   レスポンス(Response)の実装  今までは結果(メッセージ等)はechoを使って出力していましたが処理が行われたタイミングで出力されてしまうため...

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

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

飲食店がホームページを作る5つのメリット 〜デメリットについても解説します〜
マーケティング
Google AdSense,SEO
飲食店がホームページを作る5つのメリット 〜デメリットについても解説します〜

  お店のホームページを作りたい   そういった飲食店の方は意外にも多く、イタリアンや居酒屋、日本料理店など種類も様々です。   今回のテーマは「飲食店がホームページを作る上で知っておきたいメリットとデメリットについて」です。   食べログやホットペッパーなどといったグルメサイトが主流とな...

PHPポケモン「バトルシステム編〜努力値の獲得〜」33
プログラミング
PHP,PHPポケモン,ポケモン
PHPポケモン「バトルシステム編〜努力値の獲得〜」33

努力値の実装 今回はポケモンのやりこみ要素の一つ、努力値システムを導入します。既に努力値の項目は「ピカチュウで学ぶオブジェクト指向」の段階で実装し、ステータス計算にも判定済みですが、肝心な「努力値を獲得する仕組み」自体は出来ていませんでした。なので、バトルシステムも終盤となったこのタイミングで...

デザイン
サムネイル,デザイナー,バナー,広告
デザイナーにセンスは必要ない!誰でも作れるおしゃれなサムネイル

  「デザイナーになるためにはセンスが必要ですか?」   バナーづくりの小規模講習会を実施した際に、この質問した人がいました。 よくある質問なのですが、いつも決まって自分の回答は「NO」です。   実際に一流のデザイナーとして活躍するレベルまでいくには、確かにセンスと呼ばれているものが必要...

大半のネットワークビジネスが成立しない理由とは【権利収入の落とし穴】
マーケティング
MLM
大半のネットワークビジネスが成立しない理由とは【権利収入の落とし穴】

  誘われたけど、欠点が上手く説明できない 権利収入って本当にもらえるの?   ネットワークビジネスと聞けば、良い印象を抱かない人がほとんどでしょう。ですが、「何故?」と問われて説明できる人は意外にも少数派です。 そして、SNSを積極的に活用している人ならば、一度は誘いを受けたことがあるの...

【変数とは】初心者が最短でPHPを使えるようになるための実践的な学び方
プログラミング
HTML,PHP,プログラミング学習
【変数とは】初心者が最短でPHPを使えるようになるための実践的な学び方

  ※PHP初心者へ向けた内容となりますので、ある程度HTMLの知識がある方を対象とした内容になります。予めご了承ください。    Webプログラミングを学ぶ方はHTML、そしてCSSを学び、そしてJavascriptやPHPという順に学んでいくひとが多いでしょう。 私も実際に、似たような手順で学んでいきました。   ...

【配列とは】初心者が最短でPHPを使えるようになるための実践的な学び方
プログラミング
foreach,PHP,配列
【配列とは】初心者が最短でPHPを使えるようになるための実践的な学び方

  初心者の方、今からプログラミングを始める方、HTMLとCSSの領域から抜け出せない人たちを対象にした、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 独立 神戸 福祉 秘密鍵 翻訳 自己啓発 英語 見積書 計算機 読書 起業 迷惑メール 配列 銀の弾丸 集客 雑学力