- 締切済み
PHPでじゃんけん勝負
PHPでじゃんけん勝負ができるプログラムを作成しました。ラジオボタンから選択した値(「グー」あるいは「チョキ」あるいは「パー」)をPOSTで送信し、ユーザと相手(コンピュータ)が選んだ手と、じゃんけんの勝敗を表示します。ラジオボタンで選択をしなくても最初からあいこが表示された状態になります。どの部分を修正すればいいですか ? <?php $arry_hand = array('グー', 'チョキ', 'パー'); $me = ''; //取得したい3つ(グー、チョキ、パー)をそれぞれ定義して、文字列を初期化する $you = ''; $result = ''; if (isset($_POST['hand']) === TRUE) { $me = htmlspecialchars($_POST['hand'], ENT_QUOTES, 'UTF-8'); $you = $arry_hand[array_rand($arry_hand)]; } //最初からあいこが表示された状態になる if ($me === $you) { $result = 'あいこ'; } else if ($me === 'グー' && $you === 'チョキ' || $me === 'チョキ' && $you === 'パー' || $me === 'パー' && $you === 'グー') { $result = '勝ち'; } else{ $result = '負け'; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>じゃんけん</title> </head> <body> <h1>じゃんけん勝負</h1> 自分: <?php print $me; ?><br> 相手: <?php print $you; ?><br> 結果: <?php print $result; ?><br> <form method="post"> <label><input type="radio" name="hand" value="グー" <?php if ($me === 'グー') { print "checked";} ?> >グー</label> <label><input type="radio" name="hand" value="チョキ" <?php if ($me === 'チョキ'){ print "checked";} ?> >チョキ</label> <label><input type="radio" name="hand" value="パー" <?php if ($me === 'パー'){ print "checked";} ?> >パー</label> <input type="submit" value="勝負!!" > </form> </body> </html>
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>ラジオボタンで選択をしなくても最初からあいこが表示された状態になります。どの部分を修正すればいいですか? ここが初期値でしょ? $me = ''; //取得したい3つ(グー、チョキ、パー)をそれぞれ定義して、文字列を初期化する $you = ''; 最初はPOSTされないんだから、ここは通らない。 if (isset($_POST['hand']) === TRUE) { $me = htmlspecialchars($_POST['hand'], ENT_QUOTES, 'UTF-8'); $you = $arry_hand[array_rand($arry_hand)]; } //最初からあいこが表示された状態になる ってことは、""==="" の比較が行われるのだから、「あいこ」になる。 if ($me === $you) { $result = 'あいこ'; } ってこと
- kawais070_1
- ベストアンサー率55% (515/931)
> if ($me === $you) { > $result = 'あいこ'; > } 上記の部分を以下のようにしましょう。 if ($you === '') { $result = ''; } else if ($me === $you) { $result = 'あいこ'; }