1-99の中に正解番号が隠れている。これをヒントをもとに見つけ出すゲームを作成しよう。
実行例
①初期画面
②数字を予想して入力する
③結果が出力される(もっと上というヒントがでている)
④ヒントをもとに数字を入力
⑤結果が出力される(もっと大きいようだ)
⑥この作業を正解がでるまで繰り返す(Bingoと出れば正解。新しい問題のリンクが表示される)
⑦New Gameを押すと最初から
実際に遊んで見る
以下のリンクから実際に遊ぶことができる。
https://joytas.net/php/numbergame.php
作成例
<?php
//セッション開始
session_start();
//ポストデータが飛んできているか
if(count($_POST)>0){
$_SESSION['nums'][]=(int)$_POST['num'];
}else{
//Get通信時の処理
//セッションに正解番号を詰める
$_SESSION['bingo']=mt_rand(1,99);
//ユーザーが入力した値を格納していく配列を初期化
$_SESSION['nums']=[];
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>NumberGame</title>
</head>
<body>
<h1>NumberGame!</h1>
<h2>1-99の数字を当ててね</h2>
<p>いくつかな?</p>
<form method="post">
<p>
<!-- autofocus を付けておくと自動的にフォームがアクティブになる(すぐに入力できる) -->
<input type="number" min="1" max="99" name="num" autofocus>
<input type="submit" name="送信">
</p>
</form>
<?php if(count($_SESSION['nums'])>0)://入力された数があるか?>
<table border="1">
<?php for($i=0;$i<count($_SESSION['nums']);$i++)://入力データ数の分、回すループ?>
<?php
//データの取り出し
$user=$_SESSION['nums'][$i];
//正解番号
$bingo=$_SESSION['bingo'];
//ネストさせた三項演算子で結果文字を作成
$result=$user==$bingo?"Bingo!!":($user<$bingo? "Higher!":"Lower!");
?>
<tr>
<td><?=$i+1?></td>
<td><?=$_SESSION['nums'][$i]?></td>
<td><?=$result?></td>
</tr>
<?php endfor;?>
</table>
<?php if($result=='Bingo!!'):?>
<p><a href="">New Game</a></p>
<?php endif;?>
<?php endif;?>
</body>
</html>
コメント