2010年8月16日から夜間スクールで、3ヶ月間の「PHP+MySQL基礎マスター科」の受講開始しました。
![]() 教室内の様子 |
![]() 路面電車が走る大塚駅前 |
![]() 卒業制作は東京23区クイズ |
卒業制作は、ランダムで表示される地図の区名を当てる「23区当てクイズ」を企画・制作。
難易度を上げるために、23区ボタンも一問毎にランダムでシャッフルします。
毎回進捗%バーと正解率%バーを表示、23問解いた後は上位ランキングと自分の順位を表示します。
![]() 正解画面 |
![]() 不正解画面 |
![]() 最後はランキング表示 |
他の人は授業課題のECサイトを作り込んで発表した人が多かったんだけど、物理的な負担が大きいソースコードになるので、何とか提出に間に合わせるために早いうちにシンプルなクイズゲームにシフトして、提出にしっかり間に合わせました。
メインのソースコード
< ?php
//セッションを開始します。
session_start();
// 共通ヘッダデータをインクルードします。
require_once("init01.php");
//セッション変数quizの取り出し(23回カウント用)
$quiz = $_SESSION["quiz"]; //カウント用quiz関数
//セッション変数rand_arからランダム配列取り出し
$rand_ar = $_SESSION["rand_ar"];
//セッション変数から正解数取り出し
$rate = $_SESSION["rate"];
//クイズの回数が0か空なら新規で乱数生成して格納。
if ($quiz == 0 or $quiz == null) {
//セッションをクリアします。
//session_unset();
//session_destroy();
// 変数を破棄
//unset($quiz, $rand_ar, $percent, $quizG);
// 正解数カウント用のrateをゼロクリア(Nullのままだとインサート文実行に不具合が)。
$rate = 0;
//さらにセッション変数にrateを記入
$_SESSION["rate"] = $rate;
// 1〜23の範囲でランダムに整数発生。画像ファイルランダム表示用。
$quiz = 0;
$rand_ar = range(1, 23); // 1〜23の範囲で指定
shuffle($rand_ar); // 指定範囲からランダム配列取得
$_SESSION["rand_ar"] = $rand_ar; // セッション変数にランダム配列格納
}
else{
}
//quiz変数にプラス1する前の値を、画像表示用に
$quizG = $quiz;
//quiz変数にプラス1
$quiz++;
//セッション変数として、quiz格納(23回カウント用)
$_SESSION["quiz"] = $quiz;
?>
< ?php
// map23テーブルの全フィールドを読み込むSQL文を組み立てます(ランダムソートオプション)
$sql = "SELECT * from map23 ORDER BY RAND()";
// SQLを発行して結果セットを取得します
$rst = mysql_query($sql);
// 取得されたデータのレコード数を取得します
$reccnt = mysql_num_rows($rst);
// テーブルの組み立て
$body .= "<center><table width='700' border='0'>".
"<tr><td colspan='3' align='center' bgcolor='#cccccc'>23区当てクイズ</td></tr>
<tr><td colspan='3' align='center'><br /><b>Q$quiz</b> 黄色い部分は何区ですか。
該当するボタンを押しなさい。</td></tr>
<tr>
<td rowspan='13'>";
//画像表示。ファイル名をランダム配列から指定する
$body .= "<img src='./images/$rand_ar[$quizG].jpg'/></td>"; // マップ画像ファイル呼び出し
//レベルゲージの%表示を計算
$percent = $quiz/24*100;
//レベルゲージの数値表示用四捨五入
$percent=round($percent);
for ($roww = 1; $roww < = 12; $roww++) {
$body .= "<TR>";
for ($coll = 1; $coll < = 2; $coll++) {
$col = mysql_fetch_array($rst); //配列を取り出す
// 24個目はFORMボタンを出さない。
if ($coll == 2 and $roww == 12){
// A本番用
//$body .= "<TD width='140' align='center'>";
// Bテスト用 区名表示
$body .= "<td width='140' align='center'>$rand_ar[$quizG]</td>";
}
// それ以外はFORMボタンを表示
else{
$body .= "<td width='140' align='center'>".
"<form METHOD='post' ACTION='kotae.php'>".
// A本番用番号なしボタン
// "<input TYPE=\"submit\" VALUE='$col[kanji]区' style='WIDTH: 120px; text-align: left;'/>".
// Bテスト用番号ありボタン
"<input TYPE=\"submit\" VALUE='($col[bang]) $col[kanji]区' style='WIDTH: 120px; text-align: left;'/>".
// 表示されている地図画像の番号情報(23個のランダム配列を頭から順番に取り出す)
"<input TYPE='hidden' NAME='gazou' VALUE='$rand_ar[$quizG]'/>".
"<input TYPE='hidden' NAME='kanji' VALUE='$col[kanji]'/>".
"<input TYPE='hidden' NAME='bang' VALUE='$col[bang]'/>".
"</form></td>";
}
}
}
// 進捗状況の文字表示
$body .= "</tr>".
"<tr><td colspan=3>進捗状況:23問中".$quiz."問目($percent%)
</td></tr>
<tr><td colspan=3 align='left'><hr align='left' style='color:red;background-color:red;
border:none;width:$percent%;height:1em;'/>
</td></tr>";
// 正解率の計算と表示
if ($quiz == 1){
$rateb = $rate/($quiz)*100;
}
else{
$rateb = $rate/($quiz-1)*100;
}
// 正解率を四捨五入
$rateb=round($rateb);
$body .= "".
"<tr><td colspan=3>正解率($rateb%)
</td></tr>";
// 進捗状況バーの表示
$body .= "<tr><td colspan=3 align='left'><hr align='left' style='color:red;background-color:blue;
border:none;width:$rateb%;height:1em;'/>
</td></tr>";
$body .= "</table>";
// 結果セットを破棄します
mysql_free_result($rst);
?>
<br />
< ?=$body?>
< ?php
// テスト用画像番号の表示
print "変数rate=".$rate;
//print "$rand_ar[$quizG].jpg";
/*
$a = 0;
while($cool = $rand_ar[$a]){
$a++;
print "($a)".$cool."<br>";
}
*/
?>
卒業製作、PHPでゲームを作ってる。MySQLには何とランキングを吐き出す命令がなかった、、、結局配列を獲得点数の昇順でグルグル回して、一番最後のプレイヤーのIDとぶつかったら、何回回ったかを別の変数に格納する事に。シンプルな方法だが、データベースが10万件とかあったら使えない。
@advernya
MOTO-HAL Japan
PHP&MySQLスクールの卒業制作で、東京都23区当てクイズを制作中。23区の地図をランダムで表示、23区ボタンは一回毎にランダムで入れ替え難易度を上げる。進捗率バーと正解率バーを1問毎に表示。制限時間タイマーも実装出来るかどうか。
@advernya
MOTO-HAL Japan
いまECサイトのプログラムをPHPで組んでいる。まあ練習なので、実際に使うシステムではないのだが。まずは初心者クリアーで、初中級クラスって感じか。
@advernya
MOTO-HAL Japan
いま夜間でPHPプログラムのスクールに通ってるんだけど、自分的には「もう限界」と思っても、クラスメートが更に高いレベルで組んでいたりするので、ソースコードを見せてもらったりして、非常に勉強になる。
@advernya
MOTO-HAL Japan
いま平日はPHPプログラムの夜間講習に通っている。やっと初心者の1つ目の山を越えたくらいのレベルだけど、ちょっと理解が進むとやや面白くなってくる。初心者の山はあと1000個くらいありそうだけどねぇ(笑)。
@advernya
MOTO-HAL Japan
ええ!?キンカ堂池袋店って、今年2月に自己破産したの!!2005年頃池袋の風俗街の印刷会社でお世話になっている時に、昼休みに安いTシャツ買いに行ったりしてお世話になったのに。同族経営で云々という話しを、当時元幹部っぽい人が言ってたなぁ。
@advernya
MOTO-HAL Japan
池袋の世界堂、なんとシステム手帳のリフィルが置いてなかった、、、画材に特化してるのか。しかもリフィルをずっとリファルかと思ってて、ちょっと恥書いた(笑)。
@advernya
MOTO-HAL Japan
近所にある図書館の分室にいったが、PHPの本が一冊しかなかった!!他の区の知り合いはPHPの本がごっそりあると言っていたが、、、やはり分室だと置いてないかぁ。厳しい。
@advernya
MOTO-HAL Japan
新宿中央図書館にPHPのプログラミング本を探しに行ったが、PHPのピの字もなかった、、、PHP研究所の本は腐るほどあるのに。参ったなぁ、ターゲットが違うんだろうなぁ。子供・老人・学生は普通読まないもんねぇ。大学の図書館の方が蔵書がおおいなぁ。
@advernya
MOTO-HAL Japan
昨日、中野図書館に行ってみたが、ここにもPHPプログラミングの本はなかった、、、PHP4→5移行ガイドみたいな本はあったが。図書館で探すのは無理なジャンルか。きっと大学の図書館も、VBくらいしかないんだろうなぁ、、、
@advernya
MOTO-HAL Japan
無事、PHPの卒業制作プレゼン・コードレビュー終了!!さようなら大塚、ありがとうジュンク堂池袋店!!もう当分池袋方面にいく用事はなさそうです。 http://is.gd/hi1nb
@advernya
MOTO-HAL Japan
現在、PHPの卒業課題を動かす無料サーバーを申請中。無料でPHPとMysqlを使えるヤツ。ブログで借りてるサーバーは、データベースが吹っ飛んだらヤバいので、別のを借りる事にした。
@advernya
MOTO-HAL Japan
PHPスクール、今日修了式!!無事勤め上げました。その後打ち上げで夕方4時から5時間飲んでた。かなり飲んだなぁ。ほとんどのメンバーが2次会のカラオケに行った。この時間だと朝までコースか。みんな若いなあ。
@advernya
MOTO-HAL Japan
関連記事もどうぞ! Related posts(MOTO-HAL Japan):
- デジハリ・オンラインスクールに入学
- フリーランスで仕事始めました。
- フォト蔵で屋外広告データベース公開開始
- twitterはじめました
- World Press.comにブログを開設しました
- Facebookをはじめました
- 映像コンテンツも受注可能となりました
- iPhone4購入!! いまさらながら最新技術に驚く
- Youtubeに登録しました。
- Androidスマートブック、IS01ゲット!!
関連記事はYARPP関連記事プラグインによって表示されています。








miu reel (ミュウリール)OFFICIAL HOMEPAGE
SBLOG
ヲトメ塾
梅四うだひろえの「おきらくがき」日誌