暇だったので少しつくってみました。
#module
#define GCL_REVERSECONVERSION 0x0002
#uselib "user32.dll"
#cfunc GetKeyboardLayout "GetKeyboardLayout" int
#uselib "imm32.dll"
#cfunc ImmGetContext "ImmGetContext" int
#cfunc ImmGetConversionList "ImmGetConversionListA" int,int,str,int,int,int
#func ImmReleaseContext "ImmReleaseContext" int,int
#defcfunc GetReverseConversion str prm
hIMC = ImmGetContext(hwnd)
hKL = GetKeyboardLayout(0)
dwsize=ImmGetConversionList(hKL,hIMC,prm,0,0,GCL_REVERSECONVERSION)
dim CANDIDATELIST,7+dwsize/4
dum=ImmGetConversionList(hKL,hIMC,prm,varptr(CANDIDATELIST),dwsize,GCL_REVERSECONVERSION)
offset = CANDIDATELIST.6
sdim word,dwsize-offset-2
memcpy word,CANDIDATELIST,dwsize-offset-3,0,offset
ImmReleaseContext hwnd,hIMC
return word
#global
#define Que 10 ;問題の数
screen 0,222,222
dim word,Que
word="鮑","鰯","鯵","鱒","鯒","鱸","鯰","鮒","鯊","鰐" ;問題の数だけ用意しておくこと
count=0 ;問題の番号(鮑=0,鰯=1...)
ok=0 ;正解数
no=0 ;不正解数(ここでは使っていない)
*Question
if count=Que :goto *exit ;問題が終わるとExitへ飛ばす
sdim msg
color 255,255,255 :boxf :clrobj :color 0,0,0
title "第"+int(count+1)+"問"
font "MS ゴシック",20,0 :pos 5,5
mes "この文字はなんと読む?"
font "MS ゴシック",100,1 :pos 5,25
mes word.count ;問題の漢字を表示
font "MS ゴシック",20,1 :objmode 2
pos 5,125 :input msg,100,25,10
font "MS UI GOTHIC",15,0 :objmode 2 :objsize 100,25
pos 107,125 :button "答え合わせ(&A)",*Answer
stop
*Answer
objenable 0,0 :objenable 1,0 ;正解が出たあとに書けないようにする
if msg=""+GetReverseConversion(word.count) { ;書いた文字と照合
font "MS ゴシック",18,1 :color 255 :pos 5,150 :mes "正解"
ok++
} else {
font "MS ゴシック",18,1 :color 0,0,255 :pos 5,150 :mes "不正解"
pos 5,170 :mes "正解は「"+GetReverseConversion(word.count)+"」でした。";不正解の場合は正解を表示
no++
}
font "MS UI GOTHIC",15,0 :objmode 2 :objsize 100,25
count++
pos 5,190 :button "次の問題(&N)",*Question
stop
*Exit
color 255,255,255 :boxf :color
clrobj
font "MS ゴシック",18,1 :pos 5,5
mes "あなたの正解率"
font "MS ゴシック",40,1 :pos 5,25
mes ""+Que+"問中"+ok+"問"
font "MS ゴシック",20,1 :pos 5,70
;正解数によってコメントをつける
if ok=10 :mes "素晴らしい!"
if (ok>=7)and(ok<=9) :mes "良く頑張りました!"
if (ok>=4)and(ok<=6) :mes "頑張りました!"
if (ok>=1)and(ok<=3) :mes "まあまあでしょう!"
if ok=0 :mes "頑張りましょう!"
stop