[VBのVER]:visual basis 6.0
この度、心理学実験でプログラミングをすることになったのですが、初心者の初の段階にも達していない状態で、困っています。以前にも書き込ませて頂いて、色々と調べて考えてみたのですが、完全に行き詰ってしまいました・・・
どなたか助けて下さい!!!!
大まかに言うと、大体以下のようなレイアウトで考えています。
「ピクチャーボックス1つ、コマンドボタン2つ(スタート・ストップ)、テキストボックス・タイマー1つ」を配置して、スタートを押すと、
ピクチャーボックスに5色(白・黄・緑・青・赤)のいずれかで、四角形が描かれ、同時にタイマー起動。
ストップでタイマーがストップし、ピクチャーボックスが空になる。
各色四角形は必ず1回ずつで、しかも最後に、テキストボックスに、各回の反応時間呈示」というプログラムにしたいのですが・・・。
で、画像はなく、できればpicture.line〜で書きたい!
初心者にはキツイ・・・。 プログラム例を教えてください。お願いしますm(_ _)m
いまの所、こんな感じで書いてます。ただ、これだと、何回スタートを押しても、同じ色の四角が出てしまうんです。。。
できれば、プログラムの間違いを指摘して頂きたいのですが、
全く新しいプログラム例でも構わないので、宜しくお願いします。
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Option Explicit
Dim starttime As Long, stoptime As Long, rt As Long, num As Integer, trial(10) As Integer
Private Sub RndOrder(n As Integer, order() As Integer)
Dim i As Integer, x As Integer, dummy As Integer
For i = 1 To n
order(i) = i
Next i
For i = 1 To n - 1
x = Int((n + 1 - i) * Rnd) + i
dummy = order(x)
order(x) = order(i)
order(i) = dummy
Next i
End Sub
Private Sub shiko(a As Integer, b As Integer, c As Integer)
Picture1.Line (1000, 1000)-(2000, 2000), RGB(a, b, c), BF
End Sub
Private Sub Command2_Click()
stoptime = timeGetTime
rt = stoptime - starttime
Text1.Text = Str(rt)
Picture1.Cls
num = num + 1
End Sub
Private Sub command1_click()
starttime = timeGetTime
num = 1
Select Case Int(trial(num) Mod 10)
Case 0
shiko 0, 0, 0
Case 1
shiko 0, 0, 255
Case 2
shiko 255, 255, 255
Case 3
shiko 255, 255, 0
Case 4
shiko 0, 255, 0
Case 5
shiko 255, 0, 0
Case 6
shiko 255, 0, 255
Case 7
shiko 247, 148, 29
Case 8
shiko 161, 29, 33
Case 9
shiko 136, 39, 27
End Select
End Sub
Private Sub Form_Load()
Picture1.Cls
Randomize
RndOrder 10, trial()
End Sub
Trialって関数自体でてきてないんですが。。。
select case のところあたりでデバッグすべきです。
Trialっていう関数があったとしても、
num=1となっているし。これでは固定されてしまってます。
修正したのを下に書いておくので参考までに。
ウォッチ式などで変数をおいかけたり
デバッグでブレークポイントでとまりながら変数を確認したりしてください。
-------------------------------------------------
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Option Explicit
Dim starttime As Long, stoptime As Long, rt As Long, num As Integer, trial(10) As Integer
'Private Sub RndOrder(n As Integer, order() As Integer)'いらないとお思います。
'Dim i As Integer, x As Integer, dummy As Integer
'For i = 1 To n
'order(i) = i
'Next i
'For i = 1 To n - 1
'x = Int((n + 1 - i) * Rnd) + i
'dummy = order(x)
'order(x) = order(i)
'order(i) = dummy
'Next i
'End Sub
Private Sub shiko(a As Integer, b As Integer, c As Integer)
Picture1.Line (1000, 1000)-(2000, 2000), RGB(a, b, c), BF
End Sub
Private Sub Command2_Click()
stoptime = timeGetTime
rt = stoptime - starttime
Text1.Text = CStr(rt / 1000) & "秒" 'CSTRでないと0.がけずれるので変更してみました。
Picture1.Cls
num = num + 1
End Sub
Private Sub command1_click()
starttime = timeGetTime
'num = 1 '毎回初期化されてるのではずす
Randomize timeGetTime
Select Case CStr(Int(Rnd * 9) + 1)
Case 0
shiko 0, 0, 0
Case 1
shiko 0, 0, 255
Case 2
shiko 255, 255, 255
Case 3
shiko 255, 255, 0
Case 4
shiko 0, 255, 0
Case 5
shiko 255, 0, 0
Case 6
shiko 255, 0, 255
Case 7
shiko 247, 148, 29
Case 8
shiko 161, 29, 33
Case 9
shiko 136, 39, 27
End Select
End Sub
Private Sub Form_Load()
Picture1.Cls
Randomize
'RndOrder 10, trial()
num = 1 'ここれnumの初期値
End Sub
プログラムを勉強する前にマナーを勉強しましょう
http://www7.big.or.jp/~pinball/discus/vb/61705.html
ツイート | ![]() |