数字当てプログラム

HOME   >   数字当てプログラム>   StepByStep(Request 版)

数字当てプログラム(Request版)はじめに

1)このStepByStep方式による実践型プログラミング演習を開始する前に以下の内容に目を通してください。
  ・数字当てゲームの概要
2)StepByStep方式による実践型プログラミング演習では、Step順に進めます。
3)各Stepが何を求めているか(仕様)をしっかり理解します。
【使用方法】
・ここをクリックすると、以下の全Stepを開いたり閉じたりします。
  [Click here to Open/Close for all steps]
・以下のStepタイトルをクリックすると、そのStepを開いたり閉じたりします。

Eclipseディレクトリ準備

  • Eclipseを起動します。
  • PHPプロジェクトを作成します。 プロジェクト名は「php_名字のローマ字」とします。
     ex)名字が「神田」の場合は「php_kanda」
     もし 同名のプロジェクトがすでにあれば、スキップします。
  • フォルダを作成します。 フォルダ名は、「kandait_exercise」とします。
     もし 同名のフォルダ名があれば、スキップします。
  • フォルダを作成します。 フォルダ名は、「number_hit_request」とします。
     もし 同名のフォルダ名があれば、スキップします。
  • ファイルを作成します。 ファイル名は、「GuessNumRequestS01.php」とします。
    必要に応じて同様にGuessNumRequestS01.php、GuessNumRequestS02.php、・・・、
    GuessNumRequestS06.phpもここに作成してください。



Step1:正解の判定

Stepの概要

 変数に正解数値と予想数値を代入し、予想数値が正解数値かどうか判断する処理を作成する。

Stepの前提条件

 当スクールの「PHP入門基礎講座-条件によって処理を変える」までを終了、または同等知識をお持ちの方。

Stepの目的

 if~if else文を習得し、判定処理の流れを理解します。

Stepのキーワード

 文字列表示 変数 条件文(if、if-else)

Stepの仕様

 1)正解数値に「5」、予想数値に「7」を設定し、予想数値が正解数値より大きい場合のメッセージを出力する。
 2)正解数値に「5」、予想数値に「2」を設定し、予想数値が正解数値より小さい場合のメッセージを出力する。
 3)正解数値に「5」、予想数値に「5」を設定し、当たりのメッセージを出力する。

Stepの手順

 1)PHPファイルを作成する
  ・Eclipse準備で作成した「number_hit_request」フォルダの下に「GuessNumRequestS01.php」ファイルを新規
   作成する。


 2)実行結果画面のようになるプログラムを1)で作成した「GuessNumRequestS01.php」に作成する。
 3)作成完了後、次の作成物の提出を行う。(提出方法はこちらをクリックしてください)
  • プロジェクトファイル

Stepの実行結果

 【実行URL】
 http://localhost/php_xxxxxx/kandait_exercise/number_hit_request/GuessNumRequestS01.php
 ※xxxxxxの部分は名字です。

 【予想数『7』・正解数『5』の場合】

 【予想数『2』・正解数『5』の場合】

 【予想数『5』・正解数『5』の場合】

StepのHINT(How to Program)

  1)正解数の変数を「$ansNum」、予想数の変数を「$userNum」とします。
  2)文字列や変数を表示するには、「echo」もしくは「print」を使用します。
  ex)
 echo "予想数".$userNum. "<br>¥n";
  3)if文を使い、「$ansNum > $userNum」の場合は「$userNumより大きいです。」、
    「$ansNum < $userNum」の場合は「$userNumより小さいです。」、
    「$ansNum == $userNum」の場合には、「!!大当たり!!」を表示させます。
ページの先頭へ

Step2:予想数を入力するフォームの作成

Stepの概要

 入力フォームより予想数値を取得し、予想数値が正解数値かどうか判断する処理を作成する

Stepの前提条件

 Step1の提出物を当スクールの指定メールアドレスに送付し終わっていること。

Stepの目的

 フォームのデータ受け渡しを習得します。

Stepのキーワード

 入力フォーム スーパーグローバル変数($_POST[])。

Stepの仕様

 Step1を以下の仕様に修正する。
 1)予想数値を入力フォームより取得し、正解数値と比較する。
 2)正解数値に「5」を設定し、入力フォームから取得した予想数値が正解数値より大きい場合、予想数値が正解数値より
   大きいというメッセージを出力する。
 3)正解数値に「5」を設定し、入力フォームから取得した予想数値が正解数値より小さい場合、予想数値が正解数値より
   小さいというメッセージを出力する。
 4)正解数値に「5」を設定し、入力フォームから取得した予想数値と正解数値が一致した場合、当たりのメッセージを出力する。

Stepの手順

 1)PHPファイルを作成する
  ・Eclipse準備で作成した「number_hit_request」フォルダの下に「GuessNumRequestS02.php」ファイルを
   新規作成する。


 2)実行結果画面のようになるプログラムを1)で作成した「GuessNumRequestS02.php」に作成する。
 3)作成完了後、次の作成物の提出を行う。(提出方法はこちらをクリックしてください)
  • プロジェクトファイル

Stepの実行結果

 【実行URL】
 http://localhost/php_xxxxxx/kandait_exercise/number_hit_request/GuessNumRequestS02.php
 ※xxxxxxの部分は名字です。

 【初期画面】

 【プレーヤー数字入力】

 【結果表示クリック後:入力した数字が5より大きい場合】

 【結果表示クリック後:入力した数字が5より小さい場合】

 【結果表示クリック後:入力した数字が5の場合】

StepのHINT(How to Program)

 1)データの送信にはFormタグを使用し、methodはPOSTを使用します。
 2)テキストボックスのname属性は「player_value」とします。
 3)結果表示ボタンのtype属性をsubmitとし、結果表示ボタンをクリックすることにより、
   データを送信します。送信先は自分自身(GuessNumS2.php)です。
  ex)
 <form action="./GuessNumRequestS2.php" method="POST">
  0から9までの数値を入力して下さい。:<input type="text" name="player_value">
  <input type="submit" value="結果表示">
 </form>
 4)送信されたデータは、「$_POST["player_value"]」で受け取ります。
 5)受け取ったデータは、変数「$userNum」に格納し、表示します。
  ex)
$userNum=$_POST["player_value"];
ページの先頭へ

Step3:入力した予想数のエラー判定

Stepの概要

 予想数に0より小さいか10以上の数値が入力された場合、エラーメッセージを表示させる

Stepの前提条件

 Step2の提出物を当スクールの指定メールアドレスに送付し終わっていること。

Stepの目的

 if~if else文の条件を追加し、エラー処理の流れを理解します。

Stepのキーワード

 条件文(if、if-else)

Stepの仕様

 1)ブラウザの入力フォームから入力された数値が0より小さいか10以上の場合、以下のエラーメッセージを表示する。
   →「エラー!!0から9の数字ではありません

Stepの手順

 1)PHPファイルを作成する
  ・Eclipse準備で作成した「number_hit_request」フォルダの下に「GuessNumRequestS03.php」ファイルを新規
   作成する。


 2)実行結果画面のようになるプログラムを1)で作成した「GuessNumRequestS03.php」に作成する。
 3)作成完了後、次の作成物の提出を行う。(提出方法はこちらをクリックしてください)
  • プロジェクトファイル

Stepの実行結果

 【実行URL】
 http://localhost/php_xxxxxx/kandait_exercise/number_hit_request/GuessNumRequestS03.php
 ※xxxxxxの部分は名字です。

 【初期画面】

 【プレーヤー数字入力】

 【結果表示クリック後:入力した数字が5より大きい場合】

 【結果表示クリック後:入力した数字が5より小さい場合】

 【結果表示クリック後:入力した数字が5の場合】

 【プレーヤー数字入力後:エラー数値の場合】

 【結果表示クリック後:入力した数字が0未満の場合】

 【結果表示クリック後:入力した数字が10以上の場合】

StepのHINT(How to Program)

 1)入力フォームの送信先を変更してください。
  ex)
 <form action="./GuessNumRequestS03.php" method="POST">
  0から9までの数値を入力して下さい。:<input type="text" name="player_value">
  <input type="submit" value="結果表示">
 </form>
 2)以下のような条件文をStep2で作成したソースコードに追加します。
  ex)
 if($userNum < 0 || $userNum > 9){
  echo "エラー!!0から9の数字ではありません<br>¥n";
 }
ページの先頭へ

Step4:入力した予想数を入力フォームに残す

Stepの概要

 入力フォームに入力した数値を、結果表示ボタンクリック後も入力フォームに残るようにする。

Stepの前提条件

 Step3の提出物を当スクールの指定メールアドレスに送付し終わっていること。

Stepの目的

 HTMLフォームに関する理解を深めます。

Stepのキーワード

 入力フォーム、スーパーグローバル変数

Stepの仕様

 Step3に以下の機能を付け加える。
 1)Step3までは、入力フォームに入力した数値は結果表示ボタンクリックでクリアされたが、
   これを結果表示ボタンクリック後も入力した数値が残るようにする。

Stepの手順

 1)PHPファイルを作成する
 ・Eclipse準備で作成した「number_hit_request」フォルダの下に「GuessNumRequestS04.php」ファイルを新規作成する。


 2)実行結果画面のようになるプログラムを1)で作成した「GuessNumRequestS04.php」に作成する。
 3)作成完了後、次の作成物の提出を行う。(提出方法はこちらをクリックしてください)
  • プロジェクトファイル

Stepの実行結果

 【実行URL】
 http://localhost/php_xxxxxx/kandait_exercise/number_hit_request/GuessNumRequestS04.php
 ※xxxxxxの部分は名字です。

 【初期画面】

 【プレーヤー数字入力】

StepのHINT(How to Program)

 1)「$_POST["player_value"]」で受け取ったデータを、「name="player_value"」のinputタグの
   value属性にセットします。
  ex)
 <form action="./GuessNumRequestS04.php " method="POST">
  0から9までの数値を入力して下さい。:
  <input type="text" name="player_value" value=<?php echo $_POST["player_value"]?>>
  <input type="submit" value="結果表示">
 </form>
ページの先頭へ

Step5:正解数(乱数)の生成

Stepの概要

 正解数を固定ではなく、ランダムな数字にする。

Stepの前提条件

 Step4の提出物を当スクールの指定メールアドレスに送付し終わっていること。
 当スクールの「PHP入門基礎講座-関数を使ってみよう」までを終了、または同等知識をお持ちの方。

Stepの目的

 mt_rand()関数の利用方法を習得します。

Stepのキーワード

 組み込み関数

Stepの概要

 正解数を固定ではなく、ランダムな数字にする。

Stepの仕様

 Step4に以下の機能を付け加える。
 1)Step4まで正解数は「5」固定だったが、これをランダムな1桁の数字に変更する。

Stepの手順

 1)PHPファイルを作成する
  ・Eclipse準備で作成した「number_hit_request」フォルダの下に「GuessNumRequestS05.php」ファイルを
   新規作成する。


 2)実行結果画面のようになるプログラムを1)で作成した「GuessNumRequestS05.php」に作成する。
 3)作成完了後、次の作成物の提出を行う。(提出方法はこちらをクリックしてください)
  • プロジェクトファイル

Stepの実行結果

 【実行URL】
 http://localhost/php_xxxxxx/kandait_exercise/number_hit_request/GuessNumRequestS05.php
 ※xxxxxxの部分は名字です。

 【実行結果画面の例①】

 【実行結果画面の例②】

StepのHINT(How to Program)

 1)ランダムな数字(乱数)を取得します。
   乱数を取得するには、PHPにあらかじめ用意されているmt_rand()関数を使用します。
   mt_rand()関数は第1引数から第2引数の間のランダムな整数を返します。
 2)変数「$ansNum」に乱数を代入します。
  ex)
 $ansNum=mt_rand(0,9);
ページの先頭へ

Step6:初期表示画面の改善

Stepの概要

 正解数値の生成を初期表示時のみとする。また初期表示時は結果表示が出力されないようにする。


Stepの前提条件

 Step5の提出物を当スクールの指定メールアドレスに送付し終わっていること。

Stepの目的

 初期表示と2回目以降の判定方法を習得します。

Stepのキーワード

 組み込み関数 スーパーグローバル変数($_POST[])

Stepの仕様

 Step5に以下の機能を付け加える。
 1)正解数値の生成(乱数の取得)を初期表示の時のみとする。以後はこの数値を引き継ぎ、
   結果表示ボタンをクリックしても、正解数が変更されないようにする。
 2)初期表示の時に結果表示が出力されないようにする。

Stepの手順

 1)PHPファイルを作成する
  ・Eclipse準備で作成した「number_hit_request」フォルダの下に「GuessNumRequestS06.php」ファイルを新規
   作成する。


 2)実行結果画面のようになるプログラムを1)で作成した「GuessNumRequestS06.php」に作成する。
 3)次のページのテストケースに沿ってテストを実施し、エビデンスを作成する。
 4)次の作成物の提出を行う。(提出方法はこちらをクリックしてください)

Stepの実行結果

 【実行URL】
 http://localhost/php_xxxxxx/kandait_exercise/number_hit_request/ GuessNumRequestS06.php
 ※xxxxxxの部分は名字です。

 【初期画面】

 【結果表示クリック後】

StepのHINT(How to Program)

 1)入力フォームに正解数を引き継ぐためのinputタグを追加します。表示する必要はないので、
   type属性は「hidden」とし、name属性は「random_value」としてください。
   また、value属性に正解数を格納している変数「$ansNum」を埋め込みます。
  ex)
 <form action="./ GuessNumRequestS06.php " method="POST">
   0から9までの数値を入力して下さい。:
   <input type="text" name="player_value" value=<?php echo $_POST["player_value"]?>>
   <input type="hidden" name="random_value" value=<?php echo $ansNum?>>
   <input type="submit" value="結果表示">
 </form>
 2)乱数の取得を初期表示の時のみ行うようにします。初期表示かどうかの判定はスーパーグローバル変数
   「$_POST["random_value"]」に値がセットされているかどうかで判断します。
   初期表示時はまだ一回も結果表示ボタンが押されていないので、「$_POST["random_value"]」には値が
   セットされていないことになります。
   変数に値がセットされているかどうかの判定は、PHPにあらかじめ用意されているisset()関数を使用します。
   isset()関数は引数に与えられた変数に値がセットされていればTrueが返り、セットされていなければFalse が返ります。
   下記のようなコードで、「$_POST["random_value"]」に値がセットされていない場合は初期表示と判断し、
   乱数を生成して変数「$ansNum」に代入します。
   2回目からは、「$_POST["random_value"]」の値を「$ansNum」に代入すれば、その値が入力フォームに
   セットされるので次の回に正解数が引き継がれます。
  ex)
 if(isset($_POST["random_value"])){
   $ansNum=$_POST["random_value"];
 }else{
   $ansNum=mt_rand(0,9);
 }
   ※ 数値を入力フォームに引き継ぐために、上記のコードは入力フォームの前に記述する必要があります。
 3)初期表示時に結果が表示されないようにするには、2)の考え方を流用します。今回は
   「$_POST["player_value"]」に値がセットされているかどうかで判断します。「$_POST["player_value"]」
   に値がセットされていなければ初期表示と判断できるので、値がセットされているときだけ結果表示を出力する
   ようにします。
  ex)
 if (isset($_POST["player_value"])){
   if($userNum < 0 || $userNum > 9){
      echo "エラー!!0から9の数字ではありません<br>\n";
   }else if($ansNum < $userNum){
      echo $userNum,"より小さいです。<br>¥n";
   }else if($ansNum > $userNum){
      echo $userNum,"より大きいです。<br>¥n";
   }else if($ansNum == $userNum){
      echo "!!大当たり!!<br>¥n";
   }
 }
ページの先頭へ