HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0627
せっちゃん漢字の読みを答えさせるプログラム7未解決


せっちゃん

リンク

2012/6/27(Wed) 10:59:55|NO.47392

某番組みたいな、漢字の読みを答えさせるプログラムをつくりたいのですが、どうやったらよいかわかりません。



この記事に返信する


(´ω`)

リンク

2012/6/27(Wed) 14:53:51|NO.47396

せっちゃん様のプログラミングレベルがどの程度なのかがさっぱりわかりません!(u´ω`)
というわけで、超初心者だという前提で。

 ・配列変数の使い方を覚えましょう。
  配列変数には、問題で出す漢字と、その答えの組み合わせを入れておきます。

 ・rndおよびrandomizeという関数を使えば、乱数が取得できます。
  逆に、これを使わないといつも同じ問題が同じ順番で出ることに。

 ・ウィンドウ上の文字やオブジェクトの表示位置の指定はpos命令を。

 ・答えを入力させる最も簡単な方法は、入力ボックスと「正解?」ボタンを
  配置すること。

 ・制限時間を実装する最も手軽な方法は、wait命令を使うこと。


あとはヘルプや、ヘルプ内にあるサンプルを見ながらがんばってください。(´ω`)



cats

リンク

2012/6/29(Fri) 18:36:40|NO.47430

暇だったので少しつくってみました。

#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



MillkeyWeler

リンク

2012/6/30(Sat) 05:39:52|NO.47432

catsさんの回答に指摘して申し訳ないんですが、確か「ImmGetConversionList」って環境依存で
OS によって使用できなかったような・・・



cats

リンク

2012/6/30(Sat) 13:26:44|NO.47435

>OS によって使用できなかったような・・・
確かに自分の環境では「す」が上手く変換されてません;

あと参考に
http://fs-cgi-basic01.freespace.jp/~hsp/ver3/hsp3.cgi?print+200512/05120015.txt



MillkeyWeler

リンク

2012/7/17(Tue) 07:25:46|NO.47747

いまさらなんだけど、うちのPCの過去に作成したスクリプト(自分で作った覚えがないが)の中に、あったわ。
モジュールスクリプトだけで悪いんだが、たぶん使えると思う。


#module mod_JPRevConv #uselib "oleaut32.dll" #cfunc SysAllocString "SysAllocString" wptr #func SysFreeString "SysFreeString" int #cfunc SysStringLen "SysStringLen" int #define IID_IFELanguage "{019F7152-E6DB-11D0-83C3-00C04FDDB82E}" #define CLSID_MSIME "{019F7150-E6DB-11d0-83C3-00C04FDDB82E}" #usecom IFELanguage@mod_JPRevConv IID_IFELanguage CLSID_MSIME #comfunc FELang_Open 3 #comfunc FELang_Close 4 #comfunc FELang_GetPhonetic 7 int, int, int, var #deffunc init@mod_JPRevConv newcom pFEL, IFELanguage FELang_Open pFEL return #deffunc deinit@mod_JPRevConv onexit FELang_Close pFEL pFEL = 0 return #defcfunc JPRevConv str string inBstr = SysAllocString(string) FELang_GetPhonetic pFEL, inBstr, 1, -1, outBstr dupptr outWstr, outBstr, SysStringLen(outBstr)*2+2, 2 ret = cnvwtos(outWstr) SysFreeString inBstr SysFreeString outBstr return ret #global init@mod_JPRevConv #module #defcfunc GetReverseConversion str prm word=JPRevConv(prm) return word #global a="東京特許許可局" b=GetReverseConversion(a) mes ""+a mes ""+b



MillkeyWeler

リンク

2012/7/17(Tue) 07:43:00|NO.47748

上記スクリプトの元情報があったので、情報提供者のURLを載せておきます。

上記スクリプトモジュール提供元 -
つーさ★くーかん さん。
http://tu3.jp/0561



つーさ

リンク

2012/8/4(Sat) 04:55:28|NO.48101

mod_JPRevConv作者です。

リンク先のスクリプトは修正済みですが、
IFELanguageとして利用可能なMSIME.JapanのCLSIDが変わった都合で、
mod_JPRevConvはWindows 8にて動作しません。

新しくcomを生成している部分、

#deffunc init@mod_JPRevConv newcom pFEL, IFELanguage
を、CLSIDではなくProgIDを使って、

#deffunc init@mod_JPRevConv newcom pIME, "MSIME.Japan" querycom pFEL, pIME, IFELanguage
という感じにしてやるとよいです。ご参考まで。



ONION software Copyright 1997-2018(c) All rights reserved.