PHPでブラウザで遊べるRPGの戦闘アプリを作りました。
このアプリは「ボタンが押されると相手に攻撃し、敵を倒すと次のシーンに進む」アプリです。
ゲームのように状況に応じたシーン(ウェブページ)を表示するアプリです。
この記事では、PHPで簡単なWebアプリを作ってみたいという方に向けて「RPGの戦闘アプリ」を紹介します。
PHPとは
まず、PHPとは何か?から説明します。
PHPの目的は、HTMLソースを出力することです。
通常、Webページを表示するにはHTMLファイルが必要です。
作ったHTMLファイルをサーバーにアップしておくことで、アクセスしたブラウザにWebページが表示されます。
誰がいつアクセスしても表示内容は変わりません。
一方、PHPファイルで作ったプログラムは、通常のHTMLを表示する機能だけでなく、プログラムを組み込めるので、表示内容を状況に応じて変更できます。
例えば、webページを開いた時間に応じて「おはよう」や「こんにちは」というように表示内容を変えることができます。
プログラムで書くと以下のような感じになります
if (時間が朝だったら) {
echo "<p>おはよう</p>";
}
else {
echo "<p>こんにちは</p>"
}
このように、条件によって表示する内容(HTMLソース)を変えられることがPHPの特徴です。
プログラムはいつ動き出すのか?
PHPのプログラムは、HTTP通信がある度に実行されます。
HTTP通信とは、簡単に言うとインターネットでアクセスすることです。
アクセスの度にプログラムが動くので、表示内容が変更でき、ゲームのように画面を変えることができます。
今回作ったアプリの概要を説明します。
PHPバトルゲームの概要
今回作ったアプリは、RPGの戦闘シーンアプリです。
以下のような仕様となっています。
- ボタンを押すと、モンスターに攻撃する(モンスターのHPを減らす)
- モンスターからの攻撃を受ける(自分のHPを減らす)
- モンスターの体力が1以上残っていたら戦闘を続ける
- モンスターの体力が0になったら戦闘終了(自分のレベルを上げる)
- 戦闘が終了すると次の敵が表示される
プログラムの流れ
- まず最初のページを表示します。
- ボタンが押されるとデータが送信されます。
- 敵を倒したら(変数の値が0以下になったら)トップページに戻るリンクを表示します。
この流れで、ゲームのシーンのようにウェブページを表示していきます。
初期ページを作成
まずは、一番最初に表示するページを作ります。
キャラクターの初期パラメータ表示とフォームを作っていきます。
基本的な画面表示
// 基本画面表示
echo 'ゆうしゃ' . '<br>' . "\n";
echo 'LV:'. $player_lv . '<br>' . "\n";
echo 'HP:'. $player_hp . '<br>' . "\n";
echo '<br>' . "\n";
echo $msg . "\n";
echo '<br>' . "\n";
echo '<br>' . "\n";
// フォームボタン
echo '<form method="post">'. "\n";
echo '<input type="hidden" name="player_lv" value="'.$player_lv.'">'. "\n";
echo '<input type="hidden" name="player_hp" value="'.$player_hp.'">'. "\n";
echo '<input type="hidden" name="monster_hp" value="'.$monster_hp.'">'. "\n";
echo '<input type="submit" name="battle" value="たたかう">'. "\n";
echo '</form>'. "\n";
echo は文字を出力(HTMLにする)する命令です。
ソースの構成要素は3つです。
- プレイヤーの名前、HP、レベルなどのパラメータ表示
- メッセージの表示
- フォーム
フォームの <input type=”hidden”> は、画面には表示されませんが、データを送信できるタグです。
HTMLフォームのしくみ
フォームで送信(ボタンがクリック)されると、サーバーにデータが送信されます。それと同時にPHPのプログラムが実行されます。
これによって、プレイヤーのHPや敵のHPを計算して画面の表示を変更しています。
formタグには必須の属性が2つあります。
<form action="index.php" method="post">
action属性
データ送信先のファイルパスを指定します。データの送信と同時にここで指定したファイルへ画面遷移します。
method属性
データの送信方法を指定します。getかpostです。
フォームによって送信されたデータは、PHPであらかじめ用意されたスーパーグローバル変数 $_POST[‘inputで指定したname’] に保存されます。
if (isset($_POST["monster_hp"])) {
$monster_hp = $_POST["monster_hp"];
}
このようにすることで、送信されたデータをPHPの変数で使うことができます。
条件によって表示内容を変える
条件によって、表示するHTMLを変えるプログラムを作ります。
例えば、敵を倒した時は「次のモンスターと戦う」ボタンを表示する、というようなことです。
// HPを計るための変数
var $monster_hp = 10;
if (モンスターに攻撃したら) {
// モンスターのHPを5減らす
$monster_hp = $monster_hp - 5;
}
// モンスターのHPが0以下になった場合
if ($monster_hp <= 0) {
// 戦闘終了フラグをたてる
$isFinish = True;
// メッセージを決める
$msg .= "モンスターを倒した!";
}
// メッセージを表示する
echo $msg;
// 戦闘終了フラグが立っていたら
if ($isFinish == True) {
// 次のモンスターと戦うボタンを表示
echo '<input type="submit" name="next" value="次のモンスターと戦う">';
}
このような流れで、ゲーム風ウェブページを作りました。
よかったら遊んでいってください。
記事を読んでくださりありがとうございました。
この記事が参考になった、おもしろかったという方は、
広告をクリックしていただけると励みになります。
よろしくお願いします!!