数当てゲーム

乱数で設定した 1~100 の数字を、何回で当てるかを競うゲームです。

Number Guess を呼び出すコードです。
<a href="http://maedakobe.rw.xsi.jp/php/number.php">Number Guess</a>
次のリンクをクリックすると number.php が呼び出されます。
NumberGuess

NumberGuess の説明

  1. 乱数で設定した 1~100 の数字を、何回で当てるかを競うゲームです。
    元は apache-tomcat のサンプルプログラムですが PHP で組んでみました。
    number.php の全ソースコードです。
    <html>
      <head><title>Number Guess</title></head>
      <body bgcolor="white">
        <h2>「1~100」の数当てゲーム</h2>
        乱数で設定した「1~100」の数字を当てて下さい。<br>
    <?php
        $cnt= $_POST['cnt'];
        $num= $_POST['num'];
        $ans= $_POST['ans'];
    
        if (!isset($cnt))   $cnt= -1;
        if ($cnt==-1)       $num= rand(1,100);
        $cnt++;
        if ($cnt>0)
        {   print("応答回数: $cnt<br>");
            if ($num==$ans)
            {   echo("正解です!!<br>");
                $cnt= -1;
            }
            else  if ($num<$ans) echo("もっと小さな値です!!<br>");
            else  echo("もっと大きな値です!!<br>");
        }
    ?>
    
        <form action="num.php" method="post">
          What's your guess? <input type=text name=ans>
          <input type=submit value="Submit">
    <?php
          print("<input type=\"hidden\" name=cnt value=\"$cnt\">");
          print("<input type=\"hidden\" name=num value=\"$num\">");
    ?>
        </form>
    </body>
    </html>
    
  2. post で渡された $cnt, $num, $ans を受け取ります。
    $cnt は応答した回数のカウンターです。
    $num が正解の値で、1~100 の乱数で設定されています。
    $ans はプイヤーが応答した値です。
        $cnt= $_POST['cnt'];
        $num= $_POST['num'];
        $ans= $_POST['ans'];
    
  3. (!isset($cnt)) は $cnt が設定されていないとき(最初の呼び出し)で -1 を格納します。
    $cnt が -1 のときは $num に乱数で 1~100 の値を設定します。
        if (!isset($cnt))   $cnt= -1;
        if ($cnt==-1)       $num= rand(1,100);
    
  4. 応答回数をカウントアップして印字します。
    $ans が $num と一致したときは正解で、次のゲームを始めるために $cnt に -1 を設定します。
    一致しないときは $ans が大きいか小さいかを知らせます。
        $cnt++;
        if ($cnt>0)
        {   print("応答回数: $cnt<br>");
            if ($num==$ans)
            {   echo("正解です!!<br>");
                $cnt= -1;
            }
            else  if ($num<$ans) echo("もっと小さな値です!!<br>");
            else  echo("もっと大きな値です!!<br>");
        }
    
  5. Form を表示してプレイヤの応答を促します。
    action= から自分自身(number.php)を再起的に呼び出します。
    $cnt, $num, $ans を post で渡します。
    "hidden" は Form に表示されない隠しパラメータです。
        <form action="number.php" method="post">
          What's your guess? <input type=text name=ans>
          <input type=submit value="Submit">
    <?php
          print("<input type=\"hidden\" name=cnt value=\"$cnt\">");
          print("<input type=\"hidden\" name=num value=\"$num\">");
    ?>
        </form>
    
  6. どんなケースでも、最大7回で当てる方法があるのですが、わかるでしょうか。 (^_^;)

前田稔の超初心者のプログラム入門
PHP Program