アイテム図鑑を作ろう!PHPの配列・連想配列で武器データの管理をマスターせよ

目次

⚔️ はじめに:武器を100個、どうやって管理する?

こんにちは、「ぷろぐらの森」です🌲

RPGを作っていると、たくさんの「アイテム」や「武器」が登場しますよね。

「銅の剣」「鉄の剣」「勇者の剣」……これらをプログラムで扱うとき、まさかこんな風に書いていませんか?

##PHP##
// ❌ 悪い例:変数を個別に作る
$weapon1 = "銅の剣";
$weapon2 = "鉄の剣";
$weapon3 = "勇者の剣";
...
$weapon100 = "最強の剣";

これでは、武器が100個あったら変数を100個作らなくてはいけません。
管理も大変ですし、「所持品リスト」を表示するのにも一苦労です。

そこで登場するのが、今回のテーマである「配列(Array)」です。
配列を使えば、これらのデータを「ひとつの箱」にまとめてスッキリ管理できるようになります。

今回は、ゲーム開発に必須の「一次元配列」「連想配列」「多次元配列」の違いを、アイテム管理を例にして完全攻略しましょう!

1. 一次元配列:パーティメンバーを一列に並べよう

まずは基本の「一次元配列」です。
これはシンプルに「データを一列に並べたロッカー」だと思ってください。

RPGのパーティメンバーや、所持品リスト(名前だけ)の管理に向いています。

📝 書き方(ブラケット構文 []

##PHP##
// ⭕️ 良い例:配列でまとめる
$party = ["勇者", "戦士", "魔法使い"];

これだけで、3人のデータを $party という1つの変数で管理できます。

データの取り出し方

配列の中身には、0から始まる「添字(インデックス)」番号がついています。

##PHP##
echo $party[0]; // 出力:勇者
echo $party[1]; // 出力:戦士
echo $party[2]; // 出力:魔法使い

⚠️ 注意点: プログラムの世界では、数字は0からスタートします。「1番目」を取り出したいときは [0] を指定するのが鉄則です。

2. 連想配列:武器の「ステータス」を定義せよ

一次元配列は便利ですが、「名前」しか保存できませんでした。

しかし、実際のゲームの武器には「攻撃力」や「価格」といった情報も必要ですよね。

そんな時に使うのが「連想配列」です。

番号(0, 1, 2…)の代わりに、わかりやすい名前(キー)を付けてデータを管理します。

📝 書き方(キー => 値)

「銅の剣」のステータスを作ってみましょう。

##PHP##
$copper_sword = [
    "name"  => "銅の剣",
    "power" => 10,
    "price" => 100
];

データの取り出し方

番号ではなく、設定した「キー(名前)」を使って取り出します。これなら直感的ですね!

##PHP##
echo $copper_sword["name"];  // 出力:銅の剣
echo "攻撃力は" . $copper_sword["power"]; // 出力:攻撃力は10

これで、アイテムごとの細かい設定を作れるようになりました。

3. 多次元配列:最強の「アイテム図鑑」完成!

さて、ここからが本番です。

「連想配列」で1つの武器データは作れましたが、ゲームにはたくさんの武器が登場します。

そこで、「連想配列(武器データ)」を「配列(リスト)」の中に詰め込みます。

これが「多次元配列」です。Excelの表(行と列)をイメージするとわかりやすいでしょう。

📝 書き方(配列の中に配列を入れる)

##PHP##
$weapon_list = [
    // 0番目の武器
    [
        "name"  => "銅の剣",
        "power" => 10,
        "price" => 100
    ],
    // 1番目の武器
    [
        "name"  => "鉄の剣",
        "power" => 30,
        "price" => 500
    ],
    // 2番目の武器
    [
        "name"  => "勇者の剣",
        "power" => 100,
        "price" => 9999
    ]
];

これが、実際のゲーム開発で使われる「アイテム図鑑(データベース)」の基本構造です!

データの取り出し方

「どの武器(行)」の「どのステータス(列)」かを指定して取り出します。

##PHP##
// 「鉄の剣(1番目)」の「名前」を表示
echo $weapon_list[1]["name"]; // 出力:鉄の剣

// 「勇者の剣(2番目)」の「攻撃力」を表示
echo $weapon_list[2]["power"]; // 出力:100

4. 実践:図鑑をループで表示してみよう

多次元配列で作ったリストは、foreach 文(繰り返し処理)と組み合わせることで真価を発揮します。

手作業で一つずつ echo する必要はありません。

##PHP##
echo "【武器屋のラインナップ】<br>";

foreach ($weapon_list as $weapon) {
    echo "商品名:" . $weapon["name"];
    echo "(攻撃力:" . $weapon["power"] . ")";
    echo "価格:" . $weapon["price"] . "G <br>";
}

実行結果:

【武器屋のラインナップ】

商品名:銅の剣(攻撃力:10)価格:100G

商品名:鉄の剣(攻撃力:30)価格:500G

商品名:勇者の剣(攻撃力:100)価格:9999G

たった数行のコードで、どんなに武器が増えても自動的に一覧表示できるようになりました!
これがプログラミングの威力です!

5. まとめ:配列を制する者はゲームデータを制す

今回は、ゲーム開発に欠かせない3つの配列について解説しました。

配列の種類特徴ゲームでの使い所
一次元配列データを一列に並べるパーティメンバー、所持アイテム名
連想配列キーと値で管理するアイテムの詳細、キャラのステータス
多次元配列配列の中に配列を入れるアイテム図鑑、モンスターリスト、2Dマップ

最初は「[ ]」や「=>」の記号に戸惑うかもしれませんが、
「データを整理整頓するための棚」だと考えれば怖くありません。

この配列の知識は、データベース(MySQL)からデータを取り出した時にも必ず使います。
ぜひマスターして、自分だけの最強アイテム図鑑を作ってみてくださいね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

神奈川県出身
どこにでもいる現役ゲーム会社サーバーエンジニア。大学ではひたすらゲーム!ゲーム!という人生を送ってました。

このブログは「ゲームを作ってみたい!」「プログラミングに関する知識をつけたい!」そんな皆さんの少しでもお役になれば嬉しいなと思い開設しました。

趣味
YouTube鑑賞、ストリートな格闘ゲーム、キャンプ

最近の出来事
・痔主になってしまいました....
・Google Cloud Professional Cloud Architect取得しました。

コメント

コメントする

目次