文字をスクロールさせたタイピング
☆文字列操作を覚える
■フォームにラベルを1つ貼り付ける。↓
■フォーム上でマウスをダブルクリックしコードを表示する。
■コードを書き換える。↓
Dim moji As String
Private Sub Form_Load()
'Label1.Captionに"ABCDE"を代入する
Label1.Caption = "ABCDE"
End Sub
(解説)緑字はコメントで実行プログラムでは無視される。よって書いても書かなくても良い。これから各行の説明はその行の上にコメントとして書く。
■開始ボタンを押してプログラムを実行する。↓
(解説)Label1.CaptionにABCDEが代入された。
■コードを書き換える。↓
'変数mojiを宣言する。As の後のStringとは文字専用ということを意味している
Dim moji As String
Private Sub Form_Load()
'変数mojiに"ABCDE"を代入
moji = "ABCDE"
'変数mojiの左から1番目の文字を1文字抜き出し、Label1.Captionに代入
Label1.Caption = Mid(moji, 1, 1)
End Sub
(解説)3行目と5行目の変数mojiは自分で決めた名前なので他の名前でも結果は同じ。名前を変えて確かめよう
(解説)下から2番目のコードに注目。Midとは文字列操作の関数。
■開始ボタンを押しプログラムを実行する。↓
(解説)変数mojiの”ABCDE”の左から1番目の文字を1文字取り出した
■復習してみる。↓
下から2行目をLabel1.Caption=Mid(moji, 2, 3)に変えてみると、結果はBCDと表示される。
(解説)変数mojiの右から2番目から3文字抜き出しLabel1.Captionに代入された。
■コードを書き換える。↓
'プログラムの外で宣言することによってどこからでも参照できる。
Dim qmoji As String
Private Sub Form_Load()
'変数qmojiに"ABCDE"を代入
qmoji = "ABCDE"
Label1.Caption = qmoji
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'押したキーを表示
Label2.Caption = Chr(KeyCode)
'次に打つべき文字を変数nexttypeに代入(ここではAが代入)
nexttype = Mid(qmoji, 1, 1)
'もし打った文字と打つべき文字が同じとき
If Chr(KeyCode) = nexttype Then
'正解を表示
Label2.Caption = "正解"
End If
End Sub
■開始ボタンを押しプログラムを実行する。↓
(解説)Aを押すと正解と表示される。その他を押すとそのキーが表示される。図はAを押したところ。
■コードを書き換える。↓
'プログラムの外で宣言することによってどこからでも参照できる
Dim qmoji As String
Dim amoji As String
'Integerとは整数系ということを示す
Dim bangou As Integer
Private Sub Form_Load()
qmoji = "ABCDE"
Label1.Caption = qmoji
'次に打つ文字が変数qmojiの右から何番目かを変数bangouに代入。最初は1番目なので1を代入
bangou = 1
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'変数qmojiのbangou番目を1文字抜き出し代入
nexttype = Mid(qmoji, bangou, 1)
'もし打った文字と打つべき文字が同じとき
If Chr(KeyCode) = nexttype Then
'変数amojiに打ったキーを付け足してく
amoji = amoji + Chr(KeyCode)
'変数amojiを表示
Label2.Caption = amoji
'変数bangouに1を足す
bangou = bangou + 1
End If
End Sub
(解説)qmojiとは今から打つ文字列でamojiとは打った文字を入れます。ここで使われている変数はqmoji,amoji,bangou,nexttype,です。これらは全て名前を変えても良い。
■開始ボタンを押しプログラムを実行する。↓
(解説)打った文字が正解なら下に表示される。図ではABCと打ったところ。
∵ダウンロード file1.zip
☆打ち終ったらランダムに単語を入れ替える
■コードを書き換える。↓
'どこからでも参照できるように必要な変数を宣言させる
Dim qmoji As String
Dim amoji As String
Dim bangou As Integer
Dim qmoji1 As String
Dim qmoji2 As String
Dim nexttype As String
Private Sub Form_Load()
'乱数初期化
Randomize
qmoji1 = "ABCDE"
qmoji2 = "FGHIJ"
'初期化を呼び出す
Call prinew
'ワードをランダムに選ぶ
Call prirnd
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'変数qmojiのbangou番目を1文字抜き出し代入
nexttype = Mid(qmoji, bangou, 1)
'もし打った文字と打つべき文字が同じとき
If Chr(KeyCode) = nexttype Then
'正解サブルーチンを呼び出す(自分定義のサブルーチン、名前はなんでもOK)
Call priseikai
End If
End Sub
'初期化
Private Sub prinew()
bangou = 1
Label2.Caption = ""
amoji = ""
End Sub
'ワードをランダムに代入
Private Sub prirnd()
'乱数1と2を発生させ1なら変数qmojiに変数qmoji1を代入し、2なら変数qmoji2を代入
If (Int(Rnd(1) * 2) + 1) = 1 Then qmoji = qmoji1 Else qmoji = qmoji2
Label1.Caption = qmoji
End Sub
'正解サブルーチン(正解の時はここを呼び出す)
Private Sub priseikai()
'変数amojiに打ったキーを付け足していく
amoji = amoji + nexttype
'変数amojiを表示
Label2.Caption = amoji
'変数bangouに1を足す
bangou = bangou + 1
'もし打ち終わったら
If bangou = 6 Then
'初期化を呼び出す
Call prinew
'ワードをランダムに選ぶ
Call prirnd
End If
End Sub
■開始ボタンを押しプログラムを実行する。
(解説)打ち終わったらランダムに「ABCDE」と「FGHIJ」が表示される。
∵ダウンロード file2.zip
☆変数を配列変数に変える
■コードを書き換える。
'配列変数を宣言。qmoji(0)からqmoji(3)までの4つの変数を使用可能になる
Dim qmoji(3) As String
Dim amoji As String
Dim bangou As Integer
Dim nexttype As String
'乱数を入れる変数を宣言
Dim ransuu As Integer
Private Sub Form_Load()
'乱数初期化
Randomize
'配列変数に文字を代入
qmoji(0) = "TIGERS"
qmoji(1) = "HELL"
qmoji(2) = "CUP"
qmoji(3) = "NIGHT"
'初期化を呼び出す
Call prinew
'ワードをランダムに選ぶ
Call prirnd
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'配列変数qmojiのbangou番目を1文字抜き出し代入。変数ransuuには0~3までの乱数が入っている。
nexttype = Mid(qmoji(ransuu), bangou, 1)
'もし打った文字と打つべき文字が同じとき
If Chr(KeyCode) = nexttype Then
'正解サブルーチンを呼び出す(自分定義のサブルーチン、名前はなんでもOK)
Call priseikai
End If
End Sub
'初期化サブルーチン
Private Sub prinew()
bangou = 1
Label2.Caption = ""
amoji = ""
End Sub
'ワードをランダムに代入
Private Sub prirnd()
ransuu = Int(Rnd(1) * 4)
Label1.Caption = qmoji(ransuu)
End Sub
'正解サブルーチン(正解の時はここを呼び出す)
Private Sub priseikai()
'変数amojiに打ったキーを付け足していく
amoji = amoji + nexttype
'変数amojiを表示
Label2.Caption = amoji
'変数bangouに1を足す
bangou = bangou + 1
'もし打ち終わったら(配列変数qmojiの文字の長さを超えたとき。Lenは文字の長さを示す。Len("HELLO")なら5
If bangou = Len(qmoji(ransuu)) + 1 Then
'初期化を呼び出す
Call prinew
'ワードをランダムに選ぶ
Call prirnd
End If
End Sub
(解説)2、12、23行目の配列変数に注目。計算などはサブルーチンに移動させForm_LoadやForm_KeyDownなどには出来るだけCallで呼び出すようにする。
(解説)下から7行目の関数Lenにも注目。
■開始ボタンを押しプログラムを実行する。
(解説)プログラム結果は前回と変わらない。英単語(HELLOなど)が表示され、打ち終わると次の文字列が表示される
∵ダウンロード file3.zip
☆スクロール式のタイピングを作成
■
'配列変数を宣言。qmoji(0)からqmoji(3)までの4つの変数を使用可能になる
Dim qmoji(3) As String
Dim amoji As String
Dim bangou As Integer
Dim nexttype As String
'乱数を入れる変数を宣言
Dim ransuu As Integer
Private Sub Form_Load()
'乱数初期化
Randomize
'配列変数に文字を代入
qmoji(0) = "TIGERS"
qmoji(1) = "HELL"
qmoji(2) = "CUP"
qmoji(3) = "NIGHT"
'初期化を呼び出す
Call prinew
'ワードをランダムに選ぶ
Call prirnd
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'配列変数qmojiのbangou番目を1文字抜き出し代入。変数ransuuには0~3までの乱数が入っている。
nexttype = Mid(qmoji(ransuu), bangou, 1)
'もし打った文字と打つべき文字が同じとき
If Chr(KeyCode) = nexttype Then
'正解サブルーチンを呼び出す(自分定義のサブルーチン、名前はなんでもOK)
Call priseikai
End If
End Sub
'初期化サブルーチン
Private Sub prinew()
bangou = 1
Label2.Caption = ""
amoji = ""
End Sub
'ワードをランダムに代入
Private Sub prirnd()
ransuu = Int(Rnd(1) * 4)
Label1.Caption = qmoji(ransuu)
End Sub
'正解サブルーチン(正解の時はここを呼び出す)
Private Sub priseikai()
bangou = bangou + 1
'配列変数qmojiの右から(bangou)番目の文字から最後の文字数まで抜き取る
amoji = Mid(qmoji(ransuu), bangou, Len(qmoji(ransuu)) - (bangou -
1))
Label2.Caption = amoji
'もし打ち終わったら(配列変数qmojiの文字の長さを超えたとき、Lenは文字の長さを示す。Len("HELLO")なら5
If bangou = Len(qmoji(ransuu)) + 1 Then
'初期化を呼び出す
Call prinew
'ワードをランダムに選ぶ
Call prirnd
End If
End Sub
■開始ボタンを押しプログラムを実行する。
(解説)上がこれから打つ文字列で下がスクロールしている文字列。図では次に打つ文字は「E」
∵ダウンロード file4.zip