1.携帯電話から解答・問題作成ができる。
2.解答は、2択・3択・4択などの選択問題
3.解答後は、正解・不正解の表示のあと、解説が表示される。
1.2を満たすクイズシステムとして「QUIZ4-i」(http://www.cj-c.com/cgi_s/qi.htm)があり、利用しようと思いましたが、解答後の解説が表示されるものを探しています。または、「QUIZ4-i」をカスタマイズできる方を探しています。よろしくお願いします。
# DUMMY
# http://modperlis.bounceme.net
# 1.qq.datの正解番号の後ろに「解説<>」を追加
# 2.解説読み込み
#
# [まるつけ]
#
sub m_ {
.
.
.
($mondai,$a,$b,$c,$d,$ok,$exp)=split(/<>/,$LINE[$r]);
.
.
.
# 3.解説表示
#
# [問題表示]
#
sub q_ {
.
.
.
$html.= "$to-○$oa/×$ng<hr>\n";
$html.= "$exp<hr>\n";
.
.
}
# ちなみに、著作権とかダイジョブでしょうか?
# 3.改造しての配布や2次配布は著作権を削除しない限り自由です。
# とは、なっていますが、メールぐらいはした方がいいかもしれません
# DUMMY URL?
# http://modperlis.bounceme.net/
# かなり即興ですが・・・
# diffの見方は知ってますか??
# *************** を区切りに「qi.cgi.org(元CGI)」と「qi.cgi(追加したCGI)」が
# ならんでいます
# 「!」は修正で、「+」が追加した箇所になります
# あとは、行数を見つつ、変更してみてください
diff -cw qi.cgi.org qi.cgi
*** qi.cgi.org 2008-06-14 17:22:22.000000000 +0900
--- qi.cgi 2008-06-14 17:32:16.000000000 +0900
***************
*** 168,173 ****
--- 168,174 ----
$oa= $FORM{'oa'};
$ng= $FORM{'ng'};
$to= $FORM{'to'};
+ $exp= $FORM{'exp'};
$nu= $FORM{'nu'};
$r = $FORM{'r'};
$t = $FORM{'t'};
***************
*** 187,193 ****
if($ok==1){$ans.=$a;}elsif($ok==2){$ans.=$b;}elsif($ok==3){$ans.=$c;}else{$ans.=$d;}
if($maru==1){$m="○";}elsif($maru==0){$m="×";}elsif($maru==2){$m="時間切れ";}
if($Ans_p){$ans="";}else{$ans.="<br>";}
! $ans_h="<hr>$to問目/$m<br>$ans(回答時間/$rim秒)\n";
$html.= "$to-○$oa/×$ng<hr>\n";
_M_
}
--- 188,194 ----
if($ok==1){$ans.=$a;}elsif($ok==2){$ans.=$b;}elsif($ok==3){$ans.=$c;}else{$ans.=$d;}
if($maru==1){$m="○";}elsif($maru==0){$m="×";}elsif($maru==2){$m="時間切れ";}
if($Ans_p){$ans="";}else{$ans.="<br>";}
! $ans_h="<hr>$to問目/$m<br>$ans$exp<br>(回答時間/$rim秒)\n";
$html.= "$to-○$oa/×$ng<hr>\n";
_M_
}
***************
*** 234,240 ****
open(LOG,"$log[0]") || &er_("Can't open $log[0]");
@LINE = <LOG>;
close(LOG);
! ($mondai,$a,$b,$c,$d,$ok)=split(/<>/,$LINE[$r]);
$ENV{'TZ'} = "JST-9";
($sec,$min,$hour,$mday,$mon,$year,$wday)=localtime(time);
($fun,$byou)=split(/:/,$t);
--- 235,241 ----
open(LOG,"$log[0]") || &er_("Can't open $log[0]");
@LINE = <LOG>;
close(LOG);
! ($mondai,$a,$b,$c,$d,$ok,$exp)=split(/<>/,$LINE[$r]);
$ENV{'TZ'} = "JST-9";
($sec,$min,$hour,$mday,$mon,$year,$wday)=localtime(time);
($fun,$byou)=split(/:/,$t);
***************
*** 414,419 ****
--- 415,421 ----
<input type=radio name=oa value=3>3<br>
<input type=radio name=oa value=4>4<br>
<br>
+ <input type=text name=exp size=16 maxlength=$max_qq><br>
もう一度<br>見なおそう!<br>
<input type=submit value=" 登録 ">
</form>
***************
*** 431,441 ****
--- 433,445 ----
if($ba eq ""){ &er_("答え2が未記入!"); }
if($ca eq ""){ &er_("答え3が未記入!"); }
if($da eq ""){ &er_("答え4が未記入!"); }
+ if($exp eq ""){ &er_("解説が未記入!"); }
if(length($to) > $max_qq){ &er_("問題がながすぎ!"); }
if(length($aa) > $max_qa){ &er_("答え1がながすぎ!"); }
if(length($ba) > $max_qa){ &er_("答え2がながすぎ!"); }
if(length($ca) > $max_qa){ &er_("答え3がながすぎ!"); }
if(length($da) > $max_qa){ &er_("答え4がながすぎ!"); }
+ if(length($exp) > $max_qq){ &er_("解説がながすぎ!"); }
open(DB,"$log[0]") || &er_("Can't open $log[0]");
@LOGS = <DB>;
close(DB);
***************
*** 446,452 ****
$size=@LOGS;
if($size >= $max_q){&er_("問題が限度数の$max_q問あります!");}
open(LOG,">>$log[0]") || &er_("Can't write $log[0]");
! print LOG "$to<>$aa<>$ba<>$ca<>$da<>$oa<>\n";
close(LOG);
&hed_;
if($oa==1){$ans=$aa;}elsif($oa==2){$ans=$ba;}elsif($oa==3){$ans=$ca;}else{$ans=$da;}
--- 450,456 ----
$size=@LOGS;
if($size >= $max_q){&er_("問題が限度数の$max_q問あります!");}
open(LOG,">>$log[0]") || &er_("Can't write $log[0]");
! print LOG "$to<>$aa<>$ba<>$ca<>$da<>$oa<>$exp<>\n";
close(LOG);
&hed_;
if($oa==1){$ans=$aa;}elsif($oa==2){$ans=$ba;}elsif($oa==3){$ans=$ca;}else{$ans=$da;}
***************
*** 619,626 ****
foreach (0..$#LINE){
$OFF=0; $N=$_;
foreach $d (@d_){if($N eq $d){$OFF=1;}}
! ($Q,$A,$B,$C,$D,$Ans) = split(/<>/,$LINE[$_]);
! $LINE[$N]="$Q<>$A<>$B<>$C<>$D<>$Ans<>\n";
if($OFF){next;}
push(@New,"$LINE[$N]");
}
--- 623,630 ----
foreach (0..$#LINE){
$OFF=0; $N=$_;
foreach $d (@d_){if($N eq $d){$OFF=1;}}
! ($Q,$A,$B,$C,$D,$Ans,$Exp) = split(/<>/,$LINE[$_]);
! $LINE[$N]="$Q<>$A<>$B<>$C<>$D<>$Ans<>$Exp\n";
if($OFF){next;}
push(@New,"$LINE[$N]");
}
***************
*** 646,653 ****
<input type=submit value="削除"><br>
_AD_
foreach ($page .. $page_end) {
! ($Q,$A,$B,$C,$D,$Ans) = split(/<>/,$LINE[$_]);
! $html.="<hr><input type=checkbox name=d value=$_>/$Q<br>1.$A<br>2.$B<br>3.$C<br>4.$D<br>A.$Ans\n";
}
$html.="<br><input type=submit value=\"削除\"><br></form>\n";
$a=0;
--- 650,657 ----
<input type=submit value="削除"><br>
_AD_
foreach ($page .. $page_end) {
! ($Q,$A,$B,$C,$D,$Ans,$Exp) = split(/<>/,$LINE[$_]);
! $html.="<hr><input type=checkbox name=d value=$_>/$Q<br>1.$A<br>2.$B<br>3.$C<br>4.$D<br>A.$Ans<br>E.$Exp\n";
}
$html.="<br><input type=submit value=\"削除\"><br></form>\n";
$a=0;
# では、よいperlライフを・・・
# shinta@perler
# My Perl Page is http://modperlis.bounceme.net
shintabo さんありがとうございます。
作者さんへは連絡をしておきます。また、問題を登録するときに解説を入力してもらいたいと思っており、それをどのように記述すればできるようになるかも教えていただけませんでしょうか?よろしくお願いします。