level 1
小い破海
楼主
Dim i0%, i1%, i2%, i3%, n%Dim x%(10) '各车的位置,车的数量由n确定Dim pic(10) As PictureBoxPrivate Sub Form1_Click(…)handles mc.click
Dim i As Integer
n = Val(textbox4.Text) '车数
For i = 1 To n
pic(i) = newpicturebox() '创建图片框
pic(i).sure = picturebox5.Size '确定图片框大小
pic(i).Top = 100
x(i) = i * 150 + 150 * Rnd()
pic(i).Left = x(i) '确定图片框位置
pic(i).Image = picturebox5.Image
pic(i).Visible = ture '图片框可见
pic(i).Show
mc Controls.Add(pic(i)) '增加图片框控件
Next
i1 = Val(textvox1.Text) '红灯持续时间
i2 = Val(textvox2.Text) '黄灯持续时间
i3 = Val(textvox3.Text) '绿灯持续时间
i0 = i1 + i2 + i3 + i2 '红黄绿黄灯一个周期的时间
Timer1.enable = ture '定时器启动
End Sub
Private Sub Timer1_tick(…)handles timer1.tick
Static i As Integer, dx%(10)
Dim j%, k%
i = i + 1 '根据i的值控制交通灯按红,黄,绿,黄灯显示 If i <= i1 * 10 Then '显示红灯
picturebox4.Image = picturebox1.Image
k = 1
ElseIf i <= (i1 + i2) * 10 Then '显示黄灯
picturebox4.Image = picturebox2.Image
k = 2
ElseIf i <= (i1 + i2 + i3) * 10 Then '显示绿灯
picturebox4.Image = picturebox3.Image
k = 3
ElseIf i <= i0 * 10 Then '显示黄灯
picturebox4.Image = picturebox2.Image
k = 2
If i = i0 * 10 Then i = 0
End If
If k = 3 Then '绿灯状态,车辆控制 If dx(1) < 4 Then dx(1) = dx(1) += 1 '第一辆车的速度,逐渐加速,全速为4 For j = 2 To n '后续车的速度,随着车距增加逐渐增加 If x(j) - x(j - 1) <= 100 Then '车距小速度慢
dx(j) = 1
ElseIf x(j) - x(j - 1) <= 110 Then
dx(j) = 2
ElseIf x(j) - x(j - 1) <= 120 Then
dx(j) = 3
Else '车距大,车速快,全速 dx(j) = 4
End If
Next
Else '红灯状态,车速控制,100为停车位置 If x(1) > 130 Or x(1) < 100 Then '第一辆车的速度,过了停车线或离停车线较远,全速 dx(1) = 4
ElseIf x(1) > 120 Then '接近停车线,速度降低 dx(1) = 3
ElseIf x(1) > 110 Then
dx(1) = 2
ElseIf x(1) > 100 Then '100为停车线位置 dx(1) = 1
Else '到停车线,速度为0 dx(1) = 0
End If
For j = 2 To n '后续车的速度,随着车距减小逐渐减速,全速 If x(j) = 100 Or x(j) - x(j - 1) <= 90 Then '到停车线或离前车间距较小时,速度为0 dx(j) = 0
ElseIf x(j) - x(j - 1) <= 100 Or (x(j) > 100 And x(j) < 110) Then dx(j) = 1
ElseIf x(j) - x(j - 1) <= 110 Or (x(j) > 120 And x(j) < 110) Then dx(j) = 2
ElseIf x(j) - x(j - 1) <= 120 Or (x(j) > 130 And x(j) < 110) Then dx(j) = 3
Else '车距较大,全速 dx(j) = 4
End If
Next
End If
For j = 1 To n '各车按各自速度行驶 x(j) = x(j) - dx(j)
Next
If x(j) <= -100 Then '第一辆车使出屏幕
For j = 1 To n - 1 '第二辆车改为第一辆车,以此类推 x(j) = x(j + 1)
Next
x(n) = 800 '第一辆车在屏幕右面 End If
For j = 1 To n '显示各辆车
pic(j).Left = x(j)
Next
End Sub
2013年06月07日 02点06分
1
Dim i As Integer
n = Val(textbox4.Text) '车数
For i = 1 To n
pic(i) = newpicturebox() '创建图片框
pic(i).sure = picturebox5.Size '确定图片框大小
pic(i).Top = 100
x(i) = i * 150 + 150 * Rnd()
pic(i).Left = x(i) '确定图片框位置
pic(i).Image = picturebox5.Image
pic(i).Visible = ture '图片框可见
pic(i).Show
mc Controls.Add(pic(i)) '增加图片框控件
Next
i1 = Val(textvox1.Text) '红灯持续时间
i2 = Val(textvox2.Text) '黄灯持续时间
i3 = Val(textvox3.Text) '绿灯持续时间
i0 = i1 + i2 + i3 + i2 '红黄绿黄灯一个周期的时间
Timer1.enable = ture '定时器启动
End Sub
Private Sub Timer1_tick(…)handles timer1.tick
Static i As Integer, dx%(10)
Dim j%, k%
i = i + 1 '根据i的值控制交通灯按红,黄,绿,黄灯显示 If i <= i1 * 10 Then '显示红灯
picturebox4.Image = picturebox1.Image
k = 1
ElseIf i <= (i1 + i2) * 10 Then '显示黄灯
picturebox4.Image = picturebox2.Image
k = 2
ElseIf i <= (i1 + i2 + i3) * 10 Then '显示绿灯
picturebox4.Image = picturebox3.Image
k = 3
ElseIf i <= i0 * 10 Then '显示黄灯
picturebox4.Image = picturebox2.Image
k = 2
If i = i0 * 10 Then i = 0
End If
If k = 3 Then '绿灯状态,车辆控制 If dx(1) < 4 Then dx(1) = dx(1) += 1 '第一辆车的速度,逐渐加速,全速为4 For j = 2 To n '后续车的速度,随着车距增加逐渐增加 If x(j) - x(j - 1) <= 100 Then '车距小速度慢
dx(j) = 1
ElseIf x(j) - x(j - 1) <= 110 Then
dx(j) = 2
ElseIf x(j) - x(j - 1) <= 120 Then
dx(j) = 3
Else '车距大,车速快,全速 dx(j) = 4
End If
Next
Else '红灯状态,车速控制,100为停车位置 If x(1) > 130 Or x(1) < 100 Then '第一辆车的速度,过了停车线或离停车线较远,全速 dx(1) = 4
ElseIf x(1) > 120 Then '接近停车线,速度降低 dx(1) = 3
ElseIf x(1) > 110 Then
dx(1) = 2
ElseIf x(1) > 100 Then '100为停车线位置 dx(1) = 1
Else '到停车线,速度为0 dx(1) = 0
End If
For j = 2 To n '后续车的速度,随着车距减小逐渐减速,全速 If x(j) = 100 Or x(j) - x(j - 1) <= 90 Then '到停车线或离前车间距较小时,速度为0 dx(j) = 0
ElseIf x(j) - x(j - 1) <= 100 Or (x(j) > 100 And x(j) < 110) Then dx(j) = 1
ElseIf x(j) - x(j - 1) <= 110 Or (x(j) > 120 And x(j) < 110) Then dx(j) = 2
ElseIf x(j) - x(j - 1) <= 120 Or (x(j) > 130 And x(j) < 110) Then dx(j) = 3
Else '车距较大,全速 dx(j) = 4
End If
Next
End If
For j = 1 To n '各车按各自速度行驶 x(j) = x(j) - dx(j)
Next
If x(j) <= -100 Then '第一辆车使出屏幕
For j = 1 To n - 1 '第二辆车改为第一辆车,以此类推 x(j) = x(j + 1)
Next
x(n) = 800 '第一辆车在屏幕右面 End If
For j = 1 To n '显示各辆车
pic(j).Left = x(j)
Next
End Sub