No.3ベストアンサー
- 回答日時:
では簡単な例を説明してみます。
フォームのkeypressのイベントでどのキーが押されたかは分かります。
押された回数をカウントすれば基本的にタイプ数は分かります。
"例えば"は(tatoeba)で問題ないのですが"ふ"の場合(hu/fu)でもいいですし"だった"は(datta/daltuta/daxtuta)でもいいのですよね。これがローマ字入力の判定の難しさだと思います。
"例えば"のチェックルーチン(めっちゃいい加減版)エンターキーは不要と判断しました。
なお、bが文字を打った回数。cが文字数という事で参考にして下さい。
Dim wk(5) As String
Dim a As Integer
Dim b As Integer
Dim c As Integer
Private Sub Form_KeyPress(KeyAscii As Integer)
Dim chk As String
chk = LCase(Chr(KeyAscii))
If Mid(wk(0), a, 1) = chk Then
a = a + 1
End If
b = b + 1
If a > c Then
MsgBox "ok"
End If
End Sub
Private Sub Form_Load()
wk(0) = "tatoeba"
a = 1
b = 0
c = Len(wk(0))
End Sub
さっそくありがとうございます。
しかもプログラム付で・・・。
プログラムはある程度は理解しているものの
初めてみる関数ばかりで、苦戦中です。
しばらくこの参考プログラムを先生に聞いて理解してみます。
また、新たに質問させてもらうと思いますが
その時はよろしくお願いします。
No.2
- 回答日時:
質問の意味をいまいち理解してませんが・・・
判定を行うタイミングが、このソフトの鍵となると思います。
複数行あろうとなかろうと一緒です。
複数行ある文章もようは改行コード(定数:vbCrlf)を含んだ一行と置き換えることができます。
簡単な比較ロジックは
1.テキストボックスのChangeイベントを認識
2.入力文字と入力文字数を得る
3.正解例の頭からその文字数文を得る
4.それらを比較
です。
しかし、文章の入力を終えてからの判定は並大抵ではありません。
一度判定ロジックを組んだ経験があるのですが、結局かなりの駄作になってしまいました。
例えば、余計な文字が1文字入ったら、どうするのかというだけで様々なパターンが想像つきます。
それ以外に2行目と3行目が入れ違いになっていた場合にも、複数の処理に分かれます。
これらを全て兼ね備えたプログラムは、人工知能開発ぐらいのレベルになると思います。。。
ですので、あまり入力し終えてからの判定はお奨めできません。
一度、市販されてるタイピングソフトではなく、フリーでダウンロードできるタイピングのソフトを見て研究してみては?
はずしてたなら、ごめんなさい。
参考URL:http://www.vector.co.jp/vpack/pickup/win/edu/com …
回答ありがとうございます。
私たちが作成しようとしているソフトは下記のyanmaaさんのお礼に記した通りです。
判定のタイミングとしてはローマ字、1文字ずつ判定させるつもりでいます。
表示は1行をローマ字で表示させて、先頭から順にタイピングです。
一致していればその文字が消え、次の文字のタイプという感じです。
その際、1行終わるまでにタイプした数と誤った入力をカウントさせたいのです。
とりあえず、教えていただいたURLでDLしてみて研究してみます。
また、よろしくお願いします。
No.1
- 回答日時:
プログラムを作るのが卒業研究なら基本的なプログラミング技能を有していると判断します。
例えば
そこで
みなさんに
お聞き
したいのですが
というタイピングを出題するとして
どのようにキータイプさせ、どのような判定を下すのでしょうか?
OKなら次の行、違うなら元の行ですね。
後は自分で考えて何処までやって何処が分からないのか説明してからにしてね。
回答をありがとうございます。
yanmaaさんの言われるプログラム技能は有しています。
私たちが作っているタイピングプログラムは
例えば
そこで
みなさんに
お聞き
したいのですが
の5行で例えると
1.『例えば』を日本語表示とローマ字表示する。
例 例えば
tatoeba
2.「t」からタイプ開始 → Enterキーを押すと1行終了
その際、先頭の文字とキーボードからタイピングした文字が同じなら同時にローマ字を一文字ずつ消していく。
なおかつ、Enterキーを押すまでに「タイプした数」と「誤った数」をカウントする。
3.これを5回繰り返す。
というのを考えています。
こういうプログラムをVBで作成するのは可能でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
gas 全角数字を半角数字に変換
-
「終了していない文字列型の定...
-
正整数の半角数字かどうか判定する
-
JavaScriptでフォームの入力項...
-
Access VBAで、数字だけをチェ...
-
ハイフンだけ置換したい。
-
JavaScriptの正規表現の全角ス...
-
VC#でテキストボックスに変数の...
-
JavaScriptで ブラウザの閉じる...
-
contenteditableで編集した内容...
-
PDFフォームで条件つき金額を表...
-
csvファイルを読み込み、該当項...
-
GoTo文とかSelect文の処理の仕...
-
ローカルのレジストリを読みたい
-
Excel vba 配列内の最大値を求...
-
javascriptで「オブジェクトを...
-
JSPの処理の途中で、JavaScript...
-
「戻る」ボタン使用時のフォー...
-
VBScriptでのforms[0]など配列...
-
フォームバリデーションする際...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NET2003 テキストボックスに...
-
gas 全角数字を半角数字に変換
-
VBAによる第3、4水準文字の判定...
-
「終了していない文字列型の定...
-
正整数の半角数字かどうか判定する
-
エクセルVBA/ Formatで文字列が...
-
VC#でテキストボックスに変数の...
-
Excel VBA カタカナ セル判定...
-
JavaScriptでこの正規表現を利...
-
禁止文字チェック
-
エクセル 半角英数6文字以上 ...
-
正規表現について
-
C#でTextBoxに数値のみ入力可能...
-
Visual Basic 6.0 のテキストボ...
-
javascript 文字列の最後から1...
-
Vba SelStart、SelLen教えてく...
-
Javascript 全角カナ+半角スペ...
-
文字数の制限について
-
漢字などを正規表現でパターン...
-
”吴”とはなんですか?
おすすめ情報