プログラミング

戦闘用アイテム編 プラスパワー 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ポケモン84
プログラミング
PHP,PHPポケモン,ポケモン
戦闘不能による交代編 PHPポケモン84

戦闘不能による交代 ポケモンが戦闘不能になった際、もし手持ちに戦える状態のポケモンが残っていれば「交代」か「逃げる」の2択になります。今までは手持ちポケモンが1匹のみで判定を行っていたので、今回は交代の選択肢も含めて勝負の判定の見直しをしていきます。   パーティーを含めた勝負判定 味方または...

ポケモン預かりシステム編 システムの実装 PHPポケモン 87
プログラミング
PHP,PHPポケモン,ポケモン
ポケモン預かりシステム編 システムの実装 PHPポケモン 87

ポケモン預かりシステムの実装 システムの仕様とクラスも整ってきたので、いざ実装をしていきましょう。 前回までに作成した項目で、いくつか変更になったものがあるので、まずはじめに挙げておきます。   シャットダウン機能 ボックスの選択を解除するというものでしたが、こちらを不採用にしました。ボックスは...

初心者必見!仕事がデキる人のIllustrator活用術3選
デザイン
Adobe,Illustrator,サムネイル
初心者必見!仕事がデキる人のIllustrator活用術3選

  仕事の速い人の大半は、「効率の良い方法」や「便利な使い方」を知っていて使いこなしています。これは、デザインの現場でも同じです。 今回はその中でもIllustratorで知っておくと便利な機能を3つご紹介します。この3つを押さえておくだけで、作業効率は格段にアップするので、これからソフトの使い方を覚...

レビューがアフィになる!?SNS式ECサイトとは【ビジネス企画書】
ビジネスモデル
ECショップ,SNS
レビューがアフィになる!?SNS式ECサイトとは【ビジネス企画書】

  多くの人が利用しているSNS 副業やフリーランスに人気なアフィリエイト   それぞれの良い点を上手く利用すれば、完成するビジネスはないか?と考えて思い浮かんだ企画です。 今回は「レビューがアフィになる!?SNS式ECサイトとは」について、新時代のショッピングモール式ネットショップの企画をご紹...

有料ノートが公開停止!?プラットフォーム依存の危険性とは
雑記
note,YouTube,ブログ
有料ノートが公開停止!?プラットフォーム依存の危険性とは

  「いままでのnoteがいきなり公開停止になった」 「YouTubeであげていた人気動画が削除された」   規約変更、違反などを理由にこういった被害は年々増えています。自覚して悪意あるコンテンツを作っているユーザーであれば当然の結果だと言ってしまえば済むことですが、努力して収益化する糸口を見つけ...

フリーランス必見!良質案件を獲得するための3つのプロセス
フリーランス
フリーランス必見!良質案件を獲得するための3つのプロセス

  「良い案件に巡り会えない」 「なかなか仕事が受注できない」   駆け出しフリーランスや、これから独立しようと考えている人が直面する大きな悩みの1つですね。 ですが、意外にも自分でその案件自体を制限していたり、良質だった案件を自らで質を下げてしまっているというケースは少なくありません。...

Laravelで生成したCookie情報をjQueryで取得する方法【JavaScript】
プログラミング
ajax,api,JavaScript,jQuery,Laravel,PHP
Laravelで生成したCookie情報をjQueryで取得する方法【JavaScript】

  今回はLaravel開発備忘録です。 ajaxでapi認証してviewに記述したhtmlデータを取得するために、cookieを使ったapi_tokenの受け渡し手順をまとめてみました。   Laravelを使った開発をしている人は、ぜひ参考にしてくださいね。     Laravel側の処理   まずはcookieにデータをセットする必要があり...

データベース定義は超重要!システム開発を始める前に知っておきたい構造と構成の考え方
プログラミング
MySQL,データベース,プログラミング学習
データベース定義は超重要!システム開発を始める前に知っておきたい構造と構成の考え方

  システムやアプリ開発をする場合、そのほとんどでデータベースを使用しますね。 それぞれのデータを連携させるためにも、その構造をどうするかは重要で、設計が甘ければシステムそのものの保守性はもちろん、想定していた仕組みを実現するのが難しくなることもあります。   今回は、これからデータベースを...

カテゴリ

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 独立 神戸 福祉 秘密鍵 翻訳 自己啓発 英語 見積書 計算機 読書 起業 迷惑メール 配列 銀の弾丸 集客 雑学力