PHP+MySQL基礎マスター講座スタート

2010 年 8 月 16 日

2010年8月16日から夜間スクールで、3ヶ月間の「PHP+MySQL基礎マスター科」の受講開始しました。

教室内の様子

教室内の様子

路面電車が走る大塚駅前

路面電車が走る大塚駅前

卒業制作は東京23区当てクイズ

卒業制作は東京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

池袋ジュンク堂、22時までなのが嬉しい!!
@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):

  1. デジハリ・オンラインスクールに入学
  2. フリーランスで仕事始めました。
  3. フォト蔵で屋外広告データベース公開開始
  4. twitterはじめました
  5. World Press.comにブログを開設しました
  6. Facebookをはじめました
  7. 映像コンテンツも受注可能となりました
  8. iPhone4購入!! いまさらながら最新技術に驚く
  9. Youtubeに登録しました。
  10. Androidスマートブック、IS01ゲット!!

関連記事はYARPP関連記事プラグインによって表示されています。

by MOTO-HAL

このエントリーのトラックバックURL