そしてこちらは、現在地点 2014年09月
2ntブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

どこまで汎用化できるのか

テキストを読み込んで内容をゲーム内に反映させる方法の試行錯誤中
一応書き取り問題的な物が出来ました、応用できる人は適当に
試作なのでまだ最適化も何もしていません
いまからするつもり
長いよ
wx=1000:wy=400
btx=140:bty=40
title "問題集もどき"
screen 0,wx,wy,0
randomize
textsize=20
vac=5;隙間
font "MS 明朝",textsize,0
que=0
sdim answer,20,10
sdim a,20,10
*initialize
dim quest,66
num=0
redraw 0
color 255,255,255:boxf
objsize btx,bty
pos wx/2-(btx/2),wy/4-(bty/2)
button goto"テキストを読む",*study
pos wx/2-(btx/2),wy/2-(bty/2)
button goto"問題集をやる",*question
pos wx/2-(btx/2),wy*3/4-(bty/2)
button goto"書き取り問題",*writing
redraw 1
stop
*study
if n=0:clrobj:n=1
notesel a
noteload "testtext.txt"
repeat
getkey key,13
if key=1:break
redraw 0
color 255,255,255:boxf
color 0,0,0
pos 0,-cnt
mes a
redraw 1
if cnt=0:await 1000
await 20
loop
goto *initialize
*question
if n=0:clrobj:n=1
color 255,255,255:boxf
await 1000
color 0,0,0
notesel b
noteload "問題集_第1類.txt"
num=notemax/3
que=rnd(num)
quest(que)=1
noteget q0,0
noteget q1,que*3+1
noteget q2,que*3+2
noteget ans,que*3+3
pos 0,0
;if quest(que)=0:
mes q0
pos 0,textsize
mes q1
objsize btx,bty
pos 0,360
button goto"○",*yes
pos 860,360
button goto"×",*no
stop
*yes
color 0,0,0
if (q2="yes"):{
pos 0,textsize*3
mes "正解!"
}
if (q2="no"):{
pos 0,textsize*3
mes "不正解。"
}
pos 0,textsize*4:mes ans
await 1000
goto *answered
*no
color 0,0,0
if (q2="yes"):{
pos 0,textsize*3
mes "不正解。"
}
if (q2="no"):{
pos 0,textsize*3
mes "正解!"
}
pos 0,textsize*4:mes ans
await 1000
goto *answered
*answered
pos 0,textsize*4
mes ans
await 600
goto *question
//ここから下は書き取り問題のスクリプトを記す
*writing
if n=0:clrobj:n=1
repeat 10,0
a(cnt)="回答を入力"
loop
color 255,255,255:boxf;初期化
await 1
notesel w
noteload "問題集_法令.txt"
num=notemax/3
numb=rnd(num)
noteget r,numb*3
noteget rr,numb*3+1
noteget rrr,numb*3+2
rt=int(r)
j=rt/10000;上1桁目の数、問題の章
//jは問題の分野
k=rt\10000;下4桁の数
jj=k/1000;上2桁目の数、書き取る箇所の数
k=k\1000;下3桁の数
jjj=jj/100;上3桁目の数、問題のジャンル
k=k\100;下2桁の数
color 0,0,0
pos textsize*2,0
switch j
case 1
mes "危険物に関する法令について":swbreak
swend
pos textsize,textsize
switch jj
case 1
mes "危険物と指定数量について、次の問に答えよ。":swbreak
case 2
mes "製造所などの区分・手続きについて、次の問に答えよ。":swbreak
case 3
mes "義務違反に対する措置について、次の問に答えよ。":swbreak
case 4
mes "危険物と保安などについて、次の問に答えよ。":swbreak
case 5
mes "定期点検と予防規定について、次の問に答えよ。":swbreak
case 6
mes "製造所などの位置・構造・設備について、次の問に答えよ":swbreak
case 7
mes "貯蔵・取り扱いの基準について、次の問に答えよ。":swbreak
case 8
mes "運搬と移送の基準について、次の問に答えよ。"
case 9
mes "製造所などに設ける共通の設備について、次の問に答えよ。"
swend
k=str(k)
k+=" "
k+=rr
rr=k
pos textsize,textsize*2
mes rr
pos textsize,textsize*4+vac
input a(0),200,20
if jj>1:{
pos textsize,textsize*5+(vac*2)
input a(1),200,20;インプットボックスの答えを配列aに代入
}
if jj>2:{
pos textsize,textsize*6+(vac*3)
input a(2),200,20
}
if jj>3:{
pos textsize,textsize*7+(vac*4)
input a(3),200,20
}
pos wx-btx,wy-bty
button goto"これでいい",*written
stop
*written
number=0
repeat jj,0;選択肢の個数分繰り返す-----------------------------------------
put=strmid(r,5+cnt,1)
if put="a":range=1
if put="b":range=2
if put="c":range=3
if put="d":range=4
if put="e":range=5
if put="f":range=6
if put="g":range=7
if put="h":range=8
range*=2
answer(cnt)=strmid(rrr,number,range);1文字目からrange文字分を取得
answer(cnt)=str(answer(cnt))
number+=range;ナンバーに文字列の長さを追加
loop;-----------------------------------------------writtenメソッドのループここまで
repeat jj,0
color 0,0,0
pos wx/2,3*textsize+(cnt+1)*(textsize+vac)
if a(cnt)=answer(cnt):mes "正解。"
if a(cnt)!=answer(cnt):{
t="不正解。正解は"
t+=answer(cnt)
mes t
}
await 1
loop
n=0
await 2000
goto *writing
追記に軽く解説付けます

続きを読む

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR