教育ごたくクイズのカスタマイズの方法

※なお、このスクリプトの著作権は、やまちゃりさんにあります。このスクリプトを修正して
 公開するのは自由ですが、その際は、著作者を明らかにしてください。また、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] = "";
Q[1].Ans[1] = "";
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>
学習ゲーム館へ       TOPへ