2010年8月16日から夜間スクールで、3ヶ月間の「PHP+MySQL基礎マスター科」の受講開始しました。
卒業制作は、ランダムで表示される地図の区名を当てる「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関連記事プラグインによって表示されています。