代码不贴了。说一下实现方法。要自己能写得出才好。
一、控件
1、示范图,直接画个图,然后加载到 Picture1 中。
2、灯。圆形,用 Shape 控件,组不组控件数组随意。
3、倒计时。用 Label 控件。
4、按钮。我这里用的是二个 Check 控件。内容:自动,手动。
另 手动中所示二个按钮,使用的是 Option 。
关闭按钮,使用的才是:Command
5、另放一个计时器(timer),Interval :1000 , Enabled :False
二、方法
1、常量:
Const TXDR = 55 '通行东西红灯时间
Const TXLR = 60 '通行南北红灯时间
Const TXH = 5 '通行黄灯时间
2、变量,一个计时用的变量,一个表示状态的变量。
状态的变量可用或不用,用的话,可以节省CPU处理时间。
3、响应事件。
自动,手动,需要响应事件。我的代码主要写在计时器里,所以 这个响应事件很简单。
程序代码:
Private Sub Check1_Click() '点击自动
If Check1.Value = 1 Then '如果自动开
Check2.Value = 0 '手动关
DoEvents '等待手动关响应执行完
TXjs = 0
Timer1.Enabled = True '开定时器
Else '否则
Timer1.Enabled = False '关定时器
End If
End Sub
Private Sub Check2_Click() '点击手动
If Check2.Value = 1 Then '如果手动关
Check1.Value = 0 '自动关
DoEvents '等待自动关响应执行完
TXjs = 0
Timer1.Enabled = True '开定时器
Else '否则
Timer1.Enabled = False '关定时器
End If
End Sub
4、定时器里。
首先,计时,每1秒,自加1
当 计时的结果超过一个周期,置 0
对 计时结果进行 多分支选择。
Select Case TXjs
Case Is < TXDR '东西红
Case Is < TXDR + TXH '东西黄
Case Is < TXDR + TXH + TXLR '南北红
Case Is < TXDR + TXH + TXLR + TXH '南北红
Case Else
TXjs = 0
End Select
每个分支中,单独对四个灯和四个倒计时分别指定。
手动部分,没什么,判断一下,然后直接指定,不解释了。
程序代码:
If Check2.Value = 1 Then
If Option1.Value = True Then
Shape1(0).FillColor = vbRed
Shape1(1).FillColor = vbRed
Shape1(2).FillColor = vbGreen
Shape1(3).FillColor = vbGreen
'Label1(0).ForeColor = vbRed
'Label1(1).ForeColor = vbRed
'Label1(2).ForeColor = vbGreen
'Label1(3).ForeColor = vbGreen
Label4.Caption = "南北:绿"
Label5.Caption = "东西:红"
DoEvents
Else
Shape1(0).FillColor = vbGreen
Shape1(1).FillColor = vbGreen
Shape1(2).FillColor = vbRed
Shape1(3).FillColor = vbRed
'Label1(0).ForeColor = vbGreen
'Label1(1).ForeColor = vbGreen
'Label1(2).ForeColor = vbRed
'Label1(3).ForeColor = vbRed
Label4.Caption = "南北:红"
Label5.Caption = "东西:绿"
DoEvents
End If
Label1(0).Caption = "∞"
Label1(1).Caption = "∞"
Label1(2).Caption = "∞"
Label1(3).Caption = "∞"
End If
等你实在是想不出时再贴代码吧。