タイトル | : Timerだとうまくいかないんです!! |
記事No | : 11366 |
投稿日 | : 2008/02/08(Fri) 22:48 |
投稿者 | : NAS |
Loopでやると、結果がうまくいくのですが、 全く同じことをリアルタイムで追いたいので、タイマーを使いたいんですが、 うまくいかないので教えてください! やりたいことは、温度勾配を作って、適温を27度にします。 基本はランダムウォークなんですが、27度に向かっているときは、 方向変換をしないようにして、遠ざかったら方向変換するというものです。 プログラムを下に載せます。 タイマーのところを、Do While j<=1000→j=j+1 Loop に変えると、 理想的な結果になります。タイマーにすると、ただのランダムウォークになります。 長くて、申し訳ないのですが、何かヒントがあれば教えてください!!
Private Sub Timer1_Timer()
Dim i As Single Static T1 As Single Static T2 As Single Static T As Single Static X As Single Static X0 As Single Static Y0 As Single Static Y As Single Static j As Long Static N As Single Dim Z As Single Dim w As Single w = 30 If i = 0 Then Z = Rnd
If Z <= 0.25 Then Line (X, Y)-(X + w, Y), QBColor(15) X0 = X + w End If If Z > 0.25 And Z <= 0.5 Then Line (X, Y)-(X - w, Y), QBColor(15) X0 = X - w End If If Z > 0.5 And Z <= 0.75 Then Line (X, Y)-(X, Y + w), QBColor(15) Y0 = Y + w End If If Z > 0.75 Then Line (X, Y)-(X, Y - w), QBColor(15) Y0 = Y - w End If
End If If i > 0 Then
If Abs(T1 - T) - Abs(T2 - T) > 0 Then
Z = N
If Z <= 0.25 Then Line (X, Y)-(X + w, Y), QBColor(15) X0 = X + w End If If Z > 0.25 And Z <= 0.5 Then Line (X, Y)-(X - w, Y), QBColor(15) X0 = X - w End If If Z > 0.5 And Z <= 0.75 Then Line (X, Y)-(X, Y + w), QBColor(15) Y0 = Y + w End If If Z > 0.75 Then Line (X, Y)-(X, Y - w), QBColor(15) Y0 = Y - w End If End If If Abs(T1 - T) - Abs(T2 - T) <= 0 Then
Z = Rnd If Z <= 0.25 Then Line (X, Y)-(X + w, Y), QBColor(15) X0 = X + w End If If Z > 0.25 And Z <= 0.5 Then Line (X, Y)-(X - w, Y), QBColor(15) X0 = X - w End If If Z > 0.5 And Z <= 0.75 Then Line (X, Y)-(X, Y + w), QBColor(15) Y0 = Y + w End If If Z > 0.75 Then Line (X, Y)-(X, Y - w), QBColor(15) Y0 = Y - w End If End If
End If
N = Z T = 27 T1 = 5 / 2400 * X + 25 T2 = 5 / 2400 * X0 + 25 X = X0 Y = Y0
i = i + 1
End Sub
Private Sub Form_Click()
Dim T1 As Single Dim A As Single Dim B As Single
For A = -2400 To 2400 Step 10 For B = -1800 To 1800 Step 10
T1 = 5 / 2400 * A + 25 Select Case T1 Case Is >= 30 PSet (A, B), RGB(100, 0, 0) Case Is >= 29 PSet (A, B), RGB(200, 0, 0) Case Is >= 28 PSet (A, B), RGB(255, 0, 0) Case Is >= 27 PSet (A, B), RGB(255, 100, 0) Case Is >= 26 PSet (A, B), RGB(255, 200, 0) Case Is >= 25 PSet (A, B), RGB(255, 255, 0) Case Is >= 24 PSet (A, B), RGB(200, 255, 0) Case Is >= 23 PSet (A, B), RGB(0, 200, 255) Case Is >= 22 PSet (A, B), RGB(0, 0, 200) Case Is >= 21 PSet (A, B), RGB(0, 0, 100) Case Is >= 20 PSet (A, B), RGB(0, 0, 50) End Select
Next B Next A
DrawWidth = 3
Line (2400, -1800)-(2400, 1800), QBColor(0) Line (2400, 1800)-(-2400, 1800), QBColor(0)
Line (2400, -1800)-(-2400, -1800), QBColor(0) Line (-2400, -1800)-(-2400, 1800), QBColor(0)
Line (-2400, 0)-(2400, 0), QBColor(0) Line (0, 1800)-(0, -1800), QBColor(0)
End Sub
|