Microsoft Small Basic

Program Listing: SLX082
w = GraphicsWindow.Width
h = GraphicsWindow.Height
SignalSize = w / 10 * 3
SelectSignal = 1

GraphicsWindow.Hide()
GraphicsWindow.PenColor = "block"
GraphicsWindow.PenWidth = 3
GraphicsWindow.BrushColor = "blue"
b = Shapes.AddEllipse(SignalSize, SignalSize)
GraphicsWindow.BrushColor = "yellow"
y = Shapes.AddEllipse(SignalSize, SignalSize)
GraphicsWindow.BrushColor = "red"
r = Shapes.AddEllipse(SignalSize, SignalSize)

SignalY = (h / 2) - (SignalSize / 2)

SignalX = w / 100 * 4
Shapes.Move(b, SignalX, SignalY)

SignalX = w / 100 * 35
Shapes.Move(y, SignalX, SignalY)

SignalX = w / 100 * 66
Shapes.Move(r, SignalX, SignalY)

OnSignal()
GraphicsWindow.Show()

Timer.Tick = OnSignal
Timer.Interval = 1000

Sub OnSignal
Shapes.SetOpacity(b, 30)
Shapes.SetOpacity(y, 30)
Shapes.SetOpacity(r, 30)

If SelectSignal = 1 Then
Shapes.SetOpacity(b, 100)
EndIf

If SelectSignal = 2 Then
Shapes.SetOpacity(y, 100)
EndIf

If SelectSignal = 3 Then
Shapes.SetOpacity(r, 100)
EndIf

SelectSignal = SelectSignal + 1

If (SelectSignal > 3) Then
SelectSignal = 1
EndIf
EndSub