めざせクイズ王!

クイズβ版(15301バイト)

めざせ、はらたいらに3000点(意味不明)

しつこいようですが、これはβ版です。

●あそびかた
簡単なクイズです。全部で10問あり、4つの選択肢から正解を選んで下さい。
まだ全体の問題数が少ないので、10問までにしていますが、今後問題数が増えたら100問連続クイズとかやってみたいですね。
クイズの企画をCGIを使って書き加えることができるようにしようと思っています(いずれ)。もし他にありましたらメールで連絡していただくという手もありますね。うん、それがいい。
●しくみ
クイズの問題を加筆修正しやすいように、GetNetTextコマンドを用いて、別ファイルを読み込んでいます。そのファイルは以下の様な書式に統一しておきます。

 問題文,正解,ダミー1,ダミー2,ダミー3  (例)1+1は,2,200,0,わからない,

そのようにして書き込まれているファイルを一端メモリ内部に読み込みます。それをとりあえずフィールドに格納して、そこから部分の切り出しにかけています。
そこの部分のスクリプトは以下のようになっています。ここでは簡単な解説にとどめておきますが、いずれ「できるがな」の方で作り方を解説する予定です。


--(c)Akira SAno 1997 --個人で使う分には何をしても構いません
--営業目的で使用するときには、佐野宛に許諾を得て下さいね
on yomikomi
 --ここで読み込んだテキストをダミーフィールド(画面には見えていないフィールド)
 --に格納します。
 put NetTextResult() into field "text"
 --区切り文字を半角のコンマに設定します。
 set the itemDelimiter = ","

 --問題を順番に格納していく
 put the number of items in field "text" into MondaisuMax

 repeat with m=1 to integer(MondaisuMax/5)
  --問題を格納
  setAt MondaiList, m,item 5*(m-1)+1 of field "text"
  --正解を格納
  setAt seikaiList ,m,item 5*(m-1)+2 of field "text"
  --ダミーの解を用意
  setAt FirstDammyList , m , item 5*(m-1)+3 of field "text"
  setAt SecondDammyList, m , item 5*(m-1) +4 of field "text"
  setAt ThirdDammyList ,m,item 5*(m-1) +5 of field "text"
  --出題番号をランダムにするために、問題の出題順番を決めるためのリストを作成
  setAt SyutudaiZyunList,m,m
 end repeat

--問題の出題順をシャッフルします
--しくみは神経衰弱の時の方法と同様です
 repeat with s=1 to 1000
  put random(count(SyutudaiZyunList)) into target
  put getAt(SyutudaiZyunList,target) into targetNum
  deleteAt(SyutudaizyunList,target)
  setAt SyutudaizyunList,count(SyutudaiZyunList)+1,targetNum
 end repeat
end

on hyouzi
 if Mondaisu >10 then
  go to "kekka"
 else
 --問題の表示を行います
  put "第" & Mondaisu & "問" into field "DaiNanMon"
  put getAt (mondaiList,getAt(syutudaizyunList,mondaisu)) into field "mondai"
  put getAt(syutudaizyunList,mondaisu) into Point
  --選択肢の表示順番を決めるリストを作ります
  set narabeList=[1,2,3,4]

 repeat with s=1 to 10
 --さきほどと同様にシャッフルします
  put random(4) into target
  put getAt(narabeList,target) into targetNum
  deleteAt(narabeList,target)
  setAt narabeList,4,targetNum
 end repeat

 repeat with n=1 to 4
 --このcase文が表示の中心部分になります
  case getAt(narabeLIst,n) of :
   1:
   put getAt(seikaiList,Point) into field string(n)
   2:
   put getAt(FirstDammyList,Point) into field string(n)
   3:
   put getAt(SecondDammyList,Point) into field string(n)
   4:
   put getAt(ThirdDammyList,Point) into field string(n)
  end case
 end repeat
 --正解は何番なのかを格納します
 put getOne(narabeList, 1) into seikaiNo
 end if
end
あとは色々な画像処理などを書き加えます。
また「できるがな」の方で詳しく解説しますので、気長にお待ち下さい。
© Akira SAno 1997
一応こんなページでも著作権は佐野彰に存在します
リンクフリーですが、メールでご連絡頂けたら嬉しいです。
97/5/11  論文からの逃避行動として更新
homeホームに戻る