• 締切済み

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>

  • PHP
  • 回答数2
  • ありがとう数0

みんなの回答

回答No.2

>ラジオボタンで選択をしなくても最初からあいこが表示された状態になります。どの部分を修正すればいいですか? ここが初期値でしょ? $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 = 'あいこ'; } ってこと

回答No.1

> if ($me === $you) { > $result = 'あいこ'; > } 上記の部分を以下のようにしましょう。 if ($you === '') { $result = ''; } else if ($me === $you) { $result = 'あいこ'; }

関連するQ&A

  • PHPでじゃんけん勝負

    じゃんけん勝負ができるプログラムを作成しました。ラジオボタンから選択した値 (「グー」あるいは「チョキ」あるいは「パー」)をPOSTで送信し、ユーザと相手(コンピュータ)が 選んだ手と、じゃんけんの勝敗を表示するというプログラムです。 エラーはありませんが、下記のプログラム以外にシンプルなプログラムがあれば教えてください。 <?php $janken = array('グー', 'チョキ', 'パー'); $result = ''; $me = ''; $com = ''; // $_POST['hand']が存在するか確認するのにissetを使う。$_POST['hand']を使いたいのであれば必ず必要 if (isset($_POST['hand']) === TRUE) { $me = htmlspecialchars($_POST['hand'], ENT_QUOTES, 'UTF-8'); $com = $janken[array_rand($janken)]; } if ($me === '' || $com === '') { $result = ''; //データがない時の処理 print '下の3つの中からどれかを選択してください'; } else if ($me === $com) { $result = 'あいこ'; } else if ($me === 'グー' && $com === 'チョキ' || $me === 'チョキ' && $com === 'パー' || $me === 'パー' && $com === 'グー') { $result = '勝ち'; } else { $result = '負け'; } ?> <!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method ="post"> <h1>じゃんけん勝負</h1> <p>自分:<?php print $me; ?></p> <p>相手:<?php print $com; ?></p> <p>結果:<?php print $result; ?></p> <!--php if ($hand === 'グー'){ print 'checked';} もしhandがグーであるなら、チェックボックスにチェックを表示させる--> <!--これをすることにより直近で選んだものにチェックがされるので、連続でクリックするときに便利--> <label><input type="radio" name="hand" value="グー">グー</label> <label><input type="radio" name="hand" value="チョキ">チョキ</label> <label><input type="radio" name="hand" value="パー">パー</label> <p><input type="submit" value="勝負!"></p> </form> </body> </html>

    • ベストアンサー
    • PHP
  • ジャンケンであいこになる確立・・。

    3人でじゃんけんしたとき、あいこになる確率は、1/3*1/3*1/3(3人の出し方)*3(グー・チョキ・パー)で1/9になると思っていたのですが、どうも違うようで、答えは1/3なんですが、もうひとつ3をかけるその意味をおしえてください。

  • じゃんけん

    4人でじゃんけんを1回行う時あいこになる確率を教えてください 4人ともグーパーチョキの同じものを出す3通り 2人が同じで残りの2人が異なる場合 例えば 2人がパーで後の2人がグーとチョキ 2人がチョキで後の2人がパー、グー 2人がグーで後の2人がパーとチョキ の3通り で合ってますか?

  • じゃんけんの確率について教えてください

    じゃんけんの確率について教えてください じゃんけんの確率について教えてください。 3人でじゃんけんをしました。 3人ともパーを出してあいこになりました。 再び3人でじゃんけんをしました。 3人ともグーを出してあいこになりました。 この2回のじゃんけんで1回目でパー、2回目でグーであいこになる確率(ただ単に2回とも、あいこになる確率ではなく)を教えてください。 P.S. 考えすぎて頭が混乱しているので、言っている意味がわからなければすみません。 普通に3人でじゃんけんをして2回連続あいこになる確率(例えば2回ともチョキであいこ)とは違うような気がしまして・・・

  • 英語で、じゃんけんするときに、「あいこ」の場合に、どういうの?

    子供から、英語でじゃんけんする場合、グー、チョキ、パーは、どのように言えばいいのかを、聞かれました。 また、「あいこ」のとき、どういうのかを、聞かれました. 英語で、じゃんけんのようなものは、あるのでしょうか。教えてください.

  • 10回じゃんけんの確率計算

    モバゲーにて、10回じゃんけんを同時にして合計6勝以上したら、景品がもらえるという遊びがはやっています。 そこで6勝以上する確率の計算法もしくは、6勝以上する確立を教えていただけないでしょうか? 相手「グー」「チョキ」「グー」「チョキ」「グー」「チョキ」「グー」「チョキ」「グー」「チョキ」 自分「チョキ」「グー」「チョキ」「グー」「チョキ」「グー」「チョキ」「グー」「パー」「グー」 このように10回じゃんけんを一度に出し、合計の勝利数で決まります。二人同時に手をだします。 この例だと、自分が6勝です。 あいこは、勝ちには入りませんので、負けと同じ扱いです。 説明不十分かと思いますので、対戦例を2点かきます。 相手「グー」「チョキ」「グー」「チョキ」「グー」「チョキ」「グー」「チョキ」「グー」「チョキ」 自分「グー」「チョキ」「チョキ」「グー」「チョキ」「グー」「チョキ」「グー」「パー」「グー」 ↑これは、自分が、5勝です。 相手「グー」「グー」「グー」「グー」「グー」「グー」「グー」「グー」「グー」「グー」 自分「パー」「パー」「パー」「パー」「パー」「パー」「パー」「パー」「パー」「パー」 ↑これは自分が10勝です。 じゃんけんの手は、二人とも、同時に10手だします。6連勝じゃなく、負けても、何度目で勝ってもいいので、6回以上かてた時の確率を知りたいです。

  • チョコレートプラネットのじゃんけん

    キングオブコントでチョコレートプラネットがやっていた ”あっちむいてホイ”(アルチスムルケスポリス?)のネタで、 じゃんけんのことをなんてゆっていたか わかりますか? 全くわかりません。 それとグーとパーはなんていいますか? ●あっちむいてホイ→アルチスムルケスポリス(?) ●じゃんけん→? ●グー →? ●チョキ→チキリス(?) ●パー →? あいこ→アイコリオン(?)

  • じゃんけん!

    じゃんけん! パー=パイナップル チョキ=チョコレート グー=?・・・グリコ?ですよね?

  • じゃんけんゲームの期待値です。

    A,Bの2人でじゃんけんをして勝ったものが得点を得るゲームをする。 負けたものは、得点を得られないが減らされることはない。 また、あいこの場合は双方とも得点は得られない。 得点はグー・チョキ・パーの手をだして勝った時、 それぞれ3点・5点・6点であるとする。 (1) 2人が同じ確率で無作為に手を運ぶとき、得点の期待値を求めなさい。 (2) 2人がグー・チョキ・パーをそれぞれ1/5、2/5、2/5の確率で無作為にだすとき、 得点の期待値を求めなさい。 どうか、よろしくお願いします。

  • プログラミング(じゃんけんゲーム)

    C言語をしています。 そこでわからない所がありのですが、解説お願いします。 作りたいのは、乱数を使ったジャンケン5回戦で、 一番最後に、何勝何敗何引き分けかを表示させ、 2人のうちどちらが勝ったかです。 最後の何勝何敗何引き分けかを どう書いたらいいかがわかりません。 関数のひきわたしみたいな感じでするというのはわかります。 できたところまでのプログラムが、以下のようなコードです。 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a,c,i; printf("じゃんけんをしましょう。 (グー=1 チョキ=2 パー=3)\n"); for(i=i; i<=5; i++) { srand(time(NULL)); c = rand()%3+1; scanf("%d",&a); if(a==1 && c==1) printf("私もグー=1なので、あいこです。\n"); else if(a==1 && c==2) printf("私はチョキ=2なので、あなたの勝ちです。\n"); else if(a==1 && c==3) printf("私はパー=3なので、あなたの負けです。\n"); else if(a==2 && c==1) printf("私はグー=1なので、あなたの負けです。\n"); else if(a==2 && c==2) printf("私もチョキ=2なので、あいこです。\n"); else if(a==2 && c==3) printf("私はパー=3なので、あなたの勝ちです。\n"); else if(a==3 && c==1) printf("私はグー=1なので、あなたの勝ちです。\n"); else if(a==3 && c==2) printf("私はチョキ=2なので、あなたの負けです。\n"); else if(a==3 && c==3) printf("私もパー=3なので、あいこです。\n"); else printf("正しい手を入れてください。\n"); } return 0; }

専門家に質問してみよう