- 締切済み
PHPでの値の受け渡し方法を教えてください!
PHP新参者です。 現在、PHPでRPG風の簡易戦闘システムを作成しているのですが、永久ループに陥ってしまい、悩んでいます。 条件として、自分も敵も1体ずつ、HPはお互いに1000、相手の行動パターンは現在2パターン(攻撃or必殺)、自分の行動パターンは攻撃、特技、道具、逃げる(今はまだ攻撃と逃げるの2パターンしか作成していません。)となっています。 一応、仕様としては 名前の入力ページで主人公と敵の名前を設定、その後、コマンドを選択して自分→相手→自分のターン形式で行動していく、というシステムになっており、主人公が逃げる、もしくはどちらかのHPが0になった時点で終了し、タイトルに戻る、という予定です。(タイトルに戻る処理などはまだ未記入です) 名前の変数については、更新時も受け渡すことはできたのですが、記述ミスのせいで、HPの変数の受け渡しやターン毎の行動がリセットされてしまう(ボタンを押す度に前のターンの行動履歴が消滅してしまう)問題といった問題点が残っている状態です。 正直、どこを直せば正確に動作するのか、1週間ほど悩んでいます。 御教授をお願いします。質問下手ですみません。 <?php $command = 0; $myna = trim($_GET[ 'myna' ]); $enena = trim($_GET[ 'enena' ]); echo"<form method = \"GET\" action = \"dice.php\" name =\"form1\">"; if(isset($_POST["sub1"])){ $kbn = htmlspecialchars($_POST["sub1"],ENT_QUOTES,"UTF-8"); switch($kbn){ case "攻撃": $command=1; $enena=trim($_GET['enena']); $myna=trim($_GET['myna']); $myHP=trim($_GET['myHP']); $eneHP=trim($_GET['eneHP']); $turn=trim($_GET['turn']); break; case "特技": $command=2;$enena=trim($_GET['enena']); $myna=trim($_GET['myna']); $myHP=trim($_GET['myHP']); $eneHP=trim($_GET['eneHP']); $turn=trim($_GET['turn']); break; case "道具": $command=3;$enena=trim($_GET['enena']); $myna=trim($_GET['myna']); $myHP=trim($_GET['myHP']); $eneHP=trim($_GET['eneHP']); $turn=trim($_GET['turn']); break; case "逃げる": $command = 4; $enena=trim($_GET['enena']); $myna=trim($_GET['myna']); $myHP=trim($_GET['myHP']); $eneHP=trim($_GET['eneHP']); $turn=trim($_GET['turn']); break; default: echo"エラー"; exit; } } echo"</form>"; echo"<form method=\"POST\" action=\"\">"; echo "<input type=\"submit\" value=\"攻撃\" name=\"sub1\"/>"; echo "<input type=\"submit\" value=\"特技\" name=\"sub1\"/>"; echo "<input type=\"submit\" value=\"道具\" name=\"sub1\"/>"; echo "<input type=\"submit\" value=\"逃げる\" name=\"sub1\"/>"; echo "</form>"; echo "<br />"; echo "<br />"; $myHP = 1000; $turn = 1; echo "第"; echo"$turn"; echo"ターン"; echo "<br />"; echo "<br />"; for($eneHP=1000;$command!=0;$turn++){ if($command == 1){ $puttern = rand(1, 4); $dice1 = rand(1, 100); $dice2 = rand(1, 100); $dice3 = rand(1, 100); $kaishin = rand(1, 4); $damage = ($dice1 + $dice2 + $dice3)/3; if($kaishin == 4) $damage = $damage + 100; $eneHP = $eneHP-floor($damage); echo "$myna の攻撃!"; if($kaishin == 4) echo"会心の一撃!"; echo "<br />"; echo floor($damage); echo"のダメージを与えた!"; } if($command == 4){ echo "$myna は逃げた!"; break; break; break; break; } echo"<br />"; if($eneHP <= 0){ echo"$enena を倒した!"; break; break; }else echo"$enena HP $eneHP/1000"; echo"<br />"; echo"<br />"; if($puttern == 1 | $puttern == 2 | $puttern == 3){ $dice1 = rand(1, 100); $dice2 = rand(1, 100); $dice3 = rand(1, 100); $kaishin = rand(1, 4); $gotdamage = ($dice1 + $dice2 + $dice3)/3; if($kaishin == 4) $gotdamage = $gotdamage + 100; $myHP = $myHP-floor($gotdamage); echo "$enena の攻撃!"; if($kaishin == 4) echo"痛恨の一撃!"; echo"<br />"; echo floor($gotdamage); echo"のダメージを受けた!"; }else if($puttern == 4){ $gotdamage = $myHP/2; $myHP = $myHP-floor($gotdamage); echo "$enena の必殺技!"; echo "<br />"; echo "$myna の体力は半分まで削られた!"; } echo"<br />"; if($myHP <= 0){ echo"$myna は死んでしまった…!"; break; break; }else{ echo"$myna HP $myHP/1000"; } $command = 0; } echo"<br />"; echo"<br />"; ?>
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- barusu0126
- ベストアンサー率23% (67/286)
セッション使ったらどうですか。