教育ごたくクイズのカスタマイズの方法
※なお、このスクリプトの著作権は、やまちゃりさんにあります。このスクリプトを修正して
公開するのは自由ですが、その際は、著作者を明らかにしてください。また、edugame.com
にもリンクをはっていただけるとうれしく思います。
ソースの強調している部分を、お持ちのエディタ、ワープロソフト、HTML作成ソフトなどでなおしてみてください。
ウィンドウズに付属のメモ帳でもかまいません。このままカット&ペーストして修正されてもけっこうです。
どんなソフトかためしてみたい方、ダウンロードして遊んでみたい方は、下記からどうぞ。
・ためしに遊んでみる ・サンプルをダウンロードする
太い字は、変更可能、赤い字は、解説
ファイル名なども変更可能ですが、画像ファイルの名前を変えた方がかんたんです。
なお、このスクリプトは教師用の解説機能つきのスクリプトです。コンピュータクラブなどで児童に作らせる
ための解説機能のないスクリプトは、サンプルに含まれていますのでダウンロードしてください。
カスタマイズのやり方はほとんど同じです。
<HTML> <HEAD> <TITLE>5択問題クイズ(児童教育バージョン)</TITLE> <SCRIPT language="JavaScript"> <!-- standard = new Image(); standard.src = "standard.gif";//考え中の画像 good = new Image(); good.src = "good.gif";//正解時の画像 bad = new Image(); bad.src = "bad.gif";//不正解時の画像 end0 = new Image(); end0.src = "end0.gif";//0点の時の画像 end1 = new Image(); end1.src = "end1.gif";//10点の時の画像 end2 = new Image(); end2.src = "end2.gif";//20点の時の画像 end3 = new Image(); end3.src = "end3.gif";//30点の時の画像 end4 = new Image(); end4.src = "end4.gif";//40点の時の画像 end5 = new Image(); end5.src = "end5.gif";//50点の時の画像 end6 = new Image(); end6.src = "end6.gif";//60点の時の画像 end7 = new Image(); end7.src = "end7.gif";//70点の時の画像 end8 = new Image(); end8.src = "end8.gif";//80点の時の画像 end9 = new Image(); end9.src = "end9.gif";//90点の時の画像 end10 = new Image(); end10.src = "end10.gif";//100点の時の画像 var Qnum = 4; //問題数 var Gnum = 4; //ジャンル数、ただし数字だけふやしてもだめです。 var onGame = 0; //ゲーム中かどうか var inCount, inPoint; var Qcount = new Array(Gnum); var Point = new Array(Gnum); var NowQ = 0; var Q = new Array(Qnum); var i; for(i = 0; i <= Gnum - 1; i ++){ Qcount[i] = 0; Point[i] = 0; } for(i = 0; i <= Qnum - 1; i ++) Q[i] = new Gotaku(); function Gotaku(){ this.Quest; this.Ans = new Array(5); this.genre; //今回は、0:国語,1:算数,2:理科,3:社会とした this.RightAns = 0; this.comment; this.fig = "nothing"; this.WriteQuest = WriteQuest; this.CheckAns = CheckAns; } function FirstSet(){ var i; document.MsgBox.WriteArea.value = "ジャンルをえらんでスタートボタンをおすとゲームをはじめます。\nジャンルはと中でかえても大じょうぶです。\n全部で10問です。がんばってね!";//最初のメッセージ。\nは改行の記号です。 document.MsgBox.Answer0.value = ""; document.MsgBox.Answer1.value = ""; document.MsgBox.Answer2.value = ""; document.MsgBox.Answer3.value = ""; document.MsgBox.Answer4.value = ""; Q[0].Quest = "この人はだれ?";//ここに問題文を書きます。 Q[0].Ans[0] = "源頼朝"; //一番上に正しい答えを書いてください Q[0].Ans[1] = "源義経"; //この下には誤答を書きます Q[0].Ans[2] = "平清盛"; Q[0].Ans[3] = "北条政子"; Q[0].Ans[4] = "小泉純一郎"; Q[0].comment = "1192年に鎌倉に幕府を開いた人だよ。";//ここには、不正解の時に表示する解説を書きます Q[0].genre = 3; //ここには、ジャンルを数字で入れます。 Q[0].fig = "yoritomo.gif"; //問題文に画像を表示する時に追加します。http://www.***.jpgというようにアドレスで指定もできます Q[1].Quest = "2回たしても、2回かけても答えが同じになる数はどっち?"; Q[1].Ans[0] = "2"; Q[1].Ans[1] = "3"; Q[1].Ans[2] = ""; //2択にする場合は、残りを空白にします Q[1].Ans[3] = "";//空白の場合、必ずダブルクウォーテーションは残してください。 Q[1].Ans[4] = ""; Q[1].comment = "2+2=4、2×2=4。0でもできるね。"; Q[1].genre = 1; Q[2].Quest = "めだかのオスとメスはどこで見分ける?"; Q[2].Ans[0] = "ひれの形"; Q[2].Ans[1] = "目の大きさ"; Q[2].Ans[2] = "体の色"; Q[2].Ans[3] = ""; Q[2].Ans[4] = ""; Q[2].comment = "見分けるポイントは2つあるよ。"; Q[2].genre = 2; Q[3].Quest = "宮沢賢治の作品じゃないのは、どれ?"; Q[3].Ans[0] = "ごんぎつね"; Q[3].Ans[1] = "雪わたり"; Q[3].Ans[2] = "銀河鉄道の夜"; Q[3].Ans[3] = "注文の多い料理店"; Q[3].Ans[4] = ""; //問題を追加する時は、[ ]の数字を変えてこの下に追加してください。 Q[3].comment = "これは、新美南吉の作品だよ。";//その際はvar Qnum = 4;の数字の変更も忘れずに Q[3].genre = 0; } function GenreCheck(){ var i, tmp = 0; for(i = 0; i <= Gnum - 1; i ++){ if(document.MsgBox.SlctGenre[i].checked == true) tmp ++; }; if(tmp == 0){ alert("ジャンルはかならず1つ以上選んでください。");//1つもジャンルを選ばなかったときのエラーメッセージ for(i = 0; i <= Gnum - 1; i ++) document.MsgBox.SlctGenre[i].checked = true; } } function RndSelect(){ NowQ = Math.floor(Math.random() * Qnum); if(document.MsgBox.SlctGenre[Q[NowQ].genre].checked == true){ Qcount[Q[NowQ].genre] ++; inCount ++; Q[NowQ].WriteQuest(); } else RndSelect(); } function WriteQuest(){ var n, i, Acount = 0; var tmp, Rnd; n = new Array(5); for(i = 0; i <= 4; i ++){ n[i] = i; }; for(i = 0; i <= 4; i ++){ Rnd = Math.floor(Math.random() * 5); tmp = n[i]; n[i] = n[Rnd]; n[Rnd] = tmp; }; for(i = 0; i <= 4; i ++){ if(n[i] == 0){ this.RightAns = i; } }; document.MsgBox.WriteArea.value = "[第" + inCount + "問]" + this.Quest; document.MsgBox.Answer0.value = this.Ans[n[0]]; document.MsgBox.Answer1.value = this.Ans[n[1]]; document.MsgBox.Answer2.value = this.Ans[n[2]]; document.MsgBox.Answer3.value = this.Ans[n[3]]; document.MsgBox.Answer4.value = this.Ans[n[4]]; if(this.fig != "nothing") CHARA.src = this.fig; } function Check(Num){ if(onGame == 1) Q[NowQ].CheckAns(Num); } function CheckAns(Num){ var i, Acount = 0, Apoint = 0, rate; if(Num == this.RightAns){ document.MsgBox.WriteArea.value ="あたり!!";//あたりの時のメッセージ CHARA.src = good.src; Point[Q[NowQ].genre] ++; inPoint ++; } else{ i = Q[NowQ].RightAns + 1; document.MsgBox.WriteArea.value ="はずれ!!\n正しい答えは「" + i + ":" + Q[NowQ].Ans[0] + "」" + Q[NowQ].comment; CHARA.src = bad.src;//はずれのときのメッセージ } for(i = 0; i <= Gnum - 1; i ++){ Acount += Qcount[i]; Apoint += Point[i]; if(Qcount[i] != 0) Bar[i].height = Math.floor(200 * Point[i] / Qcount[i]) + 1; if(Bar[i].height == 0){ Bar[i].height = 1; } } document.MsgBox.PointArea.value = inPoint*10; rate = Math.floor(1000 * inPoint / inCount) / 10; document.MsgBox.RateArea.value = rate + "%"; if(inCount == 10){ document.MsgBox.WriteArea.value += "\n\nおつかれさま!ゲームおわりだよ!\n";//ゲーム終了時のメッセージ switch(inPoint){ case 0: document.MsgBox.WriteArea.value += "全問はずれ!!!でも、あるぎゃくにすごいかも・・";//0点の時のメッセージ CHARA.src = end0.src; break; case 1: document.MsgBox.WriteArea.value += "ざんねん!1問だけあたり。もっとがんばれ・・・";//10点の時のメッセージ CHARA.src = end1.src; break; case 2: document.MsgBox.WriteArea.value += "2問正解。もっとがんばれ。";//20点の時のメッセージ CHARA.src = end2.src; break; case 3: document.MsgBox.WriteArea.value += "3問あたり!もう一度やってみよう!";//30点の時のメッセージ CHARA.src = end3.src; break; case 4: document.MsgBox.WriteArea.value += "4問あたり!まだまだ、いけるね。";//40点の時のメッセージ CHARA.src = end4.src; break; case 5: document.MsgBox.WriteArea.value += "半分あたり!さあ、あと半分だ。";//50点の時のメッセージ CHARA.src = end5.src; break; case 6: document.MsgBox.WriteArea.value += "6問あたり!、まあまあですね。";//60点の時のメッセージ CHARA.src = end6.src; break; case 7: document.MsgBox.WriteArea.value += "7問あたり、おぬし、なかなかやるね。";//70点の時のメッセージ CHARA.src = end7.src; break; case 8: document.MsgBox.WriteArea.value += "8問あたり!。よくできました♪ごうかく!";//80点の時のメッセージ CHARA.src = end8.src; break; case 9: document.MsgBox.WriteArea.value += "9問あたり!!おしい・・・あと1問!次こそ100点だ!";//90点の時のメッセージ CHARA.src = end9.src; break; case 10: document.MsgBox.WriteArea.value += "やった〜!、全問あたり!!おめでとう!!";//100点の時のメッセージ CHARA.src = end10.src; break; } document.MsgBox.WriteArea.value += "\nさいしょからやり直すときは[スタート]をおして下さい。";//最後のメッセージ document.MsgBox.StartButton.value = " スタート ";//ボタン表示 onGame = 0; } else{ document.MsgBox.StartButton.value = " 次の問題 ";//ボタン表示 onGame = 2; } } function Reset(){ if(onGame == 0){ CHARA.src = standard.src; onGame = 1; inPoint = 0; inCount = 0; document.MsgBox.StartButton.value = " (考え中) ";//ボタン表示 document.MsgBox.PointArea.value = "0"; document.MsgBox.RateArea.value = "0%"; RndSelect(); } if(onGame == 2){ CHARA.src = standard.src; onGame = 1; document.MsgBox.StartButton.value = " (考え中) ";//ボタン表示 RndSelect(); } } //--> </SCRIPT> </HEAD> <BODY onLoad="FirstSet()" BACKGROUND="wall.gif" BGPROPERTIES="fixed" BGCOLOR="#B0B0B0" TEXT="#444444" LINK="#0000FF" VLINK="#8080FF" ALINK="#FF0033"> <FONT SIZE="5"><B>5たくクイズ<BR>(かいせつつき)</B></FONT><BR> <BR> <TABLE BORDER="0"> <TR><TD> <TABLE BORDER="0" CELLSPACING="8" BGCOLOR="#00A0A0"><TR> <TD COLSPAN="2"> <FORM NAME="MsgBox"> <B> 得点:<INPUT TYPE="TEXT" NAME="PointArea" SIZE="8"> 正解率:<INPUT TYPE="TEXT" NAME="RateArea" SIZE="8"><BR> ジャンル: <INPUT TYPE="CHECKBOX" NAME="SlctGenre" VALUE=0 CHECKED onChange="GenreCheck()">国語 <INPUT TYPE="CHECKBOX" NAME="SlctGenre" VALUE=1 CHECKED onChange="GenreCheck()">算数 <INPUT TYPE="CHECKBOX" NAME="SlctGenre" VALUE=2 CHECKED onChange="GenreCheck()">理科 <INPUT TYPE="CHECKBOX" NAME="SlctGenre" VALUE=3 CHECKED onChange="GenreCheck()">社会<BR> </TD></TR> <TR><TD COLSPAN="2"> </B><TEXTAREA NAME="WriteArea" ROWS="8" COLS="60"> </TEXTAREA> </TD></TR> <TR><TD VALIGN="TOP"> <INPUT TYPE="BUTTON" VALUE=" 1 " onClick="Check(0)"><INPUT TYPE="TEXT" NAME="Answer0" SIZE="50"><BR> <INPUT TYPE="BUTTON" VALUE=" 2 " onClick="Check(1)"><INPUT TYPE="TEXT" NAME="Answer1" SIZE="50"><BR> <INPUT TYPE="BUTTON" VALUE=" 3 " onClick="Check(2)"><INPUT TYPE="TEXT" NAME="Answer2" SIZE="50"><BR> <INPUT TYPE="BUTTON" VALUE=" 4 " onClick="Check(3)"><INPUT TYPE="TEXT" NAME="Answer3" SIZE="50"><BR> <INPUT TYPE="BUTTON" VALUE=" 5 " onClick="Check(4)"><INPUT TYPE="TEXT" NAME="Answer4" SIZE="50"><BR> <INPUT TYPE="BUTTON" NAME="StartButton" VALUE=" スタート " onClick="Reset()"> </FORM> </TD><TD WIDTH="160" HEIGHT="160"> <IMG ID="CHARA" SRC="standard.gif"> </TD></TR> </TABLE> </TD><TD VALIGN="BOTTOM"> <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" BACKGROUND="G_base1.gif"> <TR ALIGN="CENTER" VALIGN="BOTTOM"> <TD STYLE="width:60px;height:221px;"> </TD><TD STYLE="width:40px;height:221px;padding:0px;"> <IMG SRC="bar.gif" ID="Bar" HEIGHT="1" WIDTH="20"></TD> <TD STYLE="width:40px;height:221px;padding:0px;"> <IMG SRC="bar.gif" ID="Bar" HEIGHT="1" WIDTH="20"></TD> <TD STYLE="width:40px;height:221px;padding:0px;"> <IMG SRC="bar.gif" ID="Bar" HEIGHT="1" WIDTH="20"></TD> <TD STYLE="width:40px;height:221px;padding:0px;"> <IMG SRC="bar.gif" ID="Bar" HEIGHT="1" WIDTH="20"></TD> <TD STYLE="width:20px;height:221px;"> </TR> <TR> <TD COLSPAN="6" STYLE="width:240px;height:19px;"> <TD> </TR> </TABLE> </TD> </TR> </TABLE> </BODY> </HTML> |